From 77c99e50b3925d4cea5e3394eb116cff84a33c9c Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Fri, 5 Jul 2013 16:04:26 +0200 Subject: [PATCH] backport: re PR target/57655 (ICE: in create_pre_exit, at mode-switching.c:418 with -mno-fp-ret-in-387 -mvzeroupper -mxop and __builtin_ilogbl()) Backport from mainline 2013-06-20 Uros Bizjak PR target/57655 * config/i386/i386.c (construct_container): Report error if long double is used with disabled x87 float returns. testsuite/ChangeLog: Backport from mainline 2013-06-20 Uros Bizjak PR target/57655 * gcc.target/i386/pr57655.c: New test. From-SVN: r200716 --- gcc/ChangeLog | 9 +++++++++ gcc/config/i386/i386.c | 2 +- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.target/i386/pr57655.c | 10 ++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr57655.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2bfabf7b7288..37b67a5215f2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2013-07-05 Uros Bizjak + + Backport from mainline + 2013-06-20 Uros Bizjak + + PR target/57655 + * config/i386/i386.c (construct_container): Report error if + long double is used with disabled x87 float returns. + 2013-06-21 David Edelsohn Backport from mainline diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 5bcb7e0db92d..a6b53e99e546 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -6303,7 +6303,7 @@ construct_container (enum machine_mode mode, enum machine_mode orig_mode, /* Likewise, error if the ABI requires us to return values in the x87 registers and the user specified -mno-80387. */ - if (!TARGET_80387 && in_return) + if (!TARGET_FLOAT_RETURNS_IN_80387 && in_return) for (i = 0; i < n; i++) if (regclass[i] == X86_64_X87_CLASS || regclass[i] == X86_64_X87UP_CLASS diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d1abd627cc0c..6fd55a6a3082 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2013-07-05 Uros Bizjak + + Backport from mainline + 2013-06-20 Uros Bizjak + + PR target/57655 + * gcc.target/i386/pr57655.c: New test. + 2013-06-09 Jakub Jelinek PR target/57568 diff --git a/gcc/testsuite/gcc.target/i386/pr57655.c b/gcc/testsuite/gcc.target/i386/pr57655.c new file mode 100644 index 000000000000..586d33862223 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr57655.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx -mvzeroupper -mno-fp-ret-in-387" } + +/* { dg-error "x87 register return with x87 disabled" "" { target { ! ia32 } } 8 } */ + +long double +foo (long double x) +{ + return __builtin_ilogbl (x); +} -- 2.47.2