diff options
author | Joern Rennecke <joern.rennecke@embecosm.com> | 2011-11-06 22:58:54 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2011-11-06 22:58:54 +0000 |
commit | 9e582b1da06d78eab05921174bdc9e7f0464c17f (patch) | |
tree | 292c99c70f3521110cea26b4cb276bbfa0bbdc77 /gcc/reginfo.c | |
parent | 57899d2fc591789a7ef0839d6e38e954a5f494e0 (diff) | |
download | gcc-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.c | 14 |
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); |