------- Additional Comments From steven at gcc dot gnu dot org 2004-12-20 09:10 ------- After alias2, we have this statement: # NMT.24D.1619 = V_MAY_DEF <NMT.24D.1619>; # NMT.25D.1620 = V_MAY_DEF <NMT.25D.1620>; # NMT.26D.1621 = V_MAY_DEF <NMT.26D.1621>; # NMT.27D.1622 = V_MAY_DEF <NMT.27D.1622>; foo_int_int (D.1505_6, D.1506_5); but in this loop: /* Note that virtual definitions are irrelevant for computing KILLS because a V_MAY_DEF does not constitute a killing definition of the variable. However, the operand of a virtual definitions is a use of the variable, so it may cause the variable to be considered live-on-entry. */ FOR_EACH_SSA_MAYDEF_OPERAND (def_p, use_p, stmt, iter) { if (prepare_use_operand_for_rename (use_p, &uid)) { /* If we do not already have an SSA_NAME for our destination, then set the destination to the source. */ if (TREE_CODE (DEF_FROM_PTR (def_p)) != SSA_NAME) SET_DEF (def_p, USE_FROM_PTR (use_p)); set_livein_block (USE_FROM_PTR (use_p), bb); set_def_block (DEF_FROM_PTR (def_p), bb, false, false); REWRITE_THIS_STMT (stmt) = 1; } } we never return true for any of the NMTs in prepare_use_operand_for_rename, so we never mark this statement for renaming.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19080