]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* flow.c (life_analysis_1): Delete CLOBBER insns after reload.
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Oct 1998 14:33:35 +0000 (14:33 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Oct 1998 14:33:35 +0000 (14:33 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23257 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/flow.c

index eba3f1440994cf63e333e40080aca8ea64e4a4b1..7c0212d3e9cc5f829741d979ec58f658d7d25a4f 100644 (file)
@@ -26,6 +26,8 @@ Fri Oct 23 15:34:14 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
 Fri Oct 23 13:12:35 1998  Jeffrey A Law  (law@cygnus.com)
 
+       * flow.c (life_analysis_1): Delete CLOBBER insns after reload.
+
        * mn10200.md (truncated shift): Accept constant inputs too.
 
 Fri Oct 23 04:06:57 1998  Richard Earnshaw (rearnsha@arm.com)
index 94251ff384209f23c2347fb2dc54da15a91f0526..2d3c983655fc4c32105a223cea3c89e0bc3a7932 100644 (file)
@@ -1358,6 +1358,23 @@ life_analysis_1 (f, nregs)
   if (reload_completed)
     bcopy (regs_ever_live, save_regs_ever_live, (sizeof (regs_ever_live)));
 
+  /* Also remove all CLOBBER insns after reload.  They can cause us to think
+     a value is dead when it really is not dead.  */
+  if (reload_completed)
+    {
+      rtx insn;
+
+      for (insn = f; insn; insn = NEXT_INSN (insn))
+       {
+         if (GET_CODE (insn) == INSN
+             && GET_CODE (PATTERN (insn)) == CLOBBER)
+           {
+              PUT_CODE (insn, NOTE);
+              NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
+              NOTE_SOURCE_FILE (insn) = 0;
+           }
+       }
+    }
   bzero (regs_ever_live, sizeof regs_ever_live);
 
   /* Allocate and zero out many data structures