diff --git a/clang/lib/AST/Interp/EvalEmitter.cpp b/clang/lib/AST/Interp/EvalEmitter.cpp index d90cf1812bb77..9cae25f5c4d64 100644 --- a/clang/lib/AST/Interp/EvalEmitter.cpp +++ b/clang/lib/AST/Interp/EvalEmitter.cpp @@ -47,6 +47,9 @@ EvaluationResult EvalEmitter::interpretExpr(const Expr *E, EvaluationResult EvalEmitter::interpretDecl(const VarDecl *VD, bool CheckFullyInitialized) { this->CheckFullyInitialized = CheckFullyInitialized; + this->ConvertResultToRValue = + VD->getAnyInitializer() && + (VD->getAnyInitializer()->getType()->isAnyComplexType()); EvalResult.setSource(VD); if (!this->visitDecl(VD) && EvalResult.empty())