re PR middle-end/71732 (FAIL: gcc.dg/torture/pr71532.c at -O2 and above)

PR middle-end/71732
	* cselib.c (cselib_process_insn): Invalidate argument slots for
	const/pure calls.

From-SVN: r238727
This commit is contained in:
John David Anglin 2016-07-25 17:32:44 +00:00
parent 7d575fffd2
commit 007b405bbf
2 changed files with 13 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2016-07-25 John David Anglin <danglin@gcc.gnu.org>
PR middle-end/71732
* cselib.c (cselib_process_insn): Invalidate argument slots for
const/pure calls.
2016-07-25 Jiong Wang <jiong.wang@arm.com>
* config/aarch64/arm_neon.h (vfmah_lane_f16, vfmah_laneq_f16,

View File

@ -2659,6 +2659,13 @@ cselib_process_insn (rtx_insn *insn)
if (RTL_LOOPING_CONST_OR_PURE_CALL_P (insn)
|| !(RTL_CONST_OR_PURE_CALL_P (insn)))
cselib_invalidate_mem (callmem);
else
/* For const/pure calls, invalidate any argument slots because
they are owned by the callee. */
for (x = CALL_INSN_FUNCTION_USAGE (insn); x; x = XEXP (x, 1))
if (GET_CODE (XEXP (x, 0)) == USE
&& MEM_P (XEXP (XEXP (x, 0), 0)))
cselib_invalidate_mem (XEXP (XEXP (x, 0), 0));
}
cselib_record_sets (insn);