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)6 void *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