* final.c (final_scan_insn): Disable tracking CC across branches.
authorJohn Carr <jfc@mit.edu>
Mon, 21 Sep 1998 17:21:44 +0000 (17:21 +0000)
committerJohn Carr <jfc@gcc.gnu.org>
Mon, 21 Sep 1998 17:21:44 +0000 (17:21 +0000)
From-SVN: r22533

gcc/ChangeLog
gcc/final.c

index a0ff2d789511777142f77ee4ea70b974132fb132..cfad29cede1316f242d02fd9301b3620e501b16f 100644 (file)
@@ -1,3 +1,7 @@
+Mon Sep 21 20:19:41 1998  John Carr  <jfc@mit.edu>
+
+       * final.c (final_scan_insn): Disable tracking CC across branches.
+
 Mon Sep 21 17:15:26 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
 
        * expr.h (eh_rtime_match_libfunc): New extern declaration.
index 454ab6c71f5bfe0ca6d8b417414e6c370216ec67..cb779497a832622e3f449b947036fcffd86de10b 100644 (file)
@@ -1983,7 +1983,7 @@ final (first, file, optimize, prescan)
 #ifdef HAVE_cc0
       /* If CC tracking across branches is enabled, record the insn which
         jumps to each branch only reached from one place.  */
-      if (GET_CODE (insn) == JUMP_INSN)
+      if (optimize && GET_CODE (insn) == JUMP_INSN)
        {
          rtx lab = JUMP_LABEL (insn);
          if (lab && LABEL_NUSES (lab) == 1)
@@ -2299,7 +2299,10 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
       CC_STATUS_INIT;
       /* If this label is reached from only one place, set the condition
         codes from the instruction just before the branch.  */
-      if (LABEL_NUSES (insn) == 1)
+
+      /* Disabled because some insns set cc_status in the C output code
+        and NOTICE_UPDATE_CC alone can set incorrect status.  */
+      if (0 /* optimize && LABEL_NUSES (insn) == 1*/)
        {
          rtx jump = LABEL_REFS (insn);
          rtx barrier = prev_nonnote_insn (insn);