annotate gcc/testsuite/g++.dg/tree-ssa/pr22444.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // PR tree-optimization/22444
kono
parents:
diff changeset
2 // When creating SFT's, we shouldn't add the original variable
kono
parents:
diff changeset
3 // to the addressable vars list, because this may cause false aliasing
kono
parents:
diff changeset
4 // with the subvars leading to the subvars not being renamed when they should
kono
parents:
diff changeset
5 // { dg-do compile }
kono
parents:
diff changeset
6 // { dg-options "-O2" }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
7 // { dg-additional-options "-Wno-return-type" }
111
kono
parents:
diff changeset
8 __extension__ typedef __PTRDIFF_TYPE__ ptrdiff_t;
kono
parents:
diff changeset
9 __extension__ typedef __SIZE_TYPE__ size_t;
kono
parents:
diff changeset
10 namespace std
kono
parents:
diff changeset
11 {
kono
parents:
diff changeset
12 template<class _T1, class _T2> struct pair
kono
parents:
diff changeset
13 {
kono
parents:
diff changeset
14 _T1 first;
kono
parents:
diff changeset
15 _T2 second;
kono
parents:
diff changeset
16 pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) { }
kono
parents:
diff changeset
17 };
kono
parents:
diff changeset
18 }
kono
parents:
diff changeset
19 namespace __gnu_internal
kono
parents:
diff changeset
20 {
kono
parents:
diff changeset
21 typedef char __one;
kono
parents:
diff changeset
22 template<typename _Tp> __one __test_type(int _Tp::*);
kono
parents:
diff changeset
23 }
kono
parents:
diff changeset
24 namespace std
kono
parents:
diff changeset
25 {
kono
parents:
diff changeset
26 template<typename _Tp> struct ___is_pod
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 enum { __value = (sizeof(__gnu_internal::__test_type<_Tp>(0))!= sizeof(__gnu_internal::__one)) };
kono
parents:
diff changeset
29 };
kono
parents:
diff changeset
30 template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t, typename _Pointer = _Tp*, typename _Reference = _Tp&> struct iterator
kono
parents:
diff changeset
31 { };
kono
parents:
diff changeset
32 template<typename _Iterator> struct iterator_traits
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 typedef typename _Iterator::difference_type difference_type;
kono
parents:
diff changeset
35 };
kono
parents:
diff changeset
36 template<typename _Iterator> class reverse_iterator : public iterator<typename iterator_traits<_Iterator>::iterator_category, typename iterator_traits<_Iterator>::value_type, typename iterator_traits<_Iterator>::difference_type, typename iterator_traits<_Iterator>::pointer, typename iterator_traits<_Iterator>::reference>
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 typedef _Iterator iterator_type;
kono
parents:
diff changeset
39 typedef typename iterator_traits<_Iterator>::difference_type difference_type;
kono
parents:
diff changeset
40 typedef typename iterator_traits<_Iterator>::reference reference;
kono
parents:
diff changeset
41 reverse_iterator operator+(difference_type __n) const {}
kono
parents:
diff changeset
42 reverse_iterator& operator+=(difference_type __n) { }
kono
parents:
diff changeset
43 reference operator[](difference_type __n) const { }
kono
parents:
diff changeset
44 };
kono
parents:
diff changeset
45 }
kono
parents:
diff changeset
46 namespace __gnu_cxx
kono
parents:
diff changeset
47 {
kono
parents:
diff changeset
48 template<bool _Thread> class __pool;
kono
parents:
diff changeset
49 template<template <bool> class _PoolTp, bool _Thread> struct __common_pool_policy;
kono
parents:
diff changeset
50 template<typename _Tp> class __mt_alloc_base
kono
parents:
diff changeset
51 {
kono
parents:
diff changeset
52 typedef ptrdiff_t difference_type;
kono
parents:
diff changeset
53 typedef _Tp* pointer;
kono
parents:
diff changeset
54 };
kono
parents:
diff changeset
55 template<typename _Tp, typename _Poolp = __common_pool_policy<__pool, true> > class __mt_alloc : public __mt_alloc_base<_Tp>
kono
parents:
diff changeset
56 {
kono
parents:
diff changeset
57 typedef size_t size_type;
kono
parents:
diff changeset
58 };
kono
parents:
diff changeset
59 }
kono
parents:
diff changeset
60 namespace std
kono
parents:
diff changeset
61 {
kono
parents:
diff changeset
62 template<typename _Tp> struct allocator:public __gnu_cxx::__mt_alloc<_Tp>
kono
parents:
diff changeset
63 {
kono
parents:
diff changeset
64 template<typename _Tp1> struct rebind
kono
parents:
diff changeset
65 {
kono
parents:
diff changeset
66 typedef allocator<_Tp1> other;
kono
parents:
diff changeset
67 };
kono
parents:
diff changeset
68 };
kono
parents:
diff changeset
69 template <class _Arg, class _Result> struct unary_function { };
kono
parents:
diff changeset
70 template <class _Arg1, class _Arg2, class _Result> struct binary_function
kono
parents:
diff changeset
71 {
kono
parents:
diff changeset
72 typedef _Arg2 second_argument_type;
kono
parents:
diff changeset
73 };
kono
parents:
diff changeset
74 template <class _Tp> struct less : public binary_function<_Tp, _Tp, bool>
kono
parents:
diff changeset
75 {
kono
parents:
diff changeset
76 bool operator()(const _Tp& __x, const _Tp& __y) const { }
kono
parents:
diff changeset
77 };
kono
parents:
diff changeset
78 template <class _Tp> struct _Identity : public unary_function<_Tp,_Tp> { };
kono
parents:
diff changeset
79 struct _Rb_tree_node_base
kono
parents:
diff changeset
80 {
kono
parents:
diff changeset
81 typedef _Rb_tree_node_base* _Base_ptr;
kono
parents:
diff changeset
82 typedef const _Rb_tree_node_base* _Const_Base_ptr;
kono
parents:
diff changeset
83 _Base_ptr _M_right;
kono
parents:
diff changeset
84 static _Base_ptr _S_minimum(_Base_ptr __x) { }
kono
parents:
diff changeset
85 static _Base_ptr _S_maximum(_Base_ptr __x) { }
kono
parents:
diff changeset
86 };
kono
parents:
diff changeset
87 template<typename _Val> struct _Rb_tree_node { };
kono
parents:
diff changeset
88 template<typename _Tp> struct _Rb_tree_iterator
kono
parents:
diff changeset
89 {
kono
parents:
diff changeset
90 typedef _Tp* pointer;
kono
parents:
diff changeset
91 typedef _Rb_tree_iterator<_Tp> _Self;
kono
parents:
diff changeset
92 typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
kono
parents:
diff changeset
93 pointer operator->() const { }
kono
parents:
diff changeset
94 _Self operator++(int) { }
kono
parents:
diff changeset
95 _Base_ptr _M_node;
kono
parents:
diff changeset
96 };
kono
parents:
diff changeset
97 template<typename _Tp> struct _Rb_tree_const_iterator
kono
parents:
diff changeset
98 {
kono
parents:
diff changeset
99 typedef const _Tp* pointer;
kono
parents:
diff changeset
100 typedef _Rb_tree_iterator<_Tp> iterator;
kono
parents:
diff changeset
101 typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;
kono
parents:
diff changeset
102 _Rb_tree_const_iterator(const iterator& __it) : _M_node(__it._M_node) { }
kono
parents:
diff changeset
103 _Base_ptr _M_node;
kono
parents:
diff changeset
104 };
kono
parents:
diff changeset
105 template<typename _Key, typename _Val, typename _KeyOfValue, typename _Compare, typename _Alloc = allocator<_Val> > struct _Rb_tree
kono
parents:
diff changeset
106 {
kono
parents:
diff changeset
107 typedef typename _Alloc::template rebind<std::_Rb_tree_node<_Val> >::other _Node_allocator;
kono
parents:
diff changeset
108 typedef _Rb_tree_node_base* _Base_ptr;
kono
parents:
diff changeset
109 typedef const _Rb_tree_node_base* _Const_Base_ptr;
kono
parents:
diff changeset
110 typedef std::_Rb_tree_node<_Val> _Rb_tree_node;
kono
parents:
diff changeset
111 typedef _Key key_type;
kono
parents:
diff changeset
112 typedef _Val value_type;
kono
parents:
diff changeset
113 typedef value_type* pointer;
kono
parents:
diff changeset
114 typedef _Rb_tree_node* _Link_type;
kono
parents:
diff changeset
115 template<typename _Key_compare, bool _Is_pod_comparator = std::___is_pod<_Key_compare>::__value> struct _Rb_tree_impl
kono
parents:
diff changeset
116 : _Node_allocator
kono
parents:
diff changeset
117 {
kono
parents:
diff changeset
118 _Rb_tree_node_base _M_header;
kono
parents:
diff changeset
119 };
kono
parents:
diff changeset
120 _Rb_tree_impl<_Compare> _M_impl;
kono
parents:
diff changeset
121 typedef _Rb_tree_iterator<value_type> iterator;
kono
parents:
diff changeset
122 typedef _Rb_tree_const_iterator<value_type> const_iterator;
kono
parents:
diff changeset
123 typedef std::reverse_iterator<iterator> reverse_iterator;
kono
parents:
diff changeset
124 pair<iterator,bool> insert_unique(const value_type& __x);
kono
parents:
diff changeset
125 };
kono
parents:
diff changeset
126 template<class _Key, class _Compare, class _Alloc> class set
kono
parents:
diff changeset
127 {
kono
parents:
diff changeset
128 typedef _Key key_type;
kono
parents:
diff changeset
129 typedef _Key value_type;
kono
parents:
diff changeset
130 typedef _Compare key_compare;
kono
parents:
diff changeset
131 typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type;
kono
parents:
diff changeset
132 typedef _Rb_tree<_Key, value_type, _Identity<value_type>, key_compare, _Key_alloc_type> _Rep_type;
kono
parents:
diff changeset
133 _Rep_type _M_t;
kono
parents:
diff changeset
134 typedef typename _Rep_type::const_iterator iterator;
kono
parents:
diff changeset
135 std::pair<iterator,bool> insert(const value_type& __x)
kono
parents:
diff changeset
136 {
kono
parents:
diff changeset
137 std::pair<typename _Rep_type::iterator, bool> __p = _M_t.insert_unique(__x);
kono
parents:
diff changeset
138 return std::pair<iterator, bool>(__p.first, __p.second);
kono
parents:
diff changeset
139 }
kono
parents:
diff changeset
140 };
kono
parents:
diff changeset
141 }
kono
parents:
diff changeset
142 template class std::set<int, std::less<int>, std::allocator<char> >;