* flow.c (verify_local_live_at_start): Allow hard regs to die.
authorJ"orn Rennecke <amylaar@redhat.com>
Fri, 3 Nov 2000 05:43:09 +0000 (05:43 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Fri, 3 Nov 2000 05:43:09 +0000 (05:43 +0000)
From-SVN: r37220

gcc/ChangeLog
gcc/flow.c

index 0cc7a0618e46c2d52d52e01dd18a9af5e00b800a..42119a96bd5511431f312e5676b88c355181683e 100644 (file)
@@ -1,3 +1,7 @@
+Fri Nov  3 05:41:07 2000  J"orn Rennecke <amylaar@redhat.com>
+
+       * flow.c (verify_local_live_at_start): Allow hard regs to die.
+
 2000-11-02  Neil Booth  <neilb@earthling.net>
 
 config:
index d286f91e2b3465695012a9bb1e6dceda3ffa8579..a48accf89d45edc48556d45aa6dee79ede3435cf 100644 (file)
@@ -2888,11 +2888,24 @@ verify_local_live_at_start (new_live_at_start, bb)
 
       EXECUTE_IF_SET_IN_REG_SET (new_live_at_start, 0, i,
        {
-          /* No registers should die.  */
+          /* No pseudo registers should die.  */
          if (REGNO_REG_SET_P (bb->global_live_at_start, i))
-           abort ();
-          /* Verify that the now-live register is wider than word_mode.  */
-         verify_wide_reg (i, bb->head, bb->end);
+           {
+             /* But hard regs can reasonably die, e.g. when we combine
+                (insn 6 30 7 (set (reg/v:DI 83)
+                                  (reg:DI 5 r5)) (nil)
+                    (expr_list:REG_DEAD (reg:DI 5 r5) (nil)))
+                ... and ...
+                (insn 17 15 18 (set (reg:SI 5 r5)
+                               (subreg:SI (reg/v:DI 83) 1)) (insn_list 6 (nil))
+                    (expr_list:REG_DEAD (reg/v:DI 83) (nil))) .  */
+
+             if (i >= FIRST_PSEUDO_REGISTER)
+               abort ();
+           }
+         else
+           /* Verify that the now-live register is wider than word_mode.  */
+           verify_wide_reg (i, bb->head, bb->end);
        });
     }
 }