Reland [DebugInfo] generate btf_tag annotations for DIComposite types
authorYonghong Song <yhs@fb.com>
Mon, 19 Jul 2021 06:43:48 +0000 (23:43 -0700)
committerYonghong Song <yhs@fb.com>
Fri, 20 Aug 2021 00:33:50 +0000 (17:33 -0700)
commit0b32dca12ef4d82af71f86a70c49806e5b81ead2
tree42c5d7d89e022d79d440f16e788a4559b8919610
parent3207ed196c75e464ad2fea2b1b7be515a619d57c
Reland [DebugInfo] generate btf_tag annotations for DIComposite types

Clang patch D106614 added attribute btf_tag support. This patch
generates btf_tag annotations for DIComposite types.
A field "annotations" is introduced to DIComposite, and the
annotations are represented as an DINodeArray, similar to
DIComposite elements. The following example illustrates
how annotations are encoded in IR:
  distinct !DICompositeType(..., annotations: !10)
  !10 = !{!11, !12}
  !11 = !{!"btf_tag", !"a"}
  !12 = !{!"btf_tag", !"b"}
Each btf_tag annotation is represented as a 2D array of
meta strings. Each record may have more than one
btf_tag annotations, as in the above example.

Reland with additional fixes for llvm/unittests/IR/DebugTypeODRUniquingTest.cpp.

Differential Revision: https://reviews.llvm.org/D106615
llvm/include/llvm/IR/DIBuilder.h
llvm/include/llvm/IR/DebugInfoMetadata.h
llvm/lib/AsmParser/LLParser.cpp
llvm/lib/Bitcode/Reader/MetadataLoader.cpp
llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
llvm/lib/IR/AsmWriter.cpp
llvm/lib/IR/DIBuilder.cpp
llvm/lib/IR/DebugInfoMetadata.cpp
llvm/lib/IR/LLVMContextImpl.h
llvm/test/Bitcode/attr-btf_tag-dicomposite.ll [new file with mode: 0644]
llvm/unittests/IR/DebugTypeODRUniquingTest.cpp