Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.target/i386/pr92788.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
line wrap: on
line source
/* { dg-do compile } */ /* { dg-require-effective-target c++11 } */ /* { dg-options "-O3 -fnon-call-exceptions -ftracer -march=k8 -Wno-return-type" } */ template <int __v> struct integral_constant { static constexpr int value = __v; }; template <bool __v> using __bool_constant = integral_constant<__v>; template <typename _Tp, typename _Up> struct is_same : integral_constant<true> {}; template <bool, typename _Tp> using __enable_if_t = _Tp; void *operator new(__SIZE_TYPE__, void *__p) { return __p; } template <typename _Iterator, typename> class __normal_iterator { _Iterator _M_current; public: __normal_iterator(_Iterator) {} void operator++() { ++_M_current; } _Iterator base() { return _M_current; } }; template <typename _IteratorL, typename _IteratorR, typename _Container> bool operator!=(__normal_iterator<_IteratorL, _Container> __lhs, __normal_iterator<_IteratorR, _Container> __rhs) { return __lhs.base() != __rhs.base(); } template <typename _Tp> void construct_at(_Tp *__location) noexcept { new (__location) _Tp; } template <typename _Tp> void _Construct(_Tp __p) { construct_at(__p); } struct _Any_data { template <typename _Tp> _Tp _M_access(); }; enum _Manager_operation {}; template <typename> class function; class _Function_base { public: template <typename _Functor> class _Base_manager { public: static bool _M_manager(_Any_data, _Any_data __source, _Manager_operation) { _Functor(*__source._M_access<_Functor *>()); return true; } }; typedef bool (*_Manager_type)(_Any_data &, const _Any_data &, _Manager_operation); _Manager_type _M_manager; }; template <typename, typename> class _Function_handler; template <typename _Res, typename _Functor, typename... _ArgTypes> class _Function_handler<_Res(_ArgTypes...), _Functor> : _Function_base { public: static bool _M_manager(_Any_data &__dest, const _Any_data &__source, _Manager_operation __op) { _Base_manager<_Functor>::_M_manager(__dest, __source, __op); } }; template <typename _Res, typename... _ArgTypes> class function<_Res(_ArgTypes...)> : _Function_base { template <typename, typename _Tp> using _Requires = _Tp; public: template <typename _Functor, typename = _Requires<__bool_constant<!bool()>, void>, typename = _Requires<_Functor, void>> function(_Functor); }; template <typename _Res, typename... _ArgTypes> template <typename _Functor, typename, typename> function<_Res(_ArgTypes...)>::function(_Functor) { _M_manager = _Function_handler<_Res(), _Functor>::_M_manager; } template <typename _Tp> class new_allocator { public: _Tp *allocate(long) { return static_cast<_Tp *>(operator new(sizeof(_Tp))); } }; namespace std { template <typename> struct allocator_traits; template <typename _Tp> struct allocator_traits<new_allocator<_Tp>> { using allocator_type = new_allocator<_Tp>; using pointer = _Tp *; using const_pointer = _Tp *; using size_type = long; template <typename _Up> using rebind_alloc = new_allocator<_Up>; static pointer allocate(allocator_type __a, size_type __n) { return __a.allocate(__n); } static void deallocate(allocator_type, pointer, size_type); }; } template <typename _Alloc> struct __alloc_traits : std::allocator_traits<_Alloc> { template <typename _Tp> struct rebind { typedef typename std::allocator_traits<_Alloc>::template rebind_alloc<_Tp> other; }; }; namespace std { struct __uninitialized_copy { template <typename _InputIterator, typename _ForwardIterator> static _ForwardIterator __uninit_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result) { for (; __first != __last; ++__first, ++__result) _Construct(__result); return __result; } }; template <typename _InputIterator, typename _ForwardIterator> _ForwardIterator uninitialized_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result) { return __uninitialized_copy::__uninit_copy(__first, __last, __result); } template <typename _InputIterator, typename _ForwardIterator, typename _Tp> _ForwardIterator __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, _ForwardIterator __result, _Tp) { return uninitialized_copy(__first, __last, __result); } template <typename _Tp, typename _Alloc> struct _Vector_base { typedef typename __alloc_traits<_Alloc>::template rebind<_Tp>::other _Tp_alloc_type; typedef typename __alloc_traits<_Tp_alloc_type>::pointer pointer; struct _Vector_impl_data { pointer _M_start; pointer _M_finish; }; struct _Vector_impl : _Tp_alloc_type, _Vector_impl_data {}; _Tp_alloc_type _M_get_Tp_allocator(); _Vector_base(long, _Alloc) { _M_impl._M_start = _M_allocate(); _M_impl._M_finish = _M_impl._M_start; } ~_Vector_base() { _M_deallocate(_M_impl._M_start); } _Vector_impl _M_impl; long _M_allocate___n; pointer _M_allocate() { typedef __alloc_traits<_Tp_alloc_type> _Tr; return _M_allocate___n ? _Tr::allocate(_M_impl, _M_allocate___n) : pointer(); } long _M_deallocate___n; void _M_deallocate(pointer __p) { typedef __alloc_traits<_Tp_alloc_type> _Tr; if (__p) _Tr::deallocate(_M_impl, __p, _M_deallocate___n); } }; template <typename _Tp, typename _Alloc = new_allocator<_Tp>> class vector : _Vector_base<_Tp, _Alloc> { typedef _Vector_base<_Tp, _Alloc> _Base; typedef __normal_iterator< typename __alloc_traits<typename _Base::_Tp_alloc_type>::const_pointer, int> const_iterator; using _Base::_M_get_Tp_allocator; public: vector(); vector(vector &__x) : _Base(0, _M_get_Tp_allocator()) { this->_M_impl._M_finish = __uninitialized_copy_a(__x.begin(), __x.end(), this->_M_impl._M_start, 0); } const_iterator begin() noexcept { return this->_M_impl._M_start; } const_iterator end() noexcept { return this->_M_impl._M_finish; } }; template <typename _Tp> class __shared_ptr_access { public: using element_type = _Tp; element_type *operator->(); }; enum syntax_option_type : int; template <typename> using _Matcher = function<bool()>; struct _NFA { void _M_insert_matcher(_Matcher<int>); }; template <typename _TraitsT> class _Compiler { public: typedef typename _TraitsT::char_type *_IterT; _Compiler(_IterT, _IterT, const typename _TraitsT::locale_type &, syntax_option_type); template <bool> void _M_insert_character_class_matcher(); syntax_option_type _M_flags; __shared_ptr_access<_NFA> _M_nfa; _TraitsT _M_traits; }; template <typename, typename> using __enable_if_contiguous_iter = __enable_if_t<integral_constant<false>::value, __shared_ptr_access<_NFA>>; syntax_option_type __compile_nfa___flags; struct Trans_NS___cxx11_regex_traits { typedef char char_type; typedef int locale_type; struct _RegexMask { short _M_base; char _M_extended; _RegexMask() : _M_extended() {} } typedef char_class_type; }; template <typename _FwdIter> __enable_if_contiguous_iter<_FwdIter, char> __compile_nfa(_FwdIter) { auto __cfirst = nullptr; using _Cmplr = _Compiler<Trans_NS___cxx11_regex_traits>; _Cmplr(__cfirst, __cfirst, 0, __compile_nfa___flags); } class _RegexTranslatorBase { public: _RegexTranslatorBase(Trans_NS___cxx11_regex_traits); }; class _RegexTranslator : _RegexTranslatorBase { typedef _RegexTranslatorBase _Base; using _Base::_Base; }; template <typename _TraitsT, int> struct _BracketMatcher { _BracketMatcher(bool, _TraitsT __traits) : _M_translator(__traits) {} vector<typename _TraitsT::char_class_type> _M_neg_class_set; _RegexTranslator _M_translator; }; template <typename _TraitsT> _Compiler<_TraitsT>::_Compiler(_IterT __b, _IterT __e, const typename _TraitsT::locale_type &__loc, syntax_option_type) { _M_insert_character_class_matcher<false>(); _M_insert_character_class_matcher<true>(); } template <typename _TraitsT> template <bool __collate> void _Compiler<_TraitsT>::_M_insert_character_class_matcher() { _BracketMatcher<_TraitsT, __collate> __matcher(0, _M_traits); _M_nfa->_M_insert_matcher(__matcher); } class Trans_NS___cxx11_basic_regex { public: char Trans_NS___cxx11_basic_regex___last; Trans_NS___cxx11_basic_regex() : _M_automaton(__compile_nfa(Trans_NS___cxx11_basic_regex___last)) {} /* { dg-error } */ __shared_ptr_access<_NFA> _M_automaton; } regex_sanity_check___f; }