summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-03-01 17:16:20 +0000
committerDouglas Gregor <dgregor@apple.com>2011-03-01 17:16:20 +0000
commit48e6bbffa135ac9eaf0d8df8a1ec06247e235d12 (patch)
treec534089b026bcf07a4b798e1eecb2cfd78759da1 /clang/lib/Sema
parent9760a666d603a814ce65c361f8d5eb6f0f64cfc7 (diff)
downloadbcm5719-llvm-48e6bbffa135ac9eaf0d8df8a1ec06247e235d12.tar.gz
bcm5719-llvm-48e6bbffa135ac9eaf0d8df8a1ec06247e235d12.zip
Implement comparison of C++0x scoped enumeration types. Fixes PR9333.
llvm-svn: 126752
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r--clang/lib/Sema/SemaExpr.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index ae0ed3e4f16..321e96f1e75 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -7024,6 +7024,12 @@ QualType Sema::CheckCompareOperands(Expr *&lex, Expr *&rex, SourceLocation Loc,
ImpCastExprToType(rex, T, CK_BitCast);
return ResultTy;
}
+
+ // Handle scoped enumeration types specifically, since they don't promote
+ // to integers.
+ if (lex->getType()->isEnumeralType() &&
+ Context.hasSameUnqualifiedType(lex->getType(), rex->getType()))
+ return ResultTy;
}
// Handle block pointer types.
@@ -7123,6 +7129,7 @@ QualType Sema::CheckCompareOperands(Expr *&lex, Expr *&rex, SourceLocation Loc,
ImpCastExprToType(lex, rType, CK_NullToPointer);
return ResultTy;
}
+
return InvalidOperands(Loc, lex, rex);
}
OpenPOWER on IntegriCloud