1 /* PR middle-end/100574 - ICE: in size_remaining, at builtins.c:413 with 2 -O3 -ftracer -fno-tree-dominator-opts -fno-tree-fre 3 { dg-do compile { target c++11 } } 4 { dg-options "-O3 -ftracer -fno-tree-dominator-opts -fno-tree-fre" } */ 5 new(__SIZE_TYPE__,void * __p)6void *operator new (__SIZE_TYPE__, void *__p) { return __p; } 7 8 template <typename> struct allocator_traits; 9 template <typename> class allocator {}; 10 template <typename _Tp> struct allocator_traits<allocator<_Tp> > 11 { 12 using allocator_type = allocator<_Tp>; 13 using pointer = _Tp *; 14 using size_type = long; 15 template <typename _Up> using rebind_alloc = allocator<_Up>; 16 static pointer allocate(allocator_type, size_type); 17 template <typename _Up> static void construct(_Up __p) { new (__p) _Up(); } 18 }; 19 20 struct __alloc_traits : allocator_traits<allocator<char>> { 21 struct rebind { 22 typedef rebind_alloc<char> other; 23 }; 24 }; 25 26 struct _Vector_base { 27 struct : __alloc_traits::rebind::other { 28 } _M_impl; 29 long _M_allocate___n; 30 }; 31 32 template <typename, typename = char> class vector : _Vector_base { 33 long max_size(); 34 public: 35 void push_back() { _M_realloc_insert(); } 36 template <typename...> void _M_realloc_insert(); 37 }; 38 39 template <typename _Tp, typename _Alloc> 40 template <typename...> 41 void vector<_Tp, _Alloc>::_M_realloc_insert() { 42 __alloc_traits::pointer __trans_tmp_5; 43 long __len(__len || max_size()), __elems_before; 44 __trans_tmp_5 = _M_allocate___n 45 ? __alloc_traits::allocate(_M_impl, _M_allocate___n) 46 : __alloc_traits::pointer(); 47 __alloc_traits::construct(__trans_tmp_5 + __elems_before); 48 } 49 50 enum { MIDIST_PITCHBEND }; 51 struct DataBlock { 52 vector<char> data; 53 }; 54 55 char ReadTrackChunk_status; 56 57 void ReadTrackChunk() 58 { 59 DataBlock block; 60 while (!0) 61 switch (ReadTrackChunk_status) 62 case MIDIST_PITCHBEND: 63 block.data.push_back(); 64 } 65