[PATCH] D106616: [Clang][LLVM] generate btf_tag annotations for DIDerived types
Yonghong Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 20 11:38:51 PDT 2021
yonghong-song added a comment.
For
> (any chance have you measured/could you measure how much larger the bitcode for, say, an LLVM self-host Debug build gets with all these btf patches? (even without targeting/using btf, this is adding an extra field to lots of the debug info metadata, and I'd like to know whether that makes an observable difference in file size))
The following are some experiments:
$ cat t.c
#define __tag1 __attribute__((btf_tag("tag1")))
struct t { int a __tag1; };
struct t g;
compilation flag: clang -O2 -g -emit-llvm -c t.c -o t.bc
Without this patch (no field annotation in record members):
1904 bytes
With this patch (no field annotation in record members):
1904 bytes
With this patch (with above field annotation in record members):
1924 bytes
If I use the code below:
#define __tag1 __attribute__((btf_tag("tag1")))
#define __tag2 __attribute__((btf_tag("tag2")))
struct t { int a __tag1 __tag2; };
struct t g;
The IR:
!8 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !6, file: !3, line: 3, baseType: !9, size: 32, annotations: !10)
!10 = !{!11, !12}
!11 = !{!"btf_tag", !"tag1"}
!12 = !{!"btf_tag", !"tag2"}
I got 1936 bytes.
So the conclusion is:
- no overhead for bitcode size if NO annotations.
- moderate overhead for annotations. we expect btf_tag is only used in selective places.
================
Comment at: clang/lib/CodeGen/CGDebugInfo.cpp:1503-1504
+ llvm::DINodeArray Annotations = nullptr;
+ if (field->hasAttr<BTFTagAttr>())
+ Annotations = CollectBTFTagAnnotations(field);
+
----------------
dblaikie wrote:
> could the `hasAttr` test be sunk into the `CollectBTFTagAnnotations` function? (so it's not repeated at all the callers)
Good idea. Will change based on your suggestion.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106616/new/
https://reviews.llvm.org/D106616
More information about the llvm-commits
mailing list