aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
diff options
context:
space:
mode:
authorYonghong Song <yhs@fb.com>2021-07-19 08:33:01 -0700
committerYonghong Song <yhs@fb.com>2021-08-26 08:24:19 -0700
commitd383df32c0d5bcdc8c160ecdd7174399aa3c5395 (patch)
tree49c61cd487506fc9ef79eb410b948e77a799f5de /llvm/lib/Bitcode/Reader/MetadataLoader.cpp
parentc9066c5d37755c7d9049dd1fb7bd365bdef6155f (diff)
downloadllvm-d383df32c0d5bcdc8c160ecdd7174399aa3c5395.zip
llvm-d383df32c0d5bcdc8c160ecdd7174399aa3c5395.tar.gz
llvm-d383df32c0d5bcdc8c160ecdd7174399aa3c5395.tar.bz2
[DebugInfo] generate btf_tag annotations for DISubprogram types
Generate btf_tag annotations for DISubprogram types. A field "annotations" is introduced to DISubprogram, and annotations are represented as an DINodeArray, similar to DIComposite elements. The following example illustrates how annotations are encoded in IR: distinct !DISubprogram(..., annotations: !10) !10 = !{!11, !12} !11 = !{!"btf_tag", !"a"} !12 = !{!"btf_tag", !"b"} Differential Revision: https://reviews.llvm.org/D106618
Diffstat (limited to 'llvm/lib/Bitcode/Reader/MetadataLoader.cpp')
-rw-r--r--llvm/lib/Bitcode/Reader/MetadataLoader.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
index 3343efd..9a306fa 100644
--- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
+++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
@@ -1693,6 +1693,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
bool HasFn = false;
bool HasThisAdj = true;
bool HasThrownTypes = true;
+ bool HasAnnotations = false;
unsigned OffsetA = 0;
unsigned OffsetB = 0;
if (!HasSPFlags) {
@@ -1704,6 +1705,8 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
}
HasThisAdj = Record.size() >= 20;
HasThrownTypes = Record.size() >= 21;
+ } else {
+ HasAnnotations = Record.size() >= 19;
}
Metadata *CUorFn = getMDOrNull(Record[12 + OffsetB]);
DISubprogram *SP = GET_OR_DISTINCT(
@@ -1726,7 +1729,9 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
getMDOrNull(Record[14 + OffsetB]), // declaration
getMDOrNull(Record[15 + OffsetB]), // retainedNodes
HasThrownTypes ? getMDOrNull(Record[17 + OffsetB])
- : nullptr // thrownTypes
+ : nullptr, // thrownTypes
+ HasAnnotations ? getMDOrNull(Record[18 + OffsetB])
+ : nullptr // annotations
));
MetadataList.assignValue(SP, NextMetadataNo);
NextMetadataNo++;