diff options
Diffstat (limited to 'lib/AST/ExprConstant.cpp')
-rw-r--r-- | lib/AST/ExprConstant.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/AST/ExprConstant.cpp b/lib/AST/ExprConstant.cpp index 2844ab4f36..7d281494d6 100644 --- a/lib/AST/ExprConstant.cpp +++ b/lib/AST/ExprConstant.cpp @@ -187,14 +187,14 @@ static bool EvaluateLValue(const Expr* E, APValue& Result, EvalInfo &Info) { APValue LValueExprEvaluator::VisitDeclRefExpr(DeclRefExpr *E) { - if (!E->hasGlobalStorage()) - return APValue(); - if (isa<FunctionDecl>(E->getDecl())) { return APValue(E, 0); } else if (VarDecl* VD = dyn_cast<VarDecl>(E->getDecl())) { + if (!VD->hasGlobalStorage()) + return APValue(); if (!VD->getType()->isReferenceType()) return APValue(E, 0); + // FIXME: Check whether VD might be overridden! if (VD->getInit()) return Visit(VD->getInit()); } |