From fdcee33b242a61a3915cac4ed25a43c0d8aa157f Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 6 Feb 2014 23:55:38 +1030 Subject: re PR target/60032 (ICE in reload_cse_simplify_operands, at postreload.c:411) PR target/60032 gcc/ * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_mode): Only change SDmode to DDmode when lra_in_progress. gcc/testsuite/ * gcc.target/powerpc/pr60032.c: New. From-SVN: r207553 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 2 +- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.target/powerpc/pr60032.c | 13 +++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/pr60032.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2d68ee2..c5f0280 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-02-06 Alan Modra + + PR target/60032 + * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_mode): Only + change SDmode to DDmode when lra_in_progress. + 2014-02-06 Jakub Jelinek PR middle-end/59150 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index fd45bd1..10bdf32 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -15581,7 +15581,7 @@ rs6000_secondary_memory_needed_rtx (enum machine_mode mode) enum machine_mode rs6000_secondary_memory_needed_mode (enum machine_mode mode) { - if (mode == SDmode) + if (lra_in_progress && mode == SDmode) return DDmode; return mode; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 552b591..43883ce 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-02-06 Alan Modra + + * gcc.target/powerpc/pr60032.c: New. + 2014-02-06 Jakub Jelinek PR target/60062 diff --git a/gcc/testsuite/gcc.target/powerpc/pr60032.c b/gcc/testsuite/gcc.target/powerpc/pr60032.c new file mode 100644 index 0000000..e1115b8 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr60032.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target dfp } */ +/* { dg-options "-O2" } */ + +void foo (void) +{ + register float __attribute__ ((mode(SD))) r31 __asm__ ("r31"); + register float __attribute__ ((mode(SD))) fr1 __asm__ ("fr1"); + + __asm__ ("#" : "=d" (fr1)); + r31 = fr1; + __asm__ ("#" : : "r" (r31)); +} -- cgit v1.1