On Mon, Jan 16, 2012 at 1:12 PM, Eli Friedman <[email protected]> wrote: > On Mon, Jan 16, 2012 at 10:26 AM, jahanian <[email protected]> wrote: >> >> On Jan 16, 2012, at 10:20 AM, Eli Friedman wrote: >> >> On Mon, Jan 16, 2012 at 10:14 AM, Aaron Ballman <[email protected]> >> wrote: >> >> On Mon, Jan 16, 2012 at 11:56 AM, David Blaikie <[email protected]> wrote: >> >> >> I'll come up with some test cases to check this out tonight, and pass >> >> them along to verify I understand the concerns properly. >> >> >> Okay... I'm specifically concerned about the code generation for >> non-constant-folded-switch containing a constant-folded switch. >> >> >> Just committed a test case which seems to handle this correctly. > > Managed to come up with the testcase I was thinking of: > > #include <stdio.h> > int test(int val){ > switch (val) { > case 4: > do { > switch (6) { > case 6: do { case 5: printf("bad\n"); } while (0); > }; > } while (0); > } > return 0; > } > > int main(void) { > return test(5); > }
I just had the chance to try out this test case, and you're right, it does produce the wrong code in this instance. It emits the case 5 against the outer switch (because SwitchInsn is non-null). I'll think about ways to handle this, but if anyone has suggestions they'd like to share, I'm all ears. ~Aaron _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
