Commit 5c64181d by Richard Sandiford Committed by Richard Sandiford

Remove global call sets: loop-iv.c

Similar idea to the combine.c and gcse.c patches.

2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* loop-iv.c: Include regs.h and function-abi.h.
	(simplify_using_initial_values): Use insn_callee_abi to get the
	ABI of the call insn target.  Conservatively assume that
	partially-clobbered registers are altered.

From-SVN: r276326
parent 6c476222
2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
* loop-iv.c: Include regs.h and function-abi.h.
(simplify_using_initial_values): Use insn_callee_abi to get the
ABI of the call insn target. Conservatively assume that
partially-clobbered registers are altered.
2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
* function-abi.h (call_clobbers_in_region): Declare.
(call_clobbered_in_region_p): New function.
* function-abi.cc (call_clobbers_in_region): Likewise.
......
......@@ -62,6 +62,8 @@ along with GCC; see the file COPYING3. If not see
#include "dumpfile.h"
#include "rtl-iter.h"
#include "tree-ssa-loop-niter.h"
#include "regs.h"
#include "function-abi.h"
/* Possible return values of iv_get_reaching_def. */
......@@ -1972,8 +1974,14 @@ simplify_using_initial_values (class loop *loop, enum rtx_code op, rtx *expr)
CLEAR_REG_SET (this_altered);
note_stores (insn, mark_altered, this_altered);
if (CALL_P (insn))
/* Kill all call clobbered registers. */
IOR_REG_SET_HRS (this_altered, regs_invalidated_by_call);
{
/* Kill all registers that might be clobbered by the call.
We don't track modes of hard registers, so we need to be
conservative and assume that partial kills are full kills. */
function_abi callee_abi = insn_callee_abi (insn);
IOR_REG_SET_HRS (this_altered,
callee_abi.full_and_partial_reg_clobbers ());
}
if (suitable_set_for_replacement (insn, &dest, &src))
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment