diff options
author | Jason Merrill <jason@redhat.com> | 2010-05-04 15:01:13 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2010-05-04 15:01:13 -0400 |
commit | b5c0a77ec9b02f51b566ffbca83d02333932c064 (patch) | |
tree | db58446a6947d6ffb82e2f1d5daf1ac255f6569f /gcc | |
parent | 13917ae3b9147868e0a2123522dd04adc33768ba (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/enum3.C | 10 |
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; } |