PR testsuite/86649
[official-gcc.git] / gcc / testsuite / g++.dg / tree-ssa / pr49911.C
blobe31a3f4b1d9288b2d2d758d583e982f6c60428d1
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fstrict-enums -fno-rtti -fno-exceptions -fno-strict-aliasing -fdump-tree-vrp2" } */
5 extern  void JS_Assert();
6 typedef enum {
7 eax,         ecx,         edx,         ebx,         esp,         ebp,
8 esi,         edi     }
9 RegisterID;
10 union StateRemat {
11   RegisterID reg_;
12   int offset_;
14 static StateRemat FromRegister(RegisterID reg) {
15   StateRemat sr;
16   sr.reg_ = reg;
17   return sr;
19 static StateRemat FromAddress3(int address) {
20   StateRemat sr;
21     sr.offset_ = address;
22   //sr.offset_ = 0;
23   if (address < 46 &&    address >= 0) {
24     JS_Assert();
25   }
26   return sr;
28 struct FrameState {
29   StateRemat dataRematInfo2(bool y, int z) {
30     if (y)         return FromRegister(RegisterID(1));
31     return FromAddress3(z);
32   }
34 FrameState frame;
35 StateRemat x;
36 void jsop_setelem(bool y, int z) {
37   x = frame.dataRematInfo2(y, z);
40 /* { dg-final { scan-tree-dump-times "Folding predicate.*45" 0 "vrp2"} } */