------- Additional Comments From dpatel at apple dot com 2004-11-18 02:26 ------- After I update tree-level if-conversion to force gimple operands appropriately, rewrite_out_of_ssa() is converting following ...
bar() { _Bool _ifc_.3; _Bool _ifc_.2; _Bool D.1339; _Bool D.1336; _Bool D.1337; _Bool D.1338; _Bool _ifc_.1; unsigned int ivtmp.0; int k; int j; int i; # BLOCK 0 # PRED: ENTRY [100.0%] (fallthru,exec) k_21 = j_6 != 0 ? 2 : 0; k_5 = j_6 == 0 ? k_21 : 2; if (k_5 != 0) goto <L5>; else goto <L6>; # SUCC: 1 [46.5%] (true,exec) 2 [53.5%] (false,exec) # BLOCK 1 # PRED: 0 [46.5%] (true,exec) <L5>:; # .GLOBAL_VAR_10 = V_MAY_DEF <.GLOBAL_VAR_9>; foo () [tail call]; # SUCC: 2 [100.0%] (fallthru,exec) # BLOCK 2 # PRED: 0 [53.5%] (false,exec) 1 [100.0%] (fallthru,exec) <L6>:; return; # SUCC: EXIT [100.0%] } into ... bar () { int k.17; _Bool _ifc_.3; _Bool _ifc_.2; _Bool D.1339; _Bool D.1336; _Bool D.1337; _Bool D.1338; _Bool _ifc_.1; unsigned int ivtmp.0; int k; int j; int i; # BLOCK 0 # PRED: ENTRY [100.0%] (fallthru,exec) if ((j == 0 ? j != 0 ? 2 : 0 : 2) != 0) goto <L5>; else goto <L6>; # SUCC: 1 [46.5%] (true,exec) 2 [53.5%] (false,exec) # BLOCK 1 # PRED: 0 [46.5%] (true,exec) <L5>:; # .GLOBAL_VAR_10 = V_MAY_DEF <.GLOBAL_VAR_9>; foo () [tail call]; # SUCC: 2 [100.0%] (fallthru,exec) # BLOCK 2 # PRED: 0 [53.5%] (false,exec) 1 [100.0%] (fallthru,exec) <L6>:; return; # SUCC: EXIT [100.0%] } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18308