aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/IR/MetadataTest.cpp
diff options
context:
space:
mode:
authorYonghong Song <yhs@fb.com>2021-07-19 09:33:55 -0700
committerYonghong Song <yhs@fb.com>2021-08-26 10:03:44 -0700
commit30c288489ae51a3e0819241f367eeae6df2b09e7 (patch)
treeac633c6960ad10e6463c338b71ce78924c498d19 /llvm/unittests/IR/MetadataTest.cpp
parentbe19aee4b26ea1e8672c61b1cfd520a5f8d9ba0e (diff)
downloadllvm-30c288489ae51a3e0819241f367eeae6df2b09e7.zip
llvm-30c288489ae51a3e0819241f367eeae6df2b09e7.tar.gz
llvm-30c288489ae51a3e0819241f367eeae6df2b09e7.tar.bz2
[DebugInfo] generate btf_tag annotations for DIGlobalVariable
Generate btf_tag annotations for DIGlobalVariable. A field "annotations" is introduced to DIGlobalVariable, and annotations are represented as an DINodeArray, similar to DIComposite elements. The following example illustrates how annotations are encoded in IR: distinct !DIGlobalVariable(..., annotations: !10) !10 = !{!11, !12} !11 = !{!"btf_tag", !"a"} !12 = !{!"btf_tag", !"b"} Differential Revision: https://reviews.llvm.org/D106619
Diffstat (limited to 'llvm/unittests/IR/MetadataTest.cpp')
-rw-r--r--llvm/unittests/IR/MetadataTest.cpp35
1 files changed, 20 insertions, 15 deletions
diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp
index 838e273..d500823 100644
--- a/llvm/unittests/IR/MetadataTest.cpp
+++ b/llvm/unittests/IR/MetadataTest.cpp
@@ -2574,7 +2574,8 @@ TEST_F(DIGlobalVariableTest, get) {
auto *N = DIGlobalVariable::get(
Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
- IsDefinition, StaticDataMemberDeclaration, templateParams, AlignInBits);
+ IsDefinition, StaticDataMemberDeclaration, templateParams, AlignInBits,
+ nullptr);
EXPECT_EQ(dwarf::DW_TAG_variable, N->getTag());
EXPECT_EQ(Scope, N->getScope());
@@ -2591,52 +2592,54 @@ TEST_F(DIGlobalVariableTest, get) {
EXPECT_EQ(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File,
Line, Type, IsLocalToUnit, IsDefinition,
StaticDataMemberDeclaration,
- templateParams, AlignInBits));
+ templateParams, AlignInBits, nullptr));
EXPECT_NE(N, DIGlobalVariable::get(
Context, getSubprogram(), Name, LinkageName, File, Line,
Type, IsLocalToUnit, IsDefinition,
- StaticDataMemberDeclaration, templateParams, AlignInBits));
+ StaticDataMemberDeclaration, templateParams, AlignInBits,
+ nullptr));
EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, "other", LinkageName, File,
Line, Type, IsLocalToUnit, IsDefinition,
StaticDataMemberDeclaration,
- templateParams, AlignInBits));
+ templateParams, AlignInBits, nullptr));
EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, "other", File, Line,
Type, IsLocalToUnit, IsDefinition,
StaticDataMemberDeclaration,
- templateParams, AlignInBits));
+ templateParams, AlignInBits, nullptr));
EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName,
getFile(), Line, Type, IsLocalToUnit,
IsDefinition, StaticDataMemberDeclaration,
- templateParams, AlignInBits));
+ templateParams, AlignInBits, nullptr));
EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File,
Line + 1, Type, IsLocalToUnit,
IsDefinition, StaticDataMemberDeclaration,
- templateParams, AlignInBits));
+ templateParams, AlignInBits, nullptr));
EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File,
Line, getDerivedType(), IsLocalToUnit,
IsDefinition, StaticDataMemberDeclaration,
- templateParams, AlignInBits));
+ templateParams, AlignInBits, nullptr));
EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File,
Line, Type, !IsLocalToUnit, IsDefinition,
StaticDataMemberDeclaration,
- templateParams, AlignInBits));
+ templateParams, AlignInBits, nullptr));
EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File,
Line, Type, IsLocalToUnit, !IsDefinition,
StaticDataMemberDeclaration,
- templateParams, AlignInBits));
+ templateParams, AlignInBits, nullptr));
EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File,
Line, Type, IsLocalToUnit, IsDefinition,
cast<DIDerivedType>(getDerivedType()),
- templateParams, AlignInBits));
+ templateParams, AlignInBits, nullptr));
EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File,
Line, Type, IsLocalToUnit, IsDefinition,
StaticDataMemberDeclaration, nullptr,
- AlignInBits));
+ AlignInBits, nullptr));
EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File,
Line, Type, IsLocalToUnit, IsDefinition,
StaticDataMemberDeclaration,
- templateParams, (AlignInBits << 1)));
+ templateParams, (AlignInBits << 1),
+ nullptr));
TempDIGlobalVariable Temp = N->clone();
EXPECT_EQ(N, MDNode::replaceWithUniqued(std::move(Temp)));
@@ -2662,10 +2665,12 @@ TEST_F(DIGlobalVariableExpressionTest, get) {
auto *Var = DIGlobalVariable::get(
Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
- IsDefinition, StaticDataMemberDeclaration, templateParams, AlignInBits);
+ IsDefinition, StaticDataMemberDeclaration, templateParams, AlignInBits,
+ nullptr);
auto *Var2 = DIGlobalVariable::get(
Context, Scope, "other", LinkageName, File, Line, Type, IsLocalToUnit,
- IsDefinition, StaticDataMemberDeclaration, templateParams, AlignInBits);
+ IsDefinition, StaticDataMemberDeclaration, templateParams, AlignInBits,
+ nullptr);
auto *N = DIGlobalVariableExpression::get(Context, Var, Expr);
EXPECT_EQ(Var, N->getVariable());