// PR tree-optimization/22444 // When creating SFT's, we shouldn't add the original variable // to the addressable vars list, because this may cause false aliasing // with the subvars leading to the subvars not being renamed when they should // { dg-do compile } // { dg-options "-O2" } __extension__ typedef __PTRDIFF_TYPE__ ptrdiff_t; __extension__ typedef __SIZE_TYPE__ size_t; namespace std { template struct pair { _T1 first; _T2 second; pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) { } }; } namespace __gnu_internal { typedef char __one; template __one __test_type(int _Tp::*); } namespace std { template struct ___is_pod { enum { __value = (sizeof(__gnu_internal::__test_type<_Tp>(0))!= sizeof(__gnu_internal::__one)) }; }; template struct iterator { }; template struct iterator_traits { typedef typename _Iterator::difference_type difference_type; }; template class reverse_iterator : public 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> { typedef _Iterator iterator_type; typedef typename iterator_traits<_Iterator>::difference_type difference_type; typedef typename iterator_traits<_Iterator>::reference reference; reverse_iterator operator+(difference_type __n) const {} reverse_iterator& operator+=(difference_type __n) { } reference operator[](difference_type __n) const { } }; } namespace __gnu_cxx { template class __pool; template