[clang] [clang][Interp] Only evaluate the source array initialization of an `ArrayInitLoopExpr` once (PR #68039)

Timm Baeder via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 18 23:20:03 PDT 2023


================
@@ -847,7 +845,33 @@ template <class Emitter>
 bool ByteCodeExprGen<Emitter>::VisitOpaqueValueExpr(const OpaqueValueExpr *E) {
   if (Initializing)
     return this->visitInitializer(E->getSourceExpr());
-  return this->visit(E->getSourceExpr());
+
+  PrimType CacheVariableTy = classify(E).value_or(PT_Ptr);
----------------
tbaederr wrote:

Do you have a test case for the non-primitive code path here? If not, we should rather use `classifyPrim` and handle it when we see it in the wild.

https://github.com/llvm/llvm-project/pull/68039


More information about the cfe-commits mailing list