[clang] [clang] Implement dump() for AddrLabelDiff APValues (PR #169505)
Timm Baeder via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 25 07:41:34 PST 2025
https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/169505
None
>From 9d4e98f389ea2a1c676c51ae670fb1def66f8292 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timm=20B=C3=A4der?= <tbaeder at redhat.com>
Date: Tue, 25 Nov 2025 16:40:24 +0100
Subject: [PATCH] [clang] Implement dump() for AddrLabelDiff APValues
---
clang/lib/AST/TextNodeDumper.cpp | 5 ++++-
.../test/AST/ast-dump-APValue-addrlabeldiff.c | 22 +++++++++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
create mode 100644 clang/test/AST/ast-dump-APValue-addrlabeldiff.c
diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp
index 41aebdb8d2f1b..7bc0404db1bee 100644
--- a/clang/lib/AST/TextNodeDumper.cpp
+++ b/clang/lib/AST/TextNodeDumper.cpp
@@ -850,7 +850,10 @@ void TextNodeDumper::Visit(const APValue &Value, QualType Ty) {
return;
}
case APValue::AddrLabelDiff:
- OS << "AddrLabelDiff <todo>";
+ OS << "AddrLabelDiff ";
+ OS << "&&" << Value.getAddrLabelDiffLHS()->getLabel()->getName();
+ OS << " - ";
+ OS << "&&" << Value.getAddrLabelDiffRHS()->getLabel()->getName();
return;
}
llvm_unreachable("Unknown APValue kind!");
diff --git a/clang/test/AST/ast-dump-APValue-addrlabeldiff.c b/clang/test/AST/ast-dump-APValue-addrlabeldiff.c
new file mode 100644
index 0000000000000..481098eabedb9
--- /dev/null
+++ b/clang/test/AST/ast-dump-APValue-addrlabeldiff.c
@@ -0,0 +1,22 @@
+// Test without serialization:
+// RUN: %clang_cc1 -std=c23 -ast-dump %s -ast-dump-filter Test \
+// RUN: | FileCheck --strict-whitespace --match-full-lines %s
+//
+// Test with serialization:
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -std=c23 -emit-pch -o %t %s
+// RUN: %clang_cc1 -x c -triple x86_64-unknown-unknown -Wno-unused-value -std=c23 \
+// RUN: -include-pch %t -ast-dump-all -ast-dump-filter Test /dev/null \
+// RUN: | sed -e "s/ <undeserialized declarations>//" -e "s/ imported//" \
+// RUN: | FileCheck --strict-whitespace --match-full-lines %s
+
+
+// CHECK: | |-value: AddrLabelDiff &&l2 - &&l1
+int Test(void) {
+ constexpr char ar = &&l2 - &&l1;
+l1:
+ return 10;
+l2:
+ return 11;
+}
+
+
More information about the cfe-commits
mailing list