aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcse.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>2001-07-16 10:54:34 -0700
committerRichard Henderson <rth@gcc.gnu.org>2001-07-16 10:54:34 -0700
commit4e2db58460e396ff0a66e3c87f94665c2a7c1ffc (patch)
tree91f60d01900241bcf2cec0a70c51d3cdca1a9403 /gcc/gcse.c
parentfb124b992c3235992f5fc7f781266d5708d3a215 (diff)
downloadgcc-4e2db58460e396ff0a66e3c87f94665c2a7c1ffc.zip
gcc-4e2db58460e396ff0a66e3c87f94665c2a7c1ffc.tar.gz
gcc-4e2db58460e396ff0a66e3c87f94665c2a7c1ffc.tar.bz2
hard-reg-set.h (regs_invalidated_by_call): Declare.
* hard-reg-set.h (regs_invalidated_by_call): Declare. * regclass.c (regs_invalidated_by_call): Move from cse.c. (init_reg_sets_1): Move initialization from cse_main. * cse.c (regs_invalidated_by_call): Move to regclass.c. (cse_main): Move its initialization also. * df.c (df_insn_refs_record): Use regs_invalidated_by_call. * flow.c (propagate_one_insn): Likewise. * gcse.c (compute_hash_table): Likewise. (compute_kill_rd, compute_store_table): Likewise. * sched-deps.c (sched_analyze_1): Likewise. From-SVN: r44053
Diffstat (limited to 'gcc/gcse.c')
-rw-r--r--gcc/gcse.c51
1 files changed, 5 insertions, 46 deletions
diff --git a/gcc/gcse.c b/gcc/gcse.c
index eecd0d8..9834a6b 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -2548,20 +2548,7 @@ compute_hash_table (set_p)
if (GET_CODE (insn) == CALL_INSN)
{
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
- if ((call_used_regs[regno]
- && regno != STACK_POINTER_REGNUM
-#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
- && regno != HARD_FRAME_POINTER_REGNUM
-#endif
-#if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM
- && ! (regno == ARG_POINTER_REGNUM && fixed_regs[regno])
-#endif
-#if !defined (PIC_OFFSET_TABLE_REG_CALL_CLOBBERED)
- && ! (regno == PIC_OFFSET_TABLE_REGNUM && flag_pic)
-#endif
-
- && regno != FRAME_POINTER_REGNUM)
- || global_regs[regno])
+ if (TEST_HARD_REG_BIT (regs_invalidated_by_call, regno))
record_last_reg_set_info (insn, regno);
if (! CONST_CALL_P (insn))
@@ -3007,23 +2994,8 @@ compute_kill_rd ()
if (GET_CODE (insn) == CALL_INSN)
{
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
- {
- if ((call_used_regs[regno]
- && regno != STACK_POINTER_REGNUM
-#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
- && regno != HARD_FRAME_POINTER_REGNUM
-#endif
-#if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM
- && ! (regno == ARG_POINTER_REGNUM
- && fixed_regs[regno])
-#endif
-#if !defined (PIC_OFFSET_TABLE_REG_CALL_CLOBBERED)
- && ! (regno == PIC_OFFSET_TABLE_REGNUM && flag_pic)
-#endif
- && regno != FRAME_POINTER_REGNUM)
- || global_regs[regno])
- handle_rd_kill_set (insn, regno, BASIC_BLOCK (bb));
- }
+ if (TEST_HARD_REG_BIT (regs_invalidated_by_call, regno))
+ handle_rd_kill_set (insn, regno, BASIC_BLOCK (bb));
}
if (GET_CODE (pat) == PARALLEL)
@@ -6553,21 +6525,8 @@ compute_store_table ()
if (GET_CODE (insn) == CALL_INSN)
{
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
- if ((call_used_regs[regno]
- && regno != STACK_POINTER_REGNUM
-#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
- && regno != HARD_FRAME_POINTER_REGNUM
-#endif
-#if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM
- && ! (regno == ARG_POINTER_REGNUM && fixed_regs[regno])
-#endif
-#if defined (PIC_OFFSET_TABLE_REGNUM) && !defined (PIC_OFFSET_TABLE_REG_CALL_CLOBBERED)
- && ! (regno == PIC_OFFSET_TABLE_REGNUM && flag_pic)
-#endif
-
- && regno != FRAME_POINTER_REGNUM)
- || global_regs[regno])
- SET_BIT (reg_set_in_block[bb], regno);
+ if (TEST_HARD_REG_BIT (regs_invalidated_by_call, regno))
+ SET_BIT (reg_set_in_block[bb], regno);
}
pat = PATTERN (insn);