function.c (epilogue_done): Be ready for first basic block not containing PROLOGUE_END note.

* function.c (epilogue_done): Be ready for first basic block not
	containing PROLOGUE_END note.
	(reposition_prologue_and_epilogue_notes): Avoid placing
	PROLOGUE_END note between BASIC_BLOCK.

From-SVN: r40020
This commit is contained in:
Jan Hubicka 2001-02-24 03:22:07 +01:00 committed by Jan Hubicka
parent c9212f333a
commit 016030fea6
2 changed files with 18 additions and 2 deletions

View File

@ -1,3 +1,10 @@
Sat Feb 24 03:19:42 CET 2001 Jan Hubicka <jh@suse.cz>
* function.c (epilogue_done): Be ready for first basic block not
containing PROLOGUE_END note.
(reposition_prologue_and_epilogue_notes): Avoid placing
PROLOGUE_END note between BASIC_BLOCK.
Sat Feb 24 03:17:09 CET 2001 Jan Hubicka <jh@suse.cz>
* loop.c (canonicalize_condition): Move to reversed_comparison_code.

View File

@ -7384,7 +7384,13 @@ epilogue_done:
there are line number notes before where we inserted the
prologue we should move them, and (2) we should generate a
note before the end of the first basic block, if there isn't
one already there. */
one already there.
??? This behaviour is completely broken when dealing with
multiple entry functions. We simply place the note always
into first basic block and let alternate entry points
to be missed.
*/
for (insn = prologue_end; insn; insn = prev)
{
@ -7402,7 +7408,7 @@ epilogue_done:
/* Find the last line number note in the first block. */
for (insn = BASIC_BLOCK (0)->end;
insn != prologue_end;
insn != prologue_end && insn;
insn = PREV_INSN (insn))
if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) > 0)
break;
@ -7487,6 +7493,9 @@ reposition_prologue_and_epilogue_notes (f)
BLOCK_HEAD (0) = next;
remove_insn (note);
/* Avoid placing note between CODE_LABEL and BASIC_BLOCK note. */
if (GET_CODE (insn) == CODE_LABEL)
insn = NEXT_INSN (insn);
add_insn_after (note, insn);
}
}