aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfglayout.c
diff options
context:
space:
mode:
authorZdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>2003-07-05 14:40:59 +0000
committerJan Hubicka <jh@suse.cz>2003-07-05 14:40:59 +0000
commit55b78acde351689b5667b1211e5aaf92da64f142 (patch)
treeb51b498c5ca943b9565eaefb10b25dbe1c28556e /gcc/cfglayout.c
parent2060704bdb8411181064eeeb0f7e3fbbc8b9ad3a (diff)
Sat Jul 5 16:18:53 CEST 2003 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
Blame to Jan Hubicka <jh@suse.cz> * cfglayout.c (record_effective_endpoints): Split insns before first basic block correctly. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@68973 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfglayout.c')
-rw-r--r--gcc/cfglayout.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c
index 3a6b92500b6..08d20e1357a 100644
--- a/gcc/cfglayout.c
+++ b/gcc/cfglayout.c
@@ -196,19 +196,16 @@ record_effective_endpoints (void)
rtx insn;
for (insn = get_insns ();
- NEXT_INSN (insn) && GET_CODE (insn) == NOTE;
+ insn
+ && GET_CODE (insn) == NOTE
+ && NOTE_LINE_NUMBER (insn) != NOTE_INSN_BASIC_BLOCK;
insn = NEXT_INSN (insn))
- {
- if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_BASIC_BLOCK)
- {
- insn = NULL;
- break;
- }
- if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG)
- break;
- }
- if (insn)
- cfg_layout_function_header = unlink_insn_chain (get_insns (), insn);
+ continue;
+ if (!insn)
+ abort (); /* No basic blocks at all? */
+ if (PREV_INSN (insn))
+ cfg_layout_function_header =
+ unlink_insn_chain (get_insns (), PREV_INSN (insn));
else
cfg_layout_function_header = NULL_RTX;