From 7ad7f828fcb8108dc31350de6c8e09fbdcd33816 Mon Sep 17 00:00:00 2001 From: John Carr Date: Mon, 21 Sep 1998 17:21:44 +0000 Subject: [PATCH] * final.c (final_scan_insn): Disable tracking CC across branches. From-SVN: r22533 --- gcc/ChangeLog | 4 ++++ gcc/final.c | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a0ff2d78951..cfad29cede1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Mon Sep 21 20:19:41 1998 John Carr + + * final.c (final_scan_insn): Disable tracking CC across branches. + Mon Sep 21 17:15:26 EDT 1998 Andrew MacLeod * expr.h (eh_rtime_match_libfunc): New extern declaration. 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);