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:
parent
7d575fffd2
commit
007b405bbf
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue