aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-05-15 21:39:39 +0000
committerRichard Stallman <rms@gnu.org>1992-05-15 21:39:39 +0000
commitee668edcd3793c3a5b90e4c42541d8f7332237d7 (patch)
tree7a6c95bc0e7a27af432ea308cdb7364f43fcc691
parent01e2750c1b0911e04fcf02e10b930bc982045af7 (diff)
downloadgcc-ee668edcd3793c3a5b90e4c42541d8f7332237d7.zip
gcc-ee668edcd3793c3a5b90e4c42541d8f7332237d7.tar.gz
gcc-ee668edcd3793c3a5b90e4c42541d8f7332237d7.tar.bz2
*** empty log message ***
From-SVN: r994
-rw-r--r--gcc/final.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/gcc/final.c b/gcc/final.c
index 923158a5..460500e 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -1283,6 +1283,22 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
clobbered by the function. */
if (GET_CODE (XVECEXP (body, 0, 0)) == CALL_INSN)
CC_STATUS_INIT;
+
+ /* Following a conditional branch sequence, we have a new basic
+ block. */
+ if (profile_block_flag)
+ {
+ rtx insn = XVECEXP (body, 0, 0);
+ rtx body = PATTERN (insn);
+
+ if ((GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == SET
+ && GET_CODE (SET_SRC (body)) != LABEL_REF)
+ || (GET_CODE (insn) == JUMP_INSN
+ && GET_CODE (body) == PARALLEL
+ && GET_CODE (XVECEXP (body, 0, 0)) == SET
+ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF))
+ new_block = 1;
+ }
break;
}
@@ -1333,12 +1349,15 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
}
#endif
- /* Following a conditional branch, we have a new basic block. */
- if ((GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == SET
- && GET_CODE (SET_SRC (body)) != LABEL_REF)
- || (GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == PARALLEL
- && GET_CODE (XVECEXP (body, 0, 0)) == SET
- && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF))
+ /* Following a conditional branch, we have a new basic block.
+ But if we are inside a sequence, the new block starts after the
+ last insn of the sequence. */
+ if (profile_block_flag && final_sequence == 0
+ && ((GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == SET
+ && GET_CODE (SET_SRC (body)) != LABEL_REF)
+ || (GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == PARALLEL
+ && GET_CODE (XVECEXP (body, 0, 0)) == SET
+ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF)))
new_block = 1;
#ifndef STACK_REGS