summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-28 19:40:03 +0000
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-28 19:40:03 +0000
commit49923c5194591b52e0a0ecc78c43d6279b4bf9e4 (patch)
treedd09b607d835b86880e74fde9c35f2dc55b20c8a
parent4d379b6082c0fcd903e96fae40ab91e97c8c1cd2 (diff)
downloadgcc-49923c5194591b52e0a0ecc78c43d6279b4bf9e4.tar.gz
* config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
constants for E500 double. testsuite: * gcc.c-torture/compile/20080628-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@137232 138bc75d-0d04-0410-961f-82ee72b054a4
-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 909e4a69338..22c364936dd 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 98cbdc64f91..8e97c79acd2 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 39d0a71a401..b56104c3238 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 00000000000..aca4ff82777
--- /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);
+}