111
|
1 // PR tree-optimization/80032
|
|
2 // { dg-do compile { target c++11 } }
|
|
3 // { dg-options "-O2" }
|
|
4 // If DCE removes too many CLOBBERs then stack usage goes through the
|
|
5 // roof as stack slots can no longer be shared.
|
|
6 // { dg-additional-options "-Wstack-usage=200" { target x86_64-*-* i?86-*-* } }
|
|
7
|
|
8 typedef unsigned a;
|
|
9 namespace test {
|
|
10 enum b { c };
|
|
11 class ADataContainer;
|
|
12 class BitMask;
|
|
13 namespace api {
|
|
14 enum DataStore { candidate };
|
|
15 }
|
|
16 using d = api::DataStore;
|
|
17 namespace db {
|
|
18 class e;
|
|
19 class f;
|
|
20 class g;
|
|
21 class ManagedObjectConst {
|
|
22 public:
|
|
23 ManagedObjectConst(const ManagedObjectConst &);
|
|
24 bool isFieldDefault(a, d) const;
|
|
25 ADataContainer &getFieldDefault(a, d) const;
|
|
26 g *h;
|
|
27 e *i;
|
|
28 f *j;
|
|
29 };
|
|
30 struct FieldInfo {
|
|
31 FieldInfo(ManagedObjectConst, a, d);
|
|
32 ManagedObjectConst k;
|
|
33 };
|
|
34 b compare(const FieldInfo &, const ADataContainer &);
|
|
35 class ManagedObject : public ManagedObjectConst {};
|
|
36 }
|
|
37 using namespace db;
|
|
38 void FN(ManagedObject &k, const BitMask &) {
|
|
39 if (!k.isFieldDefault(8, d::candidate) &&
|
|
40 !compare(FieldInfo(k, 11, d::candidate),
|
|
41 k.getFieldDefault(11, d::candidate)) == c)
|
|
42 return;
|
|
43 if (!k.isFieldDefault(8, d::candidate) &&
|
|
44 !compare(FieldInfo(k, 11, d::candidate),
|
|
45 k.getFieldDefault(11, d::candidate)) == c)
|
|
46 return;
|
|
47 if (!k.isFieldDefault(8, d::candidate) &&
|
|
48 !compare(FieldInfo(k, 11, d::candidate),
|
|
49 k.getFieldDefault(11, d::candidate)) == c)
|
|
50 return;
|
|
51 if (!k.isFieldDefault(8, d::candidate) &&
|
|
52 !compare(FieldInfo(k, 11, d::candidate),
|
|
53 k.getFieldDefault(11, d::candidate)) == c)
|
|
54 return;
|
|
55 if (!k.isFieldDefault(8, d::candidate) &&
|
|
56 !compare(FieldInfo(k, 11, d::candidate),
|
|
57 k.getFieldDefault(11, d::candidate)) == c)
|
|
58 return;
|
|
59 if (!k.isFieldDefault(8, d::candidate) &&
|
|
60 !compare(FieldInfo(k, 11, d::candidate),
|
|
61 k.getFieldDefault(11, d::candidate)) == c)
|
|
62 return;
|
|
63 if (!k.isFieldDefault(8, d::candidate) &&
|
|
64 !compare(FieldInfo(k, 11, d::candidate),
|
|
65 k.getFieldDefault(11, d::candidate)) == c)
|
|
66 return;
|
|
67 if (!k.isFieldDefault(8, d::candidate) &&
|
|
68 !compare(FieldInfo(k, 11, d::candidate),
|
|
69 k.getFieldDefault(11, d::candidate)) == c)
|
|
70 return;
|
|
71 if (!k.isFieldDefault(8, d::candidate) &&
|
|
72 !compare(FieldInfo(k, 11, d::candidate),
|
|
73 k.getFieldDefault(11, d::candidate)) == c)
|
|
74 return;
|
|
75 if (!k.isFieldDefault(8, d::candidate) &&
|
|
76 !compare(FieldInfo(k, 11, d::candidate),
|
|
77 k.getFieldDefault(11, d::candidate)) == c)
|
|
78 return;
|
|
79 if (!k.isFieldDefault(8, d::candidate) &&
|
|
80 !compare(FieldInfo(k, 11, d::candidate),
|
|
81 k.getFieldDefault(11, d::candidate)) == c)
|
|
82 return;
|
|
83 if (!k.isFieldDefault(8, d::candidate) &&
|
|
84 !compare(FieldInfo(k, 11, d::candidate),
|
|
85 k.getFieldDefault(11, d::candidate)) == c)
|
|
86 return;
|
|
87 if (!k.isFieldDefault(8, d::candidate) &&
|
|
88 !compare(FieldInfo(k, 11, d::candidate),
|
|
89 k.getFieldDefault(11, d::candidate)) == c)
|
|
90 return;
|
|
91 if (!k.isFieldDefault(8, d::candidate) &&
|
|
92 !compare(FieldInfo(k, 11, d::candidate),
|
|
93 k.getFieldDefault(11, d::candidate)) == c)
|
|
94 return;
|
|
95 if (!k.isFieldDefault(8, d::candidate) &&
|
|
96 !compare(FieldInfo(k, 11, d::candidate),
|
|
97 k.getFieldDefault(11, d::candidate)) == c)
|
|
98 return;
|
|
99 if (!k.isFieldDefault(8, d::candidate) &&
|
|
100 !compare(FieldInfo(k, 11, d::candidate),
|
|
101 k.getFieldDefault(11, d::candidate)) == c)
|
|
102 return;
|
|
103 if (!k.isFieldDefault(8, d::candidate) &&
|
|
104 !compare(FieldInfo(k, 11, d::candidate),
|
|
105 k.getFieldDefault(11, d::candidate)) == c)
|
|
106 return;
|
|
107 if (!k.isFieldDefault(8, d::candidate) &&
|
|
108 !compare(FieldInfo(k, 11, d::candidate),
|
|
109 k.getFieldDefault(11, d::candidate)) == c)
|
|
110 return;
|
|
111 if (!k.isFieldDefault(8, d::candidate) &&
|
|
112 !compare(FieldInfo(k, 11, d::candidate),
|
|
113 k.getFieldDefault(11, d::candidate)) == c)
|
|
114 return;
|
|
115 if (!k.isFieldDefault(8, d::candidate) &&
|
|
116 !compare(FieldInfo(k, 11, d::candidate),
|
|
117 k.getFieldDefault(11, d::candidate)) == c)
|
|
118 return;
|
|
119 }
|
|
120 }
|