|
@@ -30,7 +30,7 @@ TEST(DebugTypeODRUniquingTest, getODRType) {
|
|
|
// Without a type map, this should return null.
|
|
|
EXPECT_FALSE(DICompositeType::getODRType(
|
|
|
Context, UUID, dwarf::DW_TAG_class_type, nullptr, nullptr, 0, nullptr,
|
|
|
- nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr));
|
|
|
+ nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr, nullptr));
|
|
|
|
|
|
// Enable the mapping. There still shouldn't be a type.
|
|
|
Context.enableDebugTypeODRUniquing();
|
|
@@ -39,7 +39,7 @@ TEST(DebugTypeODRUniquingTest, getODRType) {
|
|
|
// Create some ODR-uniqued type.
|
|
|
auto &CT = *DICompositeType::getODRType(
|
|
|
Context, UUID, dwarf::DW_TAG_class_type, nullptr, nullptr, 0, nullptr,
|
|
|
- nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr);
|
|
|
+ nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr, nullptr);
|
|
|
EXPECT_EQ(UUID.getString(), CT.getIdentifier());
|
|
|
|
|
|
// Check that we get it back, even if we change a field.
|
|
@@ -47,12 +47,12 @@ TEST(DebugTypeODRUniquingTest, getODRType) {
|
|
|
EXPECT_EQ(&CT, DICompositeType::getODRType(
|
|
|
Context, UUID, dwarf::DW_TAG_class_type, nullptr, nullptr,
|
|
|
0, nullptr, nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0,
|
|
|
- nullptr, nullptr));
|
|
|
+ nullptr, nullptr, nullptr));
|
|
|
EXPECT_EQ(&CT,
|
|
|
DICompositeType::getODRType(
|
|
|
Context, UUID, dwarf::DW_TAG_class_type,
|
|
|
MDString::get(Context, "name"), nullptr, 0, nullptr, nullptr, 0,
|
|
|
- 0, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr));
|
|
|
+ 0, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr, nullptr));
|
|
|
|
|
|
// Check that it's discarded with the type map.
|
|
|
Context.disableDebugTypeODRUniquing();
|
|
@@ -71,32 +71,32 @@ TEST(DebugTypeODRUniquingTest, buildODRType) {
|
|
|
MDString &UUID = *MDString::get(Context, "Type");
|
|
|
auto &CT = *DICompositeType::buildODRType(
|
|
|
Context, UUID, dwarf::DW_TAG_class_type, nullptr, nullptr, 0, nullptr,
|
|
|
- nullptr, 0, 0, 0, DINode::FlagFwdDecl, nullptr, 0, nullptr, nullptr);
|
|
|
+ nullptr, 0, 0, 0, DINode::FlagFwdDecl, nullptr, 0, nullptr, nullptr, nullptr);
|
|
|
EXPECT_EQ(&CT, DICompositeType::getODRTypeIfExists(Context, UUID));
|
|
|
EXPECT_EQ(dwarf::DW_TAG_class_type, CT.getTag());
|
|
|
|
|
|
// Update with another forward decl. This should be a no-op.
|
|
|
EXPECT_EQ(&CT, DICompositeType::buildODRType(
|
|
|
Context, UUID, dwarf::DW_TAG_structure_type, nullptr, nullptr, 0, nullptr,
|
|
|
- nullptr, 0, 0, 0, DINode::FlagFwdDecl, nullptr, 0, nullptr, nullptr));
|
|
|
+ nullptr, 0, 0, 0, DINode::FlagFwdDecl, nullptr, 0, nullptr, nullptr, nullptr));
|
|
|
EXPECT_EQ(dwarf::DW_TAG_class_type, CT.getTag());
|
|
|
|
|
|
// Update with a definition. This time we should see a change.
|
|
|
EXPECT_EQ(&CT, DICompositeType::buildODRType(
|
|
|
Context, UUID, dwarf::DW_TAG_structure_type, nullptr,
|
|
|
nullptr, 0, nullptr, nullptr, 0, 0, 0, DINode::FlagZero,
|
|
|
- nullptr, 0, nullptr, nullptr));
|
|
|
+ nullptr, 0, nullptr, nullptr, nullptr));
|
|
|
EXPECT_EQ(dwarf::DW_TAG_structure_type, CT.getTag());
|
|
|
|
|
|
// Further updates should be ignored.
|
|
|
EXPECT_EQ(&CT, DICompositeType::buildODRType(
|
|
|
Context, UUID, dwarf::DW_TAG_class_type, nullptr, nullptr, 0, nullptr,
|
|
|
- nullptr, 0, 0, 0, DINode::FlagFwdDecl, nullptr, 0, nullptr, nullptr));
|
|
|
+ nullptr, 0, 0, 0, DINode::FlagFwdDecl, nullptr, 0, nullptr, nullptr, nullptr));
|
|
|
EXPECT_EQ(dwarf::DW_TAG_structure_type, CT.getTag());
|
|
|
EXPECT_EQ(&CT, DICompositeType::buildODRType(
|
|
|
Context, UUID, dwarf::DW_TAG_class_type, nullptr, nullptr,
|
|
|
0, nullptr, nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0,
|
|
|
- nullptr, nullptr));
|
|
|
+ nullptr, nullptr, nullptr));
|
|
|
EXPECT_EQ(dwarf::DW_TAG_structure_type, CT.getTag());
|
|
|
}
|
|
|
|
|
@@ -108,7 +108,7 @@ TEST(DebugTypeODRUniquingTest, buildODRTypeFields) {
|
|
|
MDString &UUID = *MDString::get(Context, "UUID");
|
|
|
auto &CT = *DICompositeType::buildODRType(
|
|
|
Context, UUID, 0, nullptr, nullptr, 0, nullptr, nullptr, 0, 0, 0,
|
|
|
- DINode::FlagFwdDecl, nullptr, 0, nullptr, nullptr);
|
|
|
+ DINode::FlagFwdDecl, nullptr, 0, nullptr, nullptr, nullptr);
|
|
|
|
|
|
// Create macros for running through all the fields except Identifier and Flags.
|
|
|
#define FOR_EACH_MDFIELD() \
|
|
@@ -141,7 +141,7 @@ TEST(DebugTypeODRUniquingTest, buildODRTypeFields) {
|
|
|
DICompositeType::buildODRType(
|
|
|
Context, UUID, Tag, Name, File, Line, Scope, BaseType,
|
|
|
SizeInBits, AlignInBits, OffsetInBits, DINode::FlagArtificial,
|
|
|
- Elements, RuntimeLang, VTableHolder, TemplateParams));
|
|
|
+ Elements, RuntimeLang, VTableHolder, TemplateParams, nullptr));
|
|
|
|
|
|
// Confirm that all the right fields got updated.
|
|
|
#define DO_FOR_FIELD(X) EXPECT_EQ(X, CT.getRaw##X());
|