[clang] 07bd3bb - [clang][bytecode][NFC] Improve Pointer::print()
Timm Bäder via cfe-commits
cfe-commits at lists.llvm.org
Sat Aug 17 23:56:37 PDT 2024
Author: Timm Bäder
Date: 2024-08-18T08:55:22+02:00
New Revision: 07bd3bb9b7eb34426a81de2b988f53f08611ab35
URL: https://github.com/llvm/llvm-project/commit/07bd3bb9b7eb34426a81de2b988f53f08611ab35
DIFF: https://github.com/llvm/llvm-project/commit/07bd3bb9b7eb34426a81de2b988f53f08611ab35.diff
LOG: [clang][bytecode][NFC] Improve Pointer::print()
Do not access PointeeStorage.BS.Pointee if we have a non-block pointer
and extend printing to handle function pointers as well.
Added:
Modified:
clang/lib/AST/ByteCode/Pointer.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/ByteCode/Pointer.cpp b/clang/lib/AST/ByteCode/Pointer.cpp
index 466e61666c76e9..e39459578a5f52 100644
--- a/clang/lib/AST/ByteCode/Pointer.cpp
+++ b/clang/lib/AST/ByteCode/Pointer.cpp
@@ -265,10 +265,10 @@ APValue Pointer::toAPValue(const ASTContext &ASTCtx) const {
}
void Pointer::print(llvm::raw_ostream &OS) const {
- OS << PointeeStorage.BS.Pointee << " (";
- if (isBlockPointer()) {
+ switch (StorageKind) {
+ case Storage::Block: {
const Block *B = PointeeStorage.BS.Pointee;
- OS << "Block) {";
+ OS << "(Block) " << B << " {";
if (isRoot())
OS << "rootptr(" << PointeeStorage.BS.Base << "), ";
@@ -284,11 +284,18 @@ void Pointer::print(llvm::raw_ostream &OS) const {
OS << B->getSize();
else
OS << "nullptr";
- } else {
- OS << "Int) {";
- OS << PointeeStorage.Int.Value << ", " << PointeeStorage.Int.Desc;
+ OS << "}";
+ } break;
+ case Storage::Int:
+ OS << "(Int) {";
+ OS << PointeeStorage.Int.Value << " + " << Offset << ", "
+ << PointeeStorage.Int.Desc;
+ OS << "}";
+ break;
+ case Storage::Fn:
+ OS << "(Fn) { " << asFunctionPointer().getFunction() << " + " << Offset
+ << " }";
}
- OS << "}";
}
std::string Pointer::toDiagnosticString(const ASTContext &Ctx) const {
More information about the cfe-commits
mailing list