diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-05-15 10:43:42 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-05-15 10:43:42 -0400 |
commit | e8095e803fe2b9d3b1200beeb2cbd47d2f419441 (patch) | |
tree | e5299038e17290a0f2a0eeb6b7f02ba20accf8d7 /gcc | |
parent | 8c25f9f8319413dd6bbafc9e4971fb1909436ad0 (diff) | |
download | gcc-e8095e803fe2b9d3b1200beeb2cbd47d2f419441.zip gcc-e8095e803fe2b9d3b1200beeb2cbd47d2f419441.tar.gz gcc-e8095e803fe2b9d3b1200beeb2cbd47d2f419441.tar.bz2 |
(set_nonzero_bits_and_sign_copies): Don't record data for a a pseudo that is undefined on entry to a function.
(set_nonzero_bits_and_sign_copies): Don't record data for a a pseudo that is
undefined on entry to a function.
When a pseudo is clobbered, show we don't know anything about it.
From-SVN: r4471
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/combine.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 66375ff..e53d1a6 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -666,10 +666,18 @@ set_nonzero_bits_and_sign_copies (x, set) && REGNO (x) >= FIRST_PSEUDO_REGISTER && reg_n_sets[REGNO (x)] > 1 && reg_basic_block[REGNO (x)] < 0 + /* If this register is undefined at the start of the file, we can't + say what its contents were. */ + && ! (basic_block_live_at_start[0][REGNO (x) / REGSET_ELT_BITS] + & ((REGSET_ELT_TYPE) 1 << (REGNO (x) % REGSET_ELT_BITS))) && GET_MODE_BITSIZE (GET_MODE (x)) <= HOST_BITS_PER_WIDE_INT) { if (GET_CODE (set) == CLOBBER) - return; + { + reg_nonzero_bits[REGNO (x)] = GET_MODE_MASK (GET_MODE (x)); + reg_sign_bit_copies[REGNO (x)] = 0; + return; + } /* If this is a complex assignment, see if we can convert it into a simple assignment. */ |