aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2008-06-28 20:40:03 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2008-06-28 20:40:03 +0100
commit624b157f704da414d40ed60003ecb21b5b2f380a (patch)
treedd09b607d835b86880e74fde9c35f2dc55b20c8a
parente5e9ea16b8b7f3b4c1c39cabff6c054dd5f911fa (diff)
downloadgcc-624b157f704da414d40ed60003ecb21b5b2f380a.zip
gcc-624b157f704da414d40ed60003ecb21b5b2f380a.tar.gz
gcc-624b157f704da414d40ed60003ecb21b5b2f380a.tar.bz2
predicates.md (easy_fp_constant): Reject TFmode constants for E500 double.
* config/rs6000/predicates.md (easy_fp_constant): Reject TFmode constants for E500 double. testsuite: * gcc.c-torture/compile/20080628-1.c: New test. From-SVN: r137232
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/predicates.md3
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20080628-1.c15
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 909e4a6..22c3649 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2008-06-28 Joseph Myers <joseph@codesourcery.com>
+
+ * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
+ constants for E500 double.
+
2008-06-28 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* doc/rtl.texi (const_vector): Document const_fixed as legitimate
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 98cbdc6..8e97c79 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -213,6 +213,9 @@
switch (mode)
{
case TFmode:
+ if (TARGET_E500_DOUBLE)
+ return 0;
+
REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
REAL_VALUE_TO_TARGET_LONG_DOUBLE (rv, k);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 39d0a71..b56104c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2008-06-28 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.c-torture/compile/20080628-1.c: New test.
+
2008-06-28 Richard Guenther <rguenther@suse.de>
* gcc.c-torture/execute/pta-field-1.c: Add return 0.
diff --git a/gcc/testsuite/gcc.c-torture/compile/20080628-1.c b/gcc/testsuite/gcc.c-torture/compile/20080628-1.c
new file mode 100644
index 0000000..aca4ff8
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20080628-1.c
@@ -0,0 +1,15 @@
+void f (long double, long double);
+
+struct s {
+ char c;
+ struct s *p;
+} *p;
+
+void
+g (void)
+{
+ long double ld;
+ p->p->c = 1;
+ ld = p->p->c;
+ f (ld, 1.0L);
+}