aboutsummaryrefslogtreecommitdiff
path: root/gcc/reginfo.c
diff options
context:
space:
mode:
authorJoern Rennecke <joern.rennecke@embecosm.com>2011-11-06 22:58:54 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2011-11-06 22:58:54 +0000
commit9e582b1da06d78eab05921174bdc9e7f0464c17f (patch)
tree292c99c70f3521110cea26b4cb276bbfa0bbdc77 /gcc/reginfo.c
parent57899d2fc591789a7ef0839d6e38e954a5f494e0 (diff)
downloadgcc-9e582b1da06d78eab05921174bdc9e7f0464c17f.zip
gcc-9e582b1da06d78eab05921174bdc9e7f0464c17f.tar.gz
gcc-9e582b1da06d78eab05921174bdc9e7f0464c17f.tar.bz2
regset.h (fixed_reg_set_regset): Declare.
* regset.h (fixed_reg_set_regset): Declare. * dse.c: Include regset.h . (struct insn_info): Add member fixed_regs_live. (note_add_store_info): New typedef. (note_add_store): New function. (emit_inc_dec_insn_before): Expect arg to be of type insn_info_t . Use gen_add3_insn / gen_move_insn. Check new insn for unwanted clobbers before emitting it. (check_for_inc_dec): Rename to... (check_for_inc_dec_1:) ... this. Return bool. Take insn_info parameter. Changed all callers in file. (check_for_inc_dec, copy_fixed_regs): New functions. (scan_insn): Set fixed_regs_live field of insn_info. * rtl.h (check_for_inc_dec): Update prototype. * postreload.c (reload_cse_simplify): Take new signature of check_ind_dec into account. * reginfo.c (fixed_reg_set_regset): New variable. (init_reg_sets_1): Initialize it. Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com> From-SVN: r181046
Diffstat (limited to 'gcc/reginfo.c')
-rw-r--r--gcc/reginfo.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/reginfo.c b/gcc/reginfo.c
index 5373641..e9bf65f 100644
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -1,7 +1,7 @@
/* Compute different info about registers.
Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996
1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+ 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of GCC.
@@ -94,6 +94,9 @@ static tree GTY(()) global_regs_decl[FIRST_PSEUDO_REGISTER];
in dataflow more conveniently. */
regset regs_invalidated_by_call_regset;
+/* Same information as FIXED_REG_SET but in regset form. */
+regset fixed_reg_set_regset;
+
/* The bitmap_obstack is used to hold some static variables that
should not be reset after each function is compiled. */
static bitmap_obstack persistent_obstack;
@@ -451,6 +454,10 @@ init_reg_sets_1 (void)
}
else
CLEAR_REG_SET (regs_invalidated_by_call_regset);
+ if (!fixed_reg_set_regset)
+ fixed_reg_set_regset = ALLOC_REG_SET (&persistent_obstack);
+ else
+ CLEAR_REG_SET (fixed_reg_set_regset);
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
{
@@ -462,7 +469,10 @@ init_reg_sets_1 (void)
#endif
if (fixed_regs[i])
- SET_HARD_REG_BIT (fixed_reg_set, i);
+ {
+ SET_HARD_REG_BIT (fixed_reg_set, i);
+ SET_REGNO_REG_SET (fixed_reg_set_regset, i);
+ }
if (call_used_regs[i])
SET_HARD_REG_BIT (call_used_reg_set, i);