summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/Expr.cpp
diff options
context:
space:
mode:
authorNate Begeman <natebegeman@mac.com>2009-01-18 03:20:47 +0000
committerNate Begeman <natebegeman@mac.com>2009-01-18 03:20:47 +0000
commit2f2bdeb5dfeff7e8066ce51b372e841254cfb91e (patch)
tree21f30567e87f2a5edb77dcf5950f770dfc6e59b6 /clang/lib/AST/Expr.cpp
parent144aacd19ef6dc25755c69048d4cb3a4a383ae8a (diff)
downloadbcm5719-llvm-2f2bdeb5dfeff7e8066ce51b372e841254cfb91e.tar.gz
bcm5719-llvm-2f2bdeb5dfeff7e8066ce51b372e841254cfb91e.zip
Support evaluation of vector constant expressions, and codegen of same.
llvm-svn: 62455
Diffstat (limited to 'clang/lib/AST/Expr.cpp')
-rw-r--r--clang/lib/AST/Expr.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index 4dd06b924a2..03b49499ee2 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -487,6 +487,7 @@ Expr::isLvalueResult Expr::isLvalue(ASTContext &Ctx) const {
// An assignment expression [...] is not an lvalue.
return LV_InvalidExpression;
}
+ // FIXME: OverloadExprClass
case CallExprClass:
case CXXOperatorCallExprClass:
case CXXMemberCallExprClass: {
@@ -701,6 +702,10 @@ bool Expr::isConstantExpr(ASTContext &Ctx, SourceLocation *Loc) const {
break;
case StringLiteralClass:
return true;
+ case CompoundLiteralExprClass: {
+ const Expr *Exp = cast<CompoundLiteralExpr>(this)->getInitializer();
+ return Exp->isConstantExpr(Ctx, Loc);
+ }
case InitListExprClass: {
const InitListExpr *Exp = cast<InitListExpr>(this);
unsigned numInits = Exp->getNumInits();
OpenPOWER on IntegriCloud