From dfea1f6121293f7ddccc8a599ee4a70cf7a06ab7 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Tue, 8 Nov 2005 07:21:51 +0100 Subject: [PATCH] re PR target/19340 (Compilation SEGFAULTs with -O1 -fschedule-insns2 -fsched2-use-traces on an x86 architecture.) PR target/19340 * reg-stack.c (reg_to_stack): Update register liveness also for flag_sched2_use_traces. testsuite/ PR target/19340 * gcc.dg/pr19340.c: New test. From-SVN: r106632 --- gcc/ChangeLog | 6 ++++++ gcc/reg-stack.c | 2 +- gcc/testsuite/ChangeLog | 7 ++++++- gcc/testsuite/gcc.dg/pr19340.c | 26 ++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr19340.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6e45b9e352e..1e22fd36845 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-11-08 Uros Bizjak + + PR target/19340 + * reg-stack.c (reg_to_stack): Update register liveness also + for flag_sched2_use_traces. + 2005-11-08 Alan Modra PR target/23704 diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index 34e2dd9e33d..665311c2b6b 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -3046,7 +3046,7 @@ reg_to_stack (FILE *file) Also need to rebuild life when superblock scheduling is done as it don't update liveness yet. */ if (!optimize - || (flag_sched2_use_superblocks + || ((flag_sched2_use_superblocks || flag_sched2_use_traces) && flag_schedule_insns_after_reload)) { count_or_remove_death_notes (NULL, 1); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9b09e7963d4..95040bc925a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-11-08 Uros Bizjak + + PR target/19340 + * gcc.dg/pr19340.c: New test. + 2005-11-07 Ian Lance Taylor PR rtl-optimization/24683 @@ -5,7 +10,7 @@ 2005-11-07 Uros Bizjak - * gcc.dg/vect/pr24225.c: Add cleanup-coverage-files. + * gcc.dg/pr24225.c: Add cleanup-coverage-files. * gcc.dg/vect/pr24300.c: Add cleanup-tree-dump. 2005-11-07 Uros Bizjak diff --git a/gcc/testsuite/gcc.dg/pr19340.c b/gcc/testsuite/gcc.dg/pr19340.c new file mode 100644 index 00000000000..cac4b0933ee --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr19340.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -fschedule-insns2 -fsched2-use-traces" } */ + +extern double f (double x); + +double g (int a) +{ + int b, c, d, e = 0; + double h; + + for (d = 0; d < a; d++) + for (c = 0; c < a; c++) + b = 1; + + h = (double) e / (double) a; + + if (h) + { + h = 1.0 / h; + h = f (h); + } + else + h = 1.0; + + return h; +}