blob: e31a3f4b1d9288b2d2d758d583e982f6c60428d1 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O2 -fstrict-enums -fno-rtti -fno-exceptions -fno-strict-aliasing -fdump-tree-vrp2" } */
extern void JS_Assert();
typedef enum {
eax, ecx, edx, ebx, esp, ebp,
esi, edi }
RegisterID;
union StateRemat {
RegisterID reg_;
int offset_;
};
static StateRemat FromRegister(RegisterID reg) {
StateRemat sr;
sr.reg_ = reg;
return sr;
}
static StateRemat FromAddress3(int address) {
StateRemat sr;
sr.offset_ = address;
//sr.offset_ = 0;
if (address < 46 && address >= 0) {
JS_Assert();
}
return sr;
}
struct FrameState {
StateRemat dataRematInfo2(bool y, int z) {
if (y) return FromRegister(RegisterID(1));
return FromAddress3(z);
}
};
FrameState frame;
StateRemat x;
void jsop_setelem(bool y, int z) {
x = frame.dataRematInfo2(y, z);
}
/* { dg-final { scan-tree-dump-times "Folding predicate.*45" 0 "vrp2"} } */