summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>2004-02-10 13:41:16 +0000
committerbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>2004-02-10 13:41:16 +0000
commit3bcc1a800100c83e84eaa18ef50c68510a8d8cd1 (patch)
tree0875007b2f72c9c1dff1299a2d63339ae8a1c885
parent39d21acd0ed3610567de0e46023ee2b9ad58b148 (diff)
downloadppe42-gcc-3bcc1a800100c83e84eaa18ef50c68510a8d8cd1.tar.gz
ppe42-gcc-3bcc1a800100c83e84eaa18ef50c68510a8d8cd1.zip
PR c/14092
* gcc.dg/pr14092-1.c: New testcase. * fold-const.c (fold) <NEGATE_EXPR>: Convert result of negate_expr back to the original type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77602 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/fold-const.c2
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/pr14092-1.c17
4 files changed, 30 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1f6b7482152..c235d08ef50 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-10 Paolo Bonzini <bonzini@gnu.org>
+
+ PR c/14092
+ * fold-const.c (fold) <NEGATE_EXPR>: Convert result of
+ negate_expr back to the original type.
+
2004-02-10 Alan Modra <amodra@bigpond.net.au>
* config/rs6000/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Don't
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 3f68051da2d..71f1e9bce09 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -5785,7 +5785,7 @@ fold (tree expr)
case NEGATE_EXPR:
if (negate_expr_p (arg0))
- return negate_expr (arg0);
+ return fold_convert (type, negate_expr (arg0));
return t;
case ABS_EXPR:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b0bcf5fee41..a22f644a4ab 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-10 Paolo Bonzini <bonzini@gnu.org>
+
+ PR c/14092
+
+ * gcc.dg/pr14092-1.c: New testcase.
+
2004-02-10 Alan Modra <amodra@bigpond.net.au>
* gcc.dg/cpp/assert4.c: Fix typo last change.
diff --git a/gcc/testsuite/gcc.dg/pr14092-1.c b/gcc/testsuite/gcc.dg/pr14092-1.c
new file mode 100644
index 00000000000..86076c241e0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr14092-1.c
@@ -0,0 +1,17 @@
+/* PR c/14092
+ * Origin: bonzini@gnu.org
+ * rejects-valid
+ */
+/* { dg-do compile } */
+
+typedef struct _PLCI {
+ unsigned char x;
+ unsigned char buf[1];
+} PLCI;
+
+
+void nl_ind(PLCI * plci)
+{
+ plci->x = -((int)(plci->buf)) & 3;
+}
+
OpenPOWER on IntegriCloud