URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.dg/] [opt/] [pr47615.C] - Rev 693
Compare with Previous | Blame | View Log
// { dg-do compile }// { dg-options "-O -fstrict-aliasing -ftree-pre -fno-tree-fre -fno-tree-sra" }typedef __SIZE_TYPE__ size_t;namespace std{template < class _T1, class > struct pair{_T1 first;};}namespace __gnu_cxx{template < typename _Tp > class new_allocator{public:typedef size_t size_type;typedef _Tp * pointer;typedef _Tp const_pointer;typedef _Tp & reference;typedef const _Tp & const_reference;template < typename _Tp1 > struct rebind{typedef new_allocator < _Tp1 > other;};};}namespace std{template < typename _Tp > class allocator:public __gnu_cxx::new_allocator < _Tp >{};template < typename, typename, typename > struct binary_function;template < typename _Tp > struct less:binary_function < _Tp, _Tp, bool >{};}namespace __gnu_cxx{namespace typelist{struct null_type;template < typename Root > struct node{typedef Root root;};template < typename, typename > struct chain;namespace detail{template < typename, int >struct chain_at_index_;template<typenameHd, typename Tl > struct chain_at_index_ <chain < Hd, Tl >, 0 >{typedef Hd type;};template<typenameHd, typename Tl, int i > struct chain_at_index_ <chain < Hd, Tl >, i >{typedef typename chain_at_index_ < Tl, i - 1 >::type type;};}template < typename Typelist, int i > struct at_index{typedef typename Typelist::root root_type;typedef detail::chain_at_index_ < root_type, i > index_type;typedef typename index_type::type type;};template < typename T1, typename T2 > struct create2{typedef node < chain < T1, chain < T2, null_type > > >type;};}}namespace std{namespace tr1{template < typename _Tp, _Tp __v > struct integral_constant{static const _Tp value = __v;};typedef integral_constant < bool, false > false_type;template < typename, typename > struct is_same:false_type{};}}using std::tr1::is_same;namespace __gnu_pbds{struct null_mapped_type;struct rb_tree_tag;namespace detail{template < typename, typename, typename > struct basic_tree_policy_base;template<typenameConst_Node_Iterator,typenameAllocator>structbasic_tree_policy_base<Const_Node_Iterator, Const_Node_Iterator, Allocator >{};}template< typename, typename, typename, typename > struct null_tree_node_update;template < typename Const_Node_Iterator, typename Node_Iterator, typename, typename Allocator > class tree_order_statistics_node_update:detail::basic_tree_policy_base< Const_Node_Iterator, Node_Iterator, Allocator >{public:typedef Allocator allocator_type;typedef typename allocator_type::size_type size_type;typedef size_type metadata_type;typedef Const_Node_Iterator const_node_iterator;typedef Node_Iterator node_iterator;typedeftypenameallocator_type::templaterebind < metadata_type >::other::reference metadata_reference;void operator () (node_iterator, const_node_iterator) const;};template<typenameConst_Node_Iterator,classNode_Iterator,classCmp_Fn,classAllocator>inlinevoidtree_order_statistics_node_update<Const_Node_Iterator,Node_Iterator,Cmp_Fn,Allocator>::operator() (node_iterator node_it, const_node_iterator end_nd_it) const{node_iterator l_child_it;size_typel_rank = (l_child_it == end_nd_it) ? : l_child_it.get_metadata ();node_iterator r_child_it = node_it.get_r_child ();size_typer_rank = (r_child_it == end_nd_it) ? : r_child_it.get_metadata ();const_cast< metadata_reference > (node_it.get_metadata ()) = l_rank + r_rank;}namespace{template < typename, typename, typename, bool > struct value_type_base;template<typenameKey,typenameAllocator> struct value_type_base <Key, null_mapped_type, Allocator, false >{typedef Key value_type;typedeftypenameAllocator::template rebind < value_type >::other value_type_allocator;typedef typename value_type_allocator::pointer pointer;typedef typename value_type_allocator::const_pointer const_pointer;typedef typename value_type_allocator::reference reference;typedef typename value_type_allocator::const_reference const_reference;};template<typenameKey,typenameMapped, typename Alloc, bool Store_Extra > struct vt_base_selector{typedef value_type_base < Key, Mapped, Alloc, Store_Extra > type;};template<typenameKey,typenameMapped,typenameAlloc,boolStore_Extra>structtypes_traits:vt_base_selector < Key, Mapped, Alloc, Store_Extra >::type{};template < typename, class, class > struct dumconst_node_iterator;template<typenameKey,typenameMapped,class,classNode_And_It_Traits, class Allocator > class bin_search_tree_no_data_{protected:typedeftypenameAllocator::templaterebind< typename Node_And_It_Traits::node >::other::pointer node_pointer;typedeftypenametypes_traits< Key, Mapped, Allocator, false >::const_reference const_reference;typedef typename Node_And_It_Traits::point_iterator point_iterator;typedef typename Node_And_It_Traits::node_update node_update;void rotate_right (node_pointer);template<typenameNode_Update_ > void apply_update (node_pointer, Node_Update_ *);};template<typenameKey,typenameMapped,classCmp_Fn,classNode_And_It_Traits,classAllocator>voidbin_search_tree_no_data_<Key,Mapped,Cmp_Fn, Node_And_It_Traits, Allocator >::rotate_right (node_pointer p_x){node_pointer p_y = p_x->m_p_parent;p_y->m_p_right = p_x;apply_update (p_x, this);apply_update (p_x->m_p_parent, (node_update *) this);}template<typenameKey,typenameMapped,classCmp_Fn,classNode_And_It_Traits,classAllocator>template<typenameNode_Update_>voidbin_search_tree_no_data_<Key,Mapped,Cmp_Fn,Node_And_It_Traits,Allocator >::apply_update (node_pointer p_nd, Node_Update_ *){node_update ()((p_nd), ((0)));}}namespace detail{template < typename Key, typename Mapped, typename Cmp_Fn, typename Node_And_It_Traits, typename Allocator > class rb_tree_no_data_:bin_search_tree_no_data_< Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator >{typedefbin_search_tree_no_data_< Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator > base_type;typedef typename base_type::node_pointer node_pointer;public:typedef typename base_type::const_reference const_reference;typedef typename base_type::point_iterator point_iterator;std::pair < point_iterator, bool > insert (const_reference);void insert_fixup (node_pointer);};template<typenameKey,typenameMapped,typenameCmp_Fn,typenameNode_And_It_Traits,typenameAllocator>std::pair<typenamerb_tree_no_data_<Key,Mapped,Cmp_Fn,Node_And_It_Traits,Allocator>::point_iterator,bool>rb_tree_no_data_<Key,Mapped,Cmp_Fn, Node_And_It_Traits, Allocator >::insert (const_reference){std::pair < point_iterator, bool > ins_pair;{insert_fixup (ins_pair.first.m_p_nd);}}template<typenameKey,typenameMapped,typenameCmp_Fn,typenameNode_And_It_Traits,typenameAllocator>voidrb_tree_no_data_<Key,Mapped,Cmp_Fn,Node_And_It_Traits, Allocator >::insert_fixup (node_pointer p_nd){{{{this->rotate_right (p_nd);}}}}template<typename,typename, typename, typename, typename > struct container_base_dispatch;template<typenameKey,typenamePolicy_Tl,typenameAlloc>structcontainer_base_dispatch<Key, null_mapped_type, rb_tree_tag, Policy_Tl, Alloc >{typedef __gnu_cxx::typelist::at_index < Policy_Tl, 0 > at0;typedef typename at0::type at0t;typedef __gnu_cxx::typelist::at_index < Policy_Tl, 1 > at1;typedef typename at1::type at1t;typedefrb_tree_no_data_ < Key, null_mapped_type, at0t, at1t, Alloc > type;};template<typenameNode_Pointer,typename,typename,typename,typename, typename, bool, class > class bin_search_tree_const_it_{public:Node_Pointer m_p_nd;};template<typenameNode,classConst_Iterator,class Iterator, class Allocator > class bin_search_tree_const_node_it_{typedeftypenameAllocator::template rebind < Node >::other::pointer node_pointer;public:typedef typename Node::metadata_type metadata_type;typedeftypenameAllocator::templaterebind< metadata_type >::other::const_reference const_metadata_reference;bin_search_tree_const_node_it_ (node_pointer p_nd):m_p_nd ((p_nd)){}const_metadata_reference get_metadata (){return (m_p_nd->get_metadata ());}bin_search_tree_const_node_it_ (){}bin_search_tree_const_node_it_< Node, Const_Iterator, Iterator, Allocator > get_r_child (){return ((m_p_nd->m_p_right));}bool operator == (bin_search_tree_const_node_it_){}node_pointer m_p_nd;};template<typename,typename,class,template<typename,class,class, class > class, class, class > struct bin_search_tree_traits;template<typenameKey,classCmp_Fn,template<typename,class,class,class>classNode_Update,classNode,classAllocator>structbin_search_tree_traits<Key, null_mapped_type, Cmp_Fn, Node_Update, Node, Allocator >{typedeftypes_traits < Key, null_mapped_type, Allocator, false > type_traits;typedef Node node;typedefbin_search_tree_const_it_<typenameAllocator::templaterebind<node>::other::pointer,typenametype_traits::value_type,typenametype_traits::pointer,typenametype_traits::const_pointer,typenametype_traits::reference,typenametype_traits::const_reference, true, Allocator > const_point_iterator;typedef const_point_iterator point_iterator;typedefbin_search_tree_const_node_it_<Node,const_point_iterator, point_iterator, Allocator > const_node_iterator;typedef const_node_iterator node_iterator;typedefNode_Update< const_node_iterator, node_iterator, Cmp_Fn, Allocator > node_update;};template < typename Node_Update, bool > struct tree_metadata_helper{typedef typename Node_Update::metadata_type type;};template<typenameKey,typenameData,classCmp_Fn,template<typename,class,class,class>class Node_Update, class Allocator > struct tree_node_metadata_selector{typedefdumconst_node_iterator < Key, Data, Allocator > dumconst_node_it;enum{null_update = is_same < Node_Update < dumconst_node_it,dumconst_node_it,Cmp_Fn,Allocator >,null_tree_node_update < dumconst_node_it,dumconst_node_it,Cmp_Fn,Allocator > >::value};typedeftypenametree_metadata_helper<Node_Update<dumconst_node_it,dumconst_node_it, Cmp_Fn, Allocator >, null_update >::type type;};template<typename,typename,class,template<typename,class, class, class > class, class, class > struct tree_traits;template < typename Value_Type, class Metadata, class Allocator > struct rb_tree_node_{typedef Metadata metadata_type;typedeftypenameAllocator::templaterebind<rb_tree_node_< Value_Type, Metadata, Allocator > >::other::pointer node_pointer;typedeftypenameAllocator::templaterebind < metadata_type >::other::reference metadata_reference;metadata_reference get_metadata (){return m_metadata;}node_pointer m_p_right;node_pointer m_p_parent;metadata_type m_metadata;};template<typenameKey,typenameMapped,typenameCmp_Fn,template<typename,class,class,class>classNode_Update,typenameAllocator>structtree_traits<Key,Mapped,Cmp_Fn,Node_Update,rb_tree_tag,Allocator>:bin_search_tree_traits<Key,Mapped,Cmp_Fn,Node_Update,rb_tree_node_<typenametypes_traits<Key,Mapped,Allocator,false>::value_type,typenametree_node_metadata_selector<Key,Mapped, Cmp_Fn, Node_Update, Allocator >::type, Allocator >, Allocator >{};}template < typename Key, typename Mapped, typename Tag, typename Policy_Tl, typename Allocator > class container_base:publicdetail::container_base_dispatch< Key, Mapped, Tag, Policy_Tl, Allocator >::type{};template < typename Key, typename Mapped, typename Tag, typename, typename Policy_Tl, typename Allocator > class basic_tree:publiccontainer_base < Key, Mapped, Tag, Policy_Tl, Allocator >{};template<typenameKey,typenameMapped,typenameCmp_Fn=std::less<Key>,typenameTag=rb_tree_tag,template<typename,typename,typename,typename>classNode_Update=null_tree_node_update,typenameAllocator=std::allocator<char> >classtree:publicbasic_tree<Key,Mapped,Tag,detail::tree_traits<Key,Mapped,Cmp_Fn,Node_Update,Tag,Allocator>,typename__gnu_cxx::typelist::create2<Cmp_Fn,detail::tree_traits< Key, Mapped, Cmp_Fn, Node_Update, Tag, Allocator > >::type, Allocator >{};}using namespace std;using namespace __gnu_pbds;typedeftree<int,null_mapped_type,less < int >, rb_tree_tag, tree_order_statistics_node_update > set_t;main (){set_t s;s.insert (12);}
