summaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
authorjfc <jfc@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-21 17:21:44 +0000
committerjfc <jfc@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-21 17:21:44 +0000
commit170051d6ce34e9cc45250afa55a9e52c7cc7ea4a (patch)
treecf017d9f7efd90e3dbdc5ee69ca91818c3e9ade4 /gcc/final.c
parent485d67d3e950cec82e1ce9ad933825ca31698948 (diff)
downloadgcc-170051d6ce34e9cc45250afa55a9e52c7cc7ea4a.tar.gz
* final.c (final_scan_insn): Disable tracking CC across branches.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22533 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/final.c')
-rw-r--r--gcc/final.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/final.c b/gcc/final.c
index 454ab6c71f5..cb779497a83 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -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);