Commit d7e5d7fe by Jan Hubicka Committed by Jan Hubicka

toplev.c (rest_of_compilation): Revert previous patch.


	* toplev.c (rest_of_compilation): Revert previous patch.
	* final.c (shorten_branches): Likewise.

From-SVN: r42961
parent f9b23f0c
Thu Jun 7 17:09:50 CEST 2001 Jan Hubicka <jh@suse.cz>
* toplev.c (rest_of_compilation): Revert previous patch.
* final.c (shorten_branches): Likewise.
2001-06-07 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> 2001-06-07 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* pself.c, pself1.c, pself2.c, pself3.c, pself4.c, pself5.c: * pself.c, pself1.c, pself2.c, pself3.c, pself4.c, pself5.c:
......
...@@ -960,6 +960,26 @@ shorten_branches (first) ...@@ -960,6 +960,26 @@ shorten_branches (first)
int uid; int uid;
rtx align_tab[MAX_CODE_ALIGN]; rtx align_tab[MAX_CODE_ALIGN];
/* In order to make sure that all instructions have valid length info,
we must split them before we compute the address/length info. */
for (insn = NEXT_INSN (first); insn; insn = NEXT_INSN (insn))
if (INSN_P (insn))
{
rtx old = insn;
/* Don't split the insn if it has been deleted. */
if (! INSN_DELETED_P (old))
insn = try_split (PATTERN (old), old, 1);
/* When not optimizing, the old insn will be still left around
with only the 'deleted' bit set. Transform it into a note
to avoid confusion of subsequent processing. */
if (INSN_DELETED_P (old))
{
PUT_CODE (old, NOTE);
NOTE_LINE_NUMBER (old) = NOTE_INSN_DELETED;
NOTE_SOURCE_FILE (old) = 0;
}
}
#endif #endif
/* We must do some computations even when not actually shortening, in /* We must do some computations even when not actually shortening, in
......
...@@ -3685,16 +3685,18 @@ rest_of_compilation (decl) ...@@ -3685,16 +3685,18 @@ rest_of_compilation (decl)
} }
#endif #endif
timevar_push (TV_SHORTEN_BRANCH); #ifndef STACK_REGS
if (0 /* ??? Do this before shorten branches so that we aren't creating
#ifdef HAVE_ATTR_length insns too late and fail sanity checks in final. */
|| 1 convert_to_eh_region_ranges ();
#endif
#ifdef STACK_REGS
|| 1
#endif #endif
)
split_all_insns (0); /* Shorten branches.
Note this must run before reg-stack because of death note (ab)use
in the ia32 backend. */
timevar_push (TV_SHORTEN_BRANCH);
shorten_branches (get_insns ());
timevar_pop (TV_SHORTEN_BRANCH); timevar_pop (TV_SHORTEN_BRANCH);
#ifdef STACK_REGS #ifdef STACK_REGS
...@@ -3707,14 +3709,9 @@ rest_of_compilation (decl) ...@@ -3707,14 +3709,9 @@ rest_of_compilation (decl)
timevar_pop (TV_REG_STACK); timevar_pop (TV_REG_STACK);
ggc_collect (); ggc_collect ();
#endif
convert_to_eh_region_ranges (); convert_to_eh_region_ranges ();
#endif
/* Shorten branches. */
timevar_push (TV_SHORTEN_BRANCH);
shorten_branches (get_insns ());
timevar_pop (TV_SHORTEN_BRANCH);
current_function_nothrow = nothrow_function_p (); current_function_nothrow = nothrow_function_p ();
if (current_function_nothrow) if (current_function_nothrow)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment