From 32fce3edda831e36ee484406c39dffbe0230f257 Mon Sep 17 00:00:00 2001 From: Ben Cheng Date: Mon, 5 Aug 2013 15:18:29 -0700 Subject: [4.8] Merge GCC 4.8.1 Change-Id: Ic8a60b7563f5172440fd40788605163a0cca6e30 --- gcc-4.8/gcc/regcprop.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'gcc-4.8/gcc/regcprop.c') diff --git a/gcc-4.8/gcc/regcprop.c b/gcc-4.8/gcc/regcprop.c index 97a023fc1..896902f30 100644 --- a/gcc-4.8/gcc/regcprop.c +++ b/gcc-4.8/gcc/regcprop.c @@ -1015,6 +1015,13 @@ copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd) EXECUTE_IF_SET_IN_HARD_REG_SET (regs_invalidated_by_call, 0, regno, hrsi) if (regno < set_regno || regno >= set_regno + set_nregs) kill_value_regno (regno, 1, vd); + + /* If SET was seen in CALL_INSN_FUNCTION_USAGE, and SET_SRC + of the SET isn't in regs_invalidated_by_call hard reg set, + but instead among CLOBBERs on the CALL_INSN, we could wrongly + assume the value in it is still live. */ + if (ksvd.ignore_set_reg) + note_stores (PATTERN (insn), kill_clobbered_value, vd); } /* Notice stores. */ -- cgit v1.2.3