From ee668edcd3793c3a5b90e4c42541d8f7332237d7 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Fri, 15 May 1992 21:39:39 +0000 Subject: [PATCH] *** empty log message *** From-SVN: r994 --- gcc/final.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/gcc/final.c b/gcc/final.c index 923158a5436..460500ec640 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 -- 2.30.2