From 45872d7555181a89a5214f607e1ca1d6b2ee9f4e Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Thu, 10 Nov 2005 08:27:47 +0100 Subject: [PATCH] re PR target/24315 (amd64 fails -fpeephole2) PR target/24315 * config/i386/i386.md (*pushdi2_rex64 splitter) (*movdi_1_rex64 splitter): Delay splitting after flow2 pass only when (optimize > 0 && flag_peephole2). PR target/19340 * reg-stack.c (reg_to_stack): Update register liveness also for flag_sched2_use_traces. testsuite/ PR target/24315 * gcc.dg/pr24315.c: New test. PR target/19340 * gcc.dg/pr19340.c: New test. From-SVN: r106728 --- gcc/ChangeLog | 13 +++++++++++++ gcc/config/i386/i386.md | 6 ++++-- gcc/reg-stack.c | 2 +- gcc/testsuite/ChangeLog | 10 ++++++++++ gcc/testsuite/gcc.dg/pr19340.c | 26 ++++++++++++++++++++++++++ gcc/testsuite/gcc.dg/pr24315.c | 9 +++++++++ 6 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr19340.c create mode 100644 gcc/testsuite/gcc.dg/pr24315.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9576fbd272fa..e6f45167f595 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2005-11-10 Uros Bizjak + + PR target/24315 + * config/i386/i386.md (*pushdi2_rex64 splitter) + (*movdi_1_rex64 splitter): Delay splitting after + flow2 pass only when (optimize > 0 && flag_peephole2). + +2005-11-10 Uros Bizjak + + PR target/19340 + * reg-stack.c (reg_to_stack): Update register liveness also + for flag_sched2_use_traces. + 2005-11-09 Per Bothner Uros Bizjak diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 93d9dcdba150..e87a31663237 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1850,7 +1850,8 @@ (define_split [(set (match_operand:DI 0 "push_operand" "") (match_operand:DI 1 "immediate_operand" ""))] - "TARGET_64BIT && (flow2_completed || (reload_completed && !flag_peephole2)) + "TARGET_64BIT && ((optimize > 0 && flag_peephole2) + ? flow2_completed : reload_completed) && !symbolic_operand (operands[1], DImode) && !x86_64_immediate_operand (operands[1], DImode)" [(set (match_dup 0) (match_dup 1)) @@ -2105,7 +2106,8 @@ (define_split [(set (match_operand:DI 0 "memory_operand" "") (match_operand:DI 1 "immediate_operand" ""))] - "TARGET_64BIT && (flow2_completed || (reload_completed && !flag_peephole2)) + "TARGET_64BIT && ((optimize > 0 && flag_peephole2) + ? flow2_completed : reload_completed) && !symbolic_operand (operands[1], DImode) && !x86_64_immediate_operand (operands[1], DImode)" [(set (match_dup 2) (match_dup 3)) diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index 84dc1d9495d2..f10abe9642a8 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -429,7 +429,7 @@ reg_to_stack (rtx first, 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 54ca96de343b..b4e0a4009cc3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2005-11-10 Uros Bizjak + + PR target/24315 + * gcc.dg/pr24315.c: New test. + +2005-11-10 Uros Bizjak + + PR target/19340 + * gcc.dg/pr19340.c: New test. + 2005-11-09 Uros Bizjak PR c/24101 diff --git a/gcc/testsuite/gcc.dg/pr19340.c b/gcc/testsuite/gcc.dg/pr19340.c new file mode 100644 index 000000000000..cac4b0933eea --- /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; +} diff --git a/gcc/testsuite/gcc.dg/pr24315.c b/gcc/testsuite/gcc.dg/pr24315.c new file mode 100644 index 000000000000..ec3340cbcb62 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr24315.c @@ -0,0 +1,9 @@ +/* PR target/24315 */ +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O0 -fpeephole2" } */ + +void s48_double_to_bignum (int exponent) +{ + long length = ((((exponent) + ((((sizeof (long)) * 8) - 2) - 1)) / + (((sizeof (long)) * 8) - 2))); +} -- 2.47.2