summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ExprConstant.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2011-11-16 17:22:48 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2011-11-16 17:22:48 +0000
commit10f4d06b81d4457b2742f3303aa8c1a7afd63df2 (patch)
tree8f4ef03906bb7379298fd6847bb1f447fe048403 /clang/lib/AST/ExprConstant.cpp
parent0ca7ce389c5b721bb2add92333a237ae71923c0a (diff)
downloadbcm5719-llvm-10f4d06b81d4457b2742f3303aa8c1a7afd63df2.tar.gz
bcm5719-llvm-10f4d06b81d4457b2742f3303aa8c1a7afd63df2.zip
PR11391: Don't try to evaluate the LHS of a _Complex assignment as an rvalue.
llvm-svn: 144799
Diffstat (limited to 'clang/lib/AST/ExprConstant.cpp')
-rw-r--r--clang/lib/AST/ExprConstant.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp
index 699d81715e3..f461ec64290 100644
--- a/clang/lib/AST/ExprConstant.cpp
+++ b/clang/lib/AST/ExprConstant.cpp
@@ -3695,10 +3695,14 @@ bool ComplexExprEvaluator::VisitCastExpr(const CastExpr *E) {
}
bool ComplexExprEvaluator::VisitBinaryOperator(const BinaryOperator *E) {
+ if (E->isPtrMemOp() || E->isAssignmentOp())
+ return ExprEvaluatorBaseTy::VisitBinaryOperator(E);
+
if (E->getOpcode() == BO_Comma) {
VisitIgnoredValue(E->getLHS());
return Visit(E->getRHS());
}
+
if (!Visit(E->getLHS()))
return false;
OpenPOWER on IntegriCloud