This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR 60268
- From: Andrey Belevantsev <abel at ispras dot ru>
- To: Andreas Schwab <schwab at suse dot de>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, "Vladimir N. Makarov" <vmakarov at redhat dot com>
- Date: Tue, 25 Feb 2014 13:36:56 +0400
- Subject: Re: [PATCH] Fix PR 60268
- Authentication-results: sourceware.org; auth=none
- References: <5306FEC9 dot 50501 at ispras dot ru> <mvmha7nbllr dot fsf at hawking dot suse dot de>
On 25.02.2014 13:14, Andreas Schwab wrote:
Andrey Belevantsev <abel@ispras.ru> writes:
Fixed by placing the initialization properly at the end of sched_rgn_init
and also moving the check for sched_pressure != NONE outside of the if
statement in schedule_region as discussed in the PR trail with Jakub.
Bootstrapped and tested on x86-64, ok?
This breaks m68k:
$ gcc/xgcc -Bgcc/ -fno-diagnostics-show-caret -fdiagnostics-color=never -O0 -flive-range-shrinkage -c -o pr60268.o ../gcc/testsuite/gcc.c-torture/compile/pr60268.c
../gcc/testsuite/gcc.c-torture/compile/pr60268.c: In function âfâ:
../gcc/testsuite/gcc.c-torture/compile/pr60268.c:6:1: internal compiler error: in m68k_sched_issue_rate, at config/m68k/m68k.c:5978
The patch itself has nothing to do with the ICE, probably it means that
-flive-range-shrinkage was never tried without tuning on m68k, because in
m68k.c there is
630 /* Setup scheduling options. */
631 if (TUNE_CFV1)
632 m68k_sched_cpu = CPU_CFV1;
633 else if (TUNE_CFV2)
634 m68k_sched_cpu = CPU_CFV2;
635 else if (TUNE_CFV3)
636 m68k_sched_cpu = CPU_CFV3;
637 else if (TUNE_CFV4)
638 m68k_sched_cpu = CPU_CFV4;
639 else
640 {
641 m68k_sched_cpu = CPU_UNKNOWN;
642 flag_schedule_insns = 0;
643 flag_schedule_insns_after_reload = 0;
644 flag_modulo_sched = 0;
645 }
And on line 641 m68k_sched_cpu set to CPU_UNKNOWN is causing the ICE.
I guess you need to turn the live range shrinkage off in that piece of
code, the below patch fixes the ICE for me:
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index f20d071..ea1bcd4 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -642,6 +642,7 @@ m68k_option_override (void)
flag_schedule_insns = 0;
flag_schedule_insns_after_reload = 0;
flag_modulo_sched = 0;
+ flag_live_range_shrinkage = 0;
}
if (m68k_sched_cpu != CPU_UNKNOWN)
Yours,
Andrey
0xbabc8b m68k_sched_issue_rate
../../gcc/config/m68k/m68k.c:5978
0xc3d9dc sched_init()
../../gcc/haifa-sched.c:6657
0xc3eecf haifa_sched_init()
../../gcc/haifa-sched.c:6719
0x8e807c schedule_insns
../../gcc/sched-rgn.c:3407
0x8e87cb schedule_insns
../../gcc/sched-rgn.c:3401
0x8e87cb rest_of_handle_live_range_shrinkage
../../gcc/sched-rgn.c:3614
0x8e87cb execute
../../gcc/sched-rgn.c:3704
Andreas.