aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2014-03-01 09:14:25 -0500
committerJason Merrill <jason@gcc.gnu.org>2014-03-01 09:14:25 -0500
commitabb839ecacf4034ccb8376e4ab96e522287ff126 (patch)
tree966c31223a8e6b88145857b1238d55ee4fe7fd71 /gcc
parent19305875c254f3eb3089f2f49737a0138ca7f1a5 (diff)
downloadgcc-abb839ecacf4034ccb8376e4ab96e522287ff126.zip
gcc-abb839ecacf4034ccb8376e4ab96e522287ff126.tar.gz
gcc-abb839ecacf4034ccb8376e4ab96e522287ff126.tar.bz2
re PR c++/58845 (Operator || and && broken for vectors)
PR c++/58845 * typeck.c (cp_build_binary_op): Sorry on vector&&vector. From-SVN: r208243
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/typeck.c5
-rw-r--r--gcc/testsuite/g++.dg/ext/vector27.C7
3 files changed, 17 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9a13f49..939f5e1 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2014-02-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/58845
+ * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
+
2014-02-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58610
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 1e14b63..29f9e9d 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -4177,6 +4177,11 @@ cp_build_binary_op (location_t location,
case TRUTH_ORIF_EXPR:
case TRUTH_AND_EXPR:
case TRUTH_OR_EXPR:
+ if (VECTOR_TYPE_P (type0) || VECTOR_TYPE_P (type1))
+ {
+ sorry ("logical operation on vector type");
+ return error_mark_node;
+ }
result_type = boolean_type_node;
break;
diff --git a/gcc/testsuite/g++.dg/ext/vector27.C b/gcc/testsuite/g++.dg/ext/vector27.C
new file mode 100644
index 0000000..288e13c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/vector27.C
@@ -0,0 +1,7 @@
+// PR c++/58845
+
+void foo()
+{
+ int v __attribute__((vector_size(8)));
+ v = v || v; // { dg-bogus "" "" { xfail *-*-* } }
+}