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. */ ...