On Thu, Feb 05, 2015 at 08:21:46AM +0100, Richard Biener wrote: > On February 4, 2015 10:20:06 PM CET, Sebastian Pop <seb...@gmail.com> wrote: > >The attached patch stops the recursion in the detection of FSM > >jump-threads at > >loop phi nodes after having visited a loop phi node. This avoids > >jump-threading > >two iterations forward that were possible due to a flip-flop operation > >that > >exchange the value of the switch control variable as illustrated in the > >testcase: > > > >do { > > c = read_from_memory; > > switch (a) { > > case 0: > > if (c == ' ') > > [...] > > else > > a = b; // flip-flop > > break; > > case 1: > > a = 0; > > b = 15; // this will jump-thread to 15 > > break; > > > > case 15: > > [...] > > } > >} while (...); > > > >The patch has passed bootstrap and regression testing on x86_64-linux. > >Ok to commit? > > But is sounds like a useful optimization?
Only if we could do it reliably. If it isn't fixable in a different way for GCC 5.0, then I think it is better to live with a possibly missed-optimization than wrong-code. Jakub