Author: Timm Bäder Date: 2024-02-21T13:09:20+01:00 New Revision: b1080e187e91576ac6d44087f072583e101f0f51
URL: https://github.com/llvm/llvm-project/commit/b1080e187e91576ac6d44087f072583e101f0f51 DIFF: https://github.com/llvm/llvm-project/commit/b1080e187e91576ac6d44087f072583e101f0f51.diff LOG: [clang][Interp] Convert complex initializers to rvalues We internalle handle these via pointers, but we need to return them as RValues in initializers. Added: Modified: clang/lib/AST/Interp/EvalEmitter.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/Interp/EvalEmitter.cpp b/clang/lib/AST/Interp/EvalEmitter.cpp index d90cf1812bb774..9cae25f5c4d642 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()) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits