@@ -30,7 +30,7 @@ TEST(DebugTypeODRUniquingTest, getODRType) {
30
30
// Without a type map, this should return null.
31
31
EXPECT_FALSE (DICompositeType::getODRType (
32
32
Context, UUID, dwarf::DW_TAG_class_type, nullptr , nullptr , 0 , nullptr ,
33
- nullptr , 0 , 0 , 0 , DINode::FlagZero, nullptr , 0 , nullptr , nullptr , nullptr ,
33
+ nullptr , 0 , 0 , 0 , 0 , DINode::FlagZero, nullptr , 0 , nullptr , nullptr , nullptr ,
34
34
nullptr , nullptr , nullptr , nullptr , nullptr ));
35
35
36
36
// Enable the mapping. There still shouldn't be a type.
@@ -40,7 +40,7 @@ TEST(DebugTypeODRUniquingTest, getODRType) {
40
40
// Create some ODR-uniqued type.
41
41
auto &CT = *DICompositeType::getODRType (
42
42
Context, UUID, dwarf::DW_TAG_class_type, nullptr , nullptr , 0 , nullptr ,
43
- nullptr , 0 , 0 , 0 , DINode::FlagZero, nullptr , 0 , nullptr , nullptr , nullptr ,
43
+ nullptr , 0 , 0 , 0 , 0 , DINode::FlagZero, nullptr , 0 , nullptr , nullptr , nullptr ,
44
44
nullptr , nullptr , nullptr , nullptr , nullptr );
45
45
EXPECT_EQ (UUID.getString (), CT.getIdentifier ());
46
46
@@ -49,13 +49,13 @@ TEST(DebugTypeODRUniquingTest, getODRType) {
49
49
EXPECT_EQ (&CT,
50
50
DICompositeType::getODRType (
51
51
Context, UUID, dwarf::DW_TAG_class_type, nullptr , nullptr , 0 ,
52
- nullptr , nullptr , 0 , 0 , 0 , DINode::FlagZero, nullptr , 0 ,
52
+ nullptr , nullptr , 0 , 0 , 0 , 0 , DINode::FlagZero, nullptr , 0 ,
53
53
nullptr , nullptr , nullptr , nullptr , nullptr , nullptr , nullptr ,
54
54
nullptr ));
55
55
EXPECT_EQ (&CT, DICompositeType::getODRType (
56
56
Context, UUID, dwarf::DW_TAG_class_type,
57
57
MDString::get (Context, " name" ), nullptr , 0 , nullptr ,
58
- nullptr , 0 , 0 , 0 , DINode::FlagZero, nullptr , 0 , nullptr ,
58
+ nullptr , 0 , 0 , 0 , 0 , DINode::FlagZero, nullptr , 0 , nullptr ,
59
59
nullptr , nullptr , nullptr , nullptr , nullptr , nullptr ,
60
60
nullptr ));
61
61
@@ -76,41 +76,41 @@ TEST(DebugTypeODRUniquingTest, buildODRType) {
76
76
MDString &UUID = *MDString::get (Context, " Type" );
77
77
auto &CT = *DICompositeType::buildODRType (
78
78
Context, UUID, dwarf::DW_TAG_class_type, nullptr , nullptr , 0 , nullptr ,
79
- nullptr , 0 , 0 , 0 , DINode::FlagFwdDecl, nullptr , 0 , nullptr , nullptr ,
79
+ nullptr , 0 , 0 , 0 , 0 , DINode::FlagFwdDecl, nullptr , 0 , nullptr , nullptr ,
80
80
nullptr , nullptr , nullptr , nullptr , nullptr , nullptr );
81
81
EXPECT_EQ (&CT, DICompositeType::getODRTypeIfExists (Context, UUID));
82
82
EXPECT_EQ (dwarf::DW_TAG_class_type, CT.getTag ());
83
83
84
84
// Update with another forward decl. This should be a no-op.
85
85
EXPECT_EQ (&CT, DICompositeType::buildODRType (
86
86
Context, UUID, dwarf::DW_TAG_class_type, nullptr , nullptr ,
87
- 0 , nullptr , nullptr , 0 , 0 , 0 , DINode::FlagFwdDecl, nullptr ,
87
+ 0 , nullptr , nullptr , 0 , 0 , 0 , 0 , DINode::FlagFwdDecl, nullptr ,
88
88
0 , nullptr , nullptr , nullptr , nullptr , nullptr , nullptr ,
89
89
nullptr , nullptr ));
90
90
91
91
EXPECT_FALSE (DICompositeType::buildODRType (
92
92
Context, UUID, dwarf::DW_TAG_structure_type, nullptr , nullptr , 0 , nullptr ,
93
- nullptr , 0 , 0 , 0 , DINode::FlagFwdDecl, nullptr , 0 , nullptr , nullptr ,
93
+ nullptr , 0 , 0 , 0 , 0 , DINode::FlagFwdDecl, nullptr , 0 , nullptr , nullptr ,
94
94
nullptr , nullptr , nullptr , nullptr , nullptr , nullptr ));
95
95
96
96
// Update with a definition. This time we should see a change.
97
97
EXPECT_EQ (&CT, DICompositeType::buildODRType (
98
98
Context, UUID, dwarf::DW_TAG_class_type, nullptr , nullptr ,
99
- 0 , nullptr , nullptr , 0 , 0 , 0 , DINode::FlagZero, nullptr , 0 ,
99
+ 0 , nullptr , nullptr , 0 , 0 , 0 , 0 , DINode::FlagZero, nullptr , 0 ,
100
100
nullptr , nullptr , nullptr , nullptr , nullptr , nullptr ,
101
101
nullptr , nullptr ));
102
102
EXPECT_FALSE (CT.isForwardDecl ());
103
103
104
104
// Further updates should be ignored.
105
105
EXPECT_EQ (&CT, DICompositeType::buildODRType (
106
106
Context, UUID, dwarf::DW_TAG_class_type, nullptr , nullptr ,
107
- 0 , nullptr , nullptr , 0 , 0 , 0 , DINode::FlagFwdDecl, nullptr ,
107
+ 0 , nullptr , nullptr , 0 , 0 , 0 , 0 , DINode::FlagFwdDecl, nullptr ,
108
108
0 , nullptr , nullptr , nullptr , nullptr , nullptr , nullptr ,
109
109
nullptr , nullptr ));
110
110
EXPECT_FALSE (CT.isForwardDecl ());
111
111
EXPECT_EQ (&CT, DICompositeType::buildODRType (
112
112
Context, UUID, dwarf::DW_TAG_class_type, nullptr , nullptr ,
113
- 111u , nullptr , nullptr , 0 , 0 , 0 , DINode::FlagZero, nullptr ,
113
+ 111u , nullptr , nullptr , 0 , 0 , 0 , 0 , DINode::FlagZero, nullptr ,
114
114
0 , nullptr , nullptr , nullptr , nullptr , nullptr , nullptr ,
115
115
nullptr , nullptr ));
116
116
EXPECT_NE (111u , CT.getLine ());
@@ -123,7 +123,7 @@ TEST(DebugTypeODRUniquingTest, buildODRTypeFields) {
123
123
// Build an ODR type that's a forward decl with no other fields set.
124
124
MDString &UUID = *MDString::get (Context, " UUID" );
125
125
auto &CT = *DICompositeType::buildODRType (
126
- Context, UUID, 0 , nullptr , nullptr , 0 , nullptr , nullptr , 0 , 0 , 0 ,
126
+ Context, UUID, 0 , nullptr , nullptr , 0 , nullptr , nullptr , 0 , 0 , 0 , 0 ,
127
127
DINode::FlagFwdDecl, nullptr , 0 , nullptr , nullptr , nullptr , nullptr ,
128
128
nullptr , nullptr , nullptr , nullptr );
129
129
@@ -141,6 +141,7 @@ TEST(DebugTypeODRUniquingTest, buildODRTypeFields) {
141
141
DO_FOR_FIELD (SizeInBits) \
142
142
DO_FOR_FIELD (AlignInBits) \
143
143
DO_FOR_FIELD (OffsetInBits) \
144
+ DO_FOR_FIELD (NumExtraInhabitants) \
144
145
DO_FOR_FIELD (RuntimeLang)
145
146
146
147
// Create all the fields.
@@ -153,12 +154,12 @@ TEST(DebugTypeODRUniquingTest, buildODRTypeFields) {
153
154
#undef DO_FOR_FIELD
154
155
155
156
// Replace all the fields with new values that are distinct from each other.
156
- EXPECT_EQ (&CT,
157
- DICompositeType::buildODRType (
158
- Context, UUID, 0 , Name, File, Line, Scope, BaseType, SizeInBits ,
159
- AlignInBits, OffsetInBits, DINode::FlagArtificial, Elements,
160
- RuntimeLang, VTableHolder, TemplateParams, nullptr , nullptr ,
161
- nullptr , nullptr , nullptr , nullptr ));
157
+ EXPECT_EQ (&CT, DICompositeType::buildODRType (
158
+ Context, UUID, 0 , Name, File, Line, Scope, BaseType,
159
+ SizeInBits, AlignInBits, OffsetInBits, NumExtraInhabitants ,
160
+ DINode::FlagArtificial, Elements, RuntimeLang ,
161
+ VTableHolder, TemplateParams, nullptr , nullptr , nullptr ,
162
+ nullptr , nullptr , nullptr ));
162
163
163
164
// Confirm that all the right fields got updated.
164
165
#define DO_FOR_FIELD (X ) EXPECT_EQ(X, CT.getRaw##X());
0 commit comments