aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@gcc.gnu.org>2007-05-28 17:25:25 -0700
committerAndrew Pinski <pinskia@gcc.gnu.org>2007-05-28 17:25:25 -0700
commita87db577fbb1b87486527c98b44727991ee998b4 (patch)
treecf32829ced2c56d0078e6325871e873883706429 /gcc
parent8d9016fcd33941f1542f0e6c8abb6373bd2cfbe0 (diff)
downloadgcc-a87db577fbb1b87486527c98b44727991ee998b4.zip
gcc-a87db577fbb1b87486527c98b44727991ee998b4.tar.gz
gcc-a87db577fbb1b87486527c98b44727991ee998b4.tar.bz2
[multiple changes]
2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com> PR c/31339 * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR, case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR, case POSTDECREMENT_EXPR>): Return the error_mark_node if either the real or imaginary parts would an error_mark_node. 2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com> PR c++/31339 * typeck.c (build_unary_op <case PREINCREMENT_EXPR, case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR, case POSTDECREMENT_EXPR>): Return the error_mark_node if either the real or imaginary parts would an error_mark_node. 2007-05-28 Andrew Pinski <andrew_pinski@playstation.sony.com> PR c/31339 * gcc.dg/boolcomplex-1.c: New test. PR c++/31339 * g++.dg/ext/boolcomplex-1.c: New test From-SVN: r125156
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/c-typeck.c5
-rw-r--r--gcc/cp/ChangeLog9
-rw-r--r--gcc/cp/typeck.c5
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/g++.dg/ext/boolcomplex-1.c3
-rw-r--r--gcc/testsuite/gcc.dg/boolcomplex-1.c3
7 files changed, 40 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bcdd44b..1ca6334 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com>
+
+ PR c/31339
+ * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
+ case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
+ case POSTDECREMENT_EXPR>): Return the error_mark_node
+ if either the real or imaginary parts would an
+ error_mark_node.
+
2007-05-28 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index dccf922..a4eed3f 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -2908,8 +2908,11 @@ build_unary_op (enum tree_code code, tree xarg, int flag)
arg = stabilize_reference (arg);
real = build_unary_op (REALPART_EXPR, arg, 1);
imag = build_unary_op (IMAGPART_EXPR, arg, 1);
+ real = build_unary_op (code, real, 1);
+ if (real == error_mark_node || imag == error_mark_node)
+ return error_mark_node;
return build2 (COMPLEX_EXPR, TREE_TYPE (arg),
- build_unary_op (code, real, 1), imag);
+ real, imag);
}
/* Report invalid types. */
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 5b4d88c..9dca96a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,12 @@
+2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com>
+
+ PR c++/31339
+ * typeck.c (build_unary_op <case PREINCREMENT_EXPR,
+ case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
+ case POSTDECREMENT_EXPR>): Return the error_mark_node
+ if either the real or imaginary parts would an
+ error_mark_node.
+
2007-05-25 Simon Martin <simartin@users.sourceforge.net>
Manuel Lopez-Ibanez <manu@gcc.gnu.org>
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index fa0c956..af21330 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -4221,8 +4221,11 @@ build_unary_op (enum tree_code code, tree xarg, int noconvert)
arg = stabilize_reference (arg);
real = build_unary_op (REALPART_EXPR, arg, 1);
imag = build_unary_op (IMAGPART_EXPR, arg, 1);
+ real = build_unary_op (code, real, 1);
+ if (real == error_mark_node || imag == error_mark_node)
+ return error_mark_node;
return build2 (COMPLEX_EXPR, TREE_TYPE (arg),
- build_unary_op (code, real, 1), imag);
+ real, imag);
}
/* Report invalid types. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 863a060..6697e0d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2007-05-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR c/31339
+ * gcc.dg/boolcomplex-1.c: New test.
+
+ PR c++/31339
+ * g++.dg/ext/boolcomplex-1.c: New test.
+
2007-05-28 Tobias Burnus <burnus@net-b.de>
PR fortran/32124
diff --git a/gcc/testsuite/g++.dg/ext/boolcomplex-1.c b/gcc/testsuite/g++.dg/ext/boolcomplex-1.c
new file mode 100644
index 0000000..d05d9bb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/boolcomplex-1.c
@@ -0,0 +1,3 @@
+/* { dg-do compile } */
+/* { dg-options "" } */
+bool b = --0i == 0; /* { dg-error "lvalue required as decrement operand" } */
diff --git a/gcc/testsuite/gcc.dg/boolcomplex-1.c b/gcc/testsuite/gcc.dg/boolcomplex-1.c
new file mode 100644
index 0000000..c34da04
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/boolcomplex-1.c
@@ -0,0 +1,3 @@
+/* { dg-do compile } */
+/* { dg-options "" } */
+_Bool b = --0i == 0; /* { dg-error "lvalue required as decrement operand" } */