------- Additional Comments From pinskia at gcc dot gnu dot org 2005-05-06 13:39 ------- (In reply to comment #3) > Can someone explain what is expected here? I get the following .optimized
This is what it should look like instead: main () { int lsm_tmp.1; int D.1572; int D.1571; int i.0; <L8>:; lsm_tmp.1 = i; goto <bb 2> (<L10>); <L9>:; goto <L9>; <L10>:; switch (lsm_tmp.1) { case 0 ... 1: goto <L1>; case 2 ... 3: goto <L13>; case 5: goto <L5>; default : goto <L9>; } <L1>:; i = lsm_tmp.1; D.1571 = 1; goto <bb 6> (<L7>); <L5>:; lsm_tmp.1 = 4; goto <bb 1> (<L9>); <L13>:; i = lsm_tmp.1; D.1571 = 0; <L7>:; return D.1571; } So we should get an infinite loop for L9 because there is no way lsm_tmp.1 can change. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20514