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

Reply via email to