[clang] b1e97d6 - Unwrap CountAttributed for debug info (#86017)

via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 22 15:26:38 PDT 2024


Author: Yeoul Na
Date: 2024-03-23T07:26:35+09:00
New Revision: b1e97d60bd5b1d3f994345caa4012ea11c2a0f62

URL: https://github.com/llvm/llvm-project/commit/b1e97d60bd5b1d3f994345caa4012ea11c2a0f62
DIFF: https://github.com/llvm/llvm-project/commit/b1e97d60bd5b1d3f994345caa4012ea11c2a0f62.diff

LOG: Unwrap CountAttributed for debug info (#86017)

Fix crash caused by 3eb9ff30959a670559bcba03d149d4c51bf7c9c9

Added: 
    clang/test/CodeGen/attr-counted-by-debug-info.c

Modified: 
    clang/lib/CodeGen/CGDebugInfo.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp
index 07ecaa81c47d84..7453ed14aef414 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -3463,6 +3463,9 @@ static QualType UnwrapTypeForDebugInfo(QualType T, const ASTContext &C) {
     case Type::BTFTagAttributed:
       T = cast<BTFTagAttributedType>(T)->getWrappedType();
       break;
+    case Type::CountAttributed:
+      T = cast<CountAttributedType>(T)->desugar();
+      break;
     case Type::Elaborated:
       T = cast<ElaboratedType>(T)->getNamedType();
       break;

diff  --git a/clang/test/CodeGen/attr-counted-by-debug-info.c b/clang/test/CodeGen/attr-counted-by-debug-info.c
new file mode 100644
index 00000000000000..a6c2b1382b796b
--- /dev/null
+++ b/clang/test/CodeGen/attr-counted-by-debug-info.c
@@ -0,0 +1,18 @@
+// RUN: %clang -emit-llvm -DCOUNTED_BY -S -g %s -o - | FileCheck %s
+// RUN: %clang -emit-llvm -S -g %s -o - | FileCheck %s
+
+#ifdef COUNTED_BY
+#define __counted_by(member)    __attribute__((__counted_by__(member)))
+#else
+#define __counted_by(member)
+#endif
+
+struct {
+  int num_counters;
+  long value[] __counted_by(num_counters);
+} agent_send_response_port_num;
+
+// CHECK: !DICompositeType(tag: DW_TAG_array_type, baseType: ![[BT:.*]], elements: ![[ELEMENTS:.*]])
+// CHECK: ![[BT]] = !DIBasicType(name: "long", size: {{.*}}, encoding: DW_ATE_signed)
+// CHECK: ![[ELEMENTS]] = !{![[COUNT:.*]]}
+// CHECK: ![[COUNT]] = !DISubrange(count: -1)
\ No newline at end of file


        


More information about the cfe-commits mailing list