aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.c
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-10-21 03:37:33 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-10-21 03:37:33 +0000
commit16b702cd43c726a88897f6b153456e72fa990389 (patch)
tree42dc3e492c2955007b51b9e1104f1ed7ab55e08f /gcc/cse.c
parent56d410bbc0c0be85d5effea389a1fc870f21461f (diff)
downloadgcc-16b702cd43c726a88897f6b153456e72fa990389.zip
gcc-16b702cd43c726a88897f6b153456e72fa990389.tar.gz
gcc-16b702cd43c726a88897f6b153456e72fa990389.tar.bz2
cse.c (cse_end_of_basic_block): Don't return the end of a basic block reached by a branch if...
* cse.c (cse_end_of_basic_block): Don't return the end of a basic block reached by a branch if we're not going to actually process this block From-SVN: r30109
Diffstat (limited to 'gcc/cse.c')
-rw-r--r--gcc/cse.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index edb4678..a304bc6 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -8442,6 +8442,15 @@ cse_end_of_basic_block (insn, data, follow_jumps, after_loop, skip_blocks)
path_size--;
}
+ /* If the first instruction is marked with QImode, that means we've
+ already processed this block. Our caller will look at DATA->LAST
+ to figure out where to go next. We want to return the next block
+ in the instruction stream, not some branched-to block somewhere
+ else. We accomplish this by pretending our called forbid us to
+ follow jumps, or skip blocks. */
+ if (GET_MODE (insn) == QImode)
+ follow_jumps = skip_blocks = 0;
+
/* Scan to end of this basic block. */
while (p && GET_CODE (p) != CODE_LABEL)
{