Author: Timm Bäder Date: 2024-06-27T19:24:35+02:00 New Revision: 61975cdf44a75917a738ca7fa9971b03f6d4fad8
URL: https://github.com/llvm/llvm-project/commit/61975cdf44a75917a738ca7fa9971b03f6d4fad8 DIFF: https://github.com/llvm/llvm-project/commit/61975cdf44a75917a738ca7fa9971b03f6d4fad8.diff LOG: [clang][Interp][NFC] Print global temporary value in Program::dump() There is quite a problem here, so print both the value we have in Program as well as the value from the LifetimeExtendedTemporaryDecl. Added: Modified: clang/lib/AST/Interp/Disasm.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/Interp/Disasm.cpp b/clang/lib/AST/Interp/Disasm.cpp index 0ab84d159c58b..8204fd1bc040c 100644 --- a/clang/lib/AST/Interp/Disasm.cpp +++ b/clang/lib/AST/Interp/Disasm.cpp @@ -25,6 +25,7 @@ #include "Program.h" #include "clang/AST/ASTDumperUtils.h" #include "clang/AST/DeclCXX.h" +#include "clang/AST/ExprCXX.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/Format.h" @@ -154,6 +155,19 @@ LLVM_DUMP_METHOD void Program::dump(llvm::raw_ostream &OS) const { OS << (GP.isInitialized() ? "initialized " : "uninitialized "); } Desc->dump(OS); + + if (Desc->IsTemporary) { + if (const auto *MTE = + dyn_cast_if_present<MaterializeTemporaryExpr>(Desc->asExpr()); + MTE && MTE->getLifetimeExtendedTemporaryDecl()) { + const APValue *V = MTE->getLifetimeExtendedTemporaryDecl()->getValue(); + if (V->isInt()) + OS << " (global temporary value: " << V->getInt() << ")"; + else + OS << " (huh?)"; + } + } + OS << "\n"; if (GP.isInitialized() && Desc->isPrimitive() && !Desc->isDummy()) { OS << " "; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits