aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2010-05-04 15:01:13 -0400
committerJason Merrill <jason@gcc.gnu.org>2010-05-04 15:01:13 -0400
commitb5c0a77ec9b02f51b566ffbca83d02333932c064 (patch)
treedb58446a6947d6ffb82e2f1d5daf1ac255f6569f /gcc
parent13917ae3b9147868e0a2123522dd04adc33768ba (diff)
downloadgcc-b5c0a77ec9b02f51b566ffbca83d02333932c064.zip
gcc-b5c0a77ec9b02f51b566ffbca83d02333932c064.tar.gz
gcc-b5c0a77ec9b02f51b566ffbca83d02333932c064.tar.bz2
re PR c++/38064 ([c++0x] operator== doesn't work for enum classes)
PR c++/38064 * typeck.c (cp_build_binary_op): Allow enums for <> as well. From-SVN: r159042
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/typeck.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/enum3.C10
4 files changed, 24 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 634a74b..3f3b68e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2010-05-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/38064
+ * typeck.c (cp_build_binary_op): Allow enums for <> as well.
+
2010-05-04 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43705
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 46bc34d..e92175f 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -4174,8 +4174,10 @@ cp_build_binary_op (location_t location,
}
build_type = boolean_type_node;
- if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE)
- && (code1 == INTEGER_TYPE || code1 == REAL_TYPE))
+ if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE
+ || code0 == ENUMERAL_TYPE)
+ && (code1 == INTEGER_TYPE || code1 == REAL_TYPE
+ || code1 == ENUMERAL_TYPE))
short_compare = 1;
else if (code0 == POINTER_TYPE && code1 == POINTER_TYPE)
result_type = composite_pointer_type (type0, type1, op0, op1,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 737a9f1..5b213ca 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-05-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/38064
+ * g++.dg/cpp0x/enum3.C: Extend.
+
2010-05-04 H.J. Lu <hongjiu.lu@intel.com>
PR target/43799
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum3.C b/gcc/testsuite/g++.dg/cpp0x/enum3.C
index 5555ab2..5ae5e1a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum3.C
@@ -14,4 +14,14 @@ int main()
E e = E::elem;
if (!f (e == E::elem))
return 1;
+ if (!f (e <= E::elem))
+ return 1;
+ if (!f (e >= E::elem))
+ return 1;
+ if (f (e < E::elem))
+ return 1;
+ if (f (e > E::elem))
+ return 1;
+ if (f (e != E::elem))
+ return 1;
}