[Bug rtl-optimization/64539] [5 regression] cprop_hardreg does not respect clobbers in C_I_F_U

vries at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jan 8 17:38:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64539

--- Comment #2 from vries at gcc dot gnu.org ---
At first glance, this seems appropriate:
...
diff --git a/gcc/regcprop.c b/gcc/regcprop.c
index 8c4f564..b42a4b7 100644
--- a/gcc/regcprop.c
+++ b/gcc/regcprop.c
@@ -801,6 +801,18 @@ copyprop_hardreg_forward_1 (basic_block bb, struct
value_data *vd)
         I wouldn't think this were true for regular insns, but
         scan_rtx treats them like that...  */
       note_stores (PATTERN (insn), kill_clobbered_value, vd);
+      if (CALL_P (insn))
+       {
+         rtx exp;
+         for (exp = CALL_INSN_FUNCTION_USAGE (insn);
+              exp;
+              exp = XEXP (exp, 1))
+           {
+             rtx x = XEXP (exp, 0);
+             if (GET_CODE (x) == CLOBBER)
+               kill_value (SET_DEST (x), vd);
+           }
+       }

       /* Kill all auto-incremented values.  */
       /* ??? REG_INC is useless, since stack pushes aren't done that way.  */
...



More information about the Gcc-bugs mailing list