This revision was automatically updated to reflect the committed changes. Closed by commit rGf508d9b1d4fa: [clang][Interp] Don't create global variables more than once (authored by tbaeder).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147535/new/ https://reviews.llvm.org/D147535 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp Index: clang/lib/AST/Interp/ByteCodeExprGen.cpp =================================================================== --- clang/lib/AST/Interp/ByteCodeExprGen.cpp +++ clang/lib/AST/Interp/ByteCodeExprGen.cpp @@ -1562,7 +1562,11 @@ std::optional<PrimType> VarT = classify(VD->getType()); if (shouldBeGloballyIndexed(VD)) { - std::optional<unsigned> GlobalIndex = P.getOrCreateGlobal(VD, Init); + // We've already seen and initialized this global. + if (P.getGlobal(VD)) + return true; + + std::optional<unsigned> GlobalIndex = P.createGlobal(VD, Init); if (!GlobalIndex) return this->bail(VD);
Index: clang/lib/AST/Interp/ByteCodeExprGen.cpp =================================================================== --- clang/lib/AST/Interp/ByteCodeExprGen.cpp +++ clang/lib/AST/Interp/ByteCodeExprGen.cpp @@ -1562,7 +1562,11 @@ std::optional<PrimType> VarT = classify(VD->getType()); if (shouldBeGloballyIndexed(VD)) { - std::optional<unsigned> GlobalIndex = P.getOrCreateGlobal(VD, Init); + // We've already seen and initialized this global. + if (P.getGlobal(VD)) + return true; + + std::optional<unsigned> GlobalIndex = P.createGlobal(VD, Init); if (!GlobalIndex) return this->bail(VD);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits