[clang] [clang] Add dump() support for lvalue APValues (PR #124476)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Jan 26 11:20:36 PST 2025
Timm =?utf-8?q?Bäder?= <tbaeder at redhat.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/124476 at github.com>
================
@@ -710,10 +710,39 @@ void TextNodeDumper::Visit(const APValue &Value, QualType Ty) {
<< GetApproxValue(Value.getComplexFloatImag()) << 'i';
}
return;
- case APValue::LValue:
+ case APValue::LValue: {
(void)Context;
- OS << "LValue <todo>";
+ OS << "LValue Base=";
+ APValue::LValueBase B = Value.getLValueBase();
+ if (B.isNull())
+ OS << "null";
+ else if (const auto *BE = B.dyn_cast<const Expr *>()) {
+ OS << BE->getStmtClassName() << ' ';
+ dumpPointer(BE);
+ } else {
+ const auto *VDB = B.get<const ValueDecl *>();
+ OS << VDB->getDeclKindName() << "Decl";
+ dumpPointer(VDB);
+ }
+ OS << ", Null=" << Value.isNullPointer()
+ << ", Offset=" << Value.getLValueOffset().getQuantity()
+ << ", HasPath=" << Value.hasLValuePath();
+ if (Value.hasLValuePath()) {
+ OS << ", PathLength=" << Value.getLValuePath().size();
+ OS << ", Path=(";
+ bool First = true;
+ for (const auto &PathEntry : Value.getLValuePath()) {
+ // We're printing all entries as array indices because don't have the
+ // type information here to do anything else.
+ OS << PathEntry.getAsArrayIndex();
+ if (First && Value.getLValuePath().size() > 1)
+ OS << ", ";
+ First = false;
----------------
cor3ntin wrote:
Can you use `ListSeparator` here?
https://github.com/llvm/llvm-project/pull/124476
More information about the cfe-commits
mailing list