diff options
Diffstat (limited to 'lib/Analysis/GRExprEngine.cpp')
-rw-r--r-- | lib/Analysis/GRExprEngine.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/Analysis/GRExprEngine.cpp b/lib/Analysis/GRExprEngine.cpp index ee7141782f..103ec145d4 100644 --- a/lib/Analysis/GRExprEngine.cpp +++ b/lib/Analysis/GRExprEngine.cpp @@ -445,7 +445,18 @@ void GRExprEngine::VisitLValue(Expr* Ex, NodeTy* Pred, NodeSet& Dst) { // Note that we have a similar problem for bitfields, since they don't // have "locations" in the sense that we can take their address. Dst.Add(Pred); - return; + return; + + case Stmt::CallExprClass: + case Stmt::ObjCMessageExprClass: + // Function calls and message expressions that return temporaries + // that are objects can be called in this context. We need to + // enhance our support of struct return values, so right now just + // do a regular visit. + assert (!Ex->getType()->isIntegerType()); + assert (!Ex->getType()->isPointerType()); + Visit(Ex, Pred, Dst); + } } |