(set_nonzero_bits_and_sign_copies): Don't record data for a a pseudo that is undefine...
authorRichard Kenner <kenner@gcc.gnu.org>
Sat, 15 May 1993 14:43:42 +0000 (10:43 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 15 May 1993 14:43:42 +0000 (10:43 -0400)
(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

gcc/combine.c

index 66375ff68e5a86e419fff2d4e9ac861415870cf3..e53d1a6b53f194526f79dc3d7e66e2820ee2ebc3 100644 (file)
@@ -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.  */