------- 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
