aboutsummaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2003-09-08 09:23:34 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2003-09-08 09:23:34 +0200
commit7f14bbe68f1fac27349b5154730aeb2e23e97dfa (patch)
treeea1321c9918c08c95bd582f59412c454272f1f8d /gcc/toplev.c
parent5751a10b97f8607b89325cecdac246d9ef758592 (diff)
downloadgcc-7f14bbe68f1fac27349b5154730aeb2e23e97dfa.zip
gcc-7f14bbe68f1fac27349b5154730aeb2e23e97dfa.tar.gz
gcc-7f14bbe68f1fac27349b5154730aeb2e23e97dfa.tar.bz2
toplev.c (rest_of_compilation): Call split_all_insns before regstack if optimizing but not scheduling after reload.
* toplev.c (rest_of_compilation): Call split_all_insns before regstack if optimizing but not scheduling after reload. * gcc.c-torture/compile/20030904-1.c: New test. From-SVN: r71203
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index aa04138..bcc9c50 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -2082,6 +2082,23 @@ rest_of_handle_delay_slots (tree decl, rtx insns)
static void
rest_of_handle_stack_regs (tree decl, rtx insns)
{
+#if defined (HAVE_ATTR_length)
+ /* If flow2 creates new instructions which need splitting
+ and scheduling after reload is not done, they might not be
+ splitten until final which doesn't allow splitting
+ if HAVE_ATTR_length. */
+#ifdef INSN_SCHEDULING
+ if (optimize && !flag_schedule_insns_after_reload)
+#else
+ if (optimize)
+#endif
+ {
+ timevar_push (TV_SHORTEN_BRANCH);
+ split_all_insns (1);
+ timevar_pop (TV_SHORTEN_BRANCH);
+ }
+#endif
+
timevar_push (TV_REG_STACK);
open_dump_file (DFI_stack, decl);