Expand Up
@@ -106,7 +106,7 @@ class MetadataTest : public testing::Test {
DIType *getDerivedType () {
return DIDerivedType::getDistinct (
Context, dwarf::DW_TAG_pointer_type, " " , nullptr , 0 , nullptr ,
getBasicType (" basictype" ), 1 , 2 , 0 , std::nullopt, DINode::FlagZero);
getBasicType (" basictype" ), 1 , 2 , 0 , std::nullopt, {}, DINode::FlagZero);
}
Constant *getConstant () {
return ConstantInt::get (Type::getInt32Ty (Context), Counter++);
Expand Down
Expand Up
@@ -461,7 +461,7 @@ TEST_F(MDNodeTest, PrintTree) {
auto *StructTy = cast<DICompositeType>(getCompositeType ());
DIType *PointerTy = DIDerivedType::getDistinct (
Context, dwarf::DW_TAG_pointer_type, " " , nullptr , 0 , nullptr , StructTy,
1 , 2 , 0 , std::nullopt, DINode::FlagZero);
1 , 2 , 0 , std::nullopt, {}, DINode::FlagZero);
StructTy->replaceElements (MDTuple::get (Context, PointerTy));
auto *Var = DILocalVariable::get (Context, Scope, " foo" , File,
Expand Down
Expand Up
@@ -1864,13 +1864,17 @@ TEST_F(DIDerivedTypeTest, get) {
DIType *BaseType = getBasicType (" basic" );
MDTuple *ExtraData = getTuple ();
unsigned DWARFAddressSpace = 8 ;
DIDerivedType::PtrAuthData PtrAuthData (1 , false , 1234 , true , true );
DIDerivedType::PtrAuthData PtrAuthData2 (1 , false , 1234 , true , false );
DINode::DIFlags Flags5 = static_cast <DINode::DIFlags>(5 );
DINode::DIFlags Flags4 = static_cast <DINode::DIFlags>(4 );
auto *N =
DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type, " something" , File,
1 , Scope, BaseType, 2 , 3 , 4 , DWARFAddressSpace, Flags5,
ExtraData);
auto *N = DIDerivedType::get (
Context, dwarf::DW_TAG_pointer_type, " something" , File, 1 , Scope,
BaseType, 2 , 3 , 4 , DWARFAddressSpace, std::nullopt, Flags5, ExtraData);
auto *N1 = DIDerivedType::get (Context, dwarf::DW_TAG_LLVM_ptrauth_type, " " ,
File, 1 , Scope, N, 2 , 3 , 4 , DWARFAddressSpace,
PtrAuthData, Flags5, ExtraData);
EXPECT_EQ (dwarf::DW_TAG_pointer_type, N->getTag ());
EXPECT_EQ (" something" , N->getName ());
EXPECT_EQ (File, N->getFile ());
Expand All
@@ -1881,53 +1885,73 @@ TEST_F(DIDerivedTypeTest, get) {
EXPECT_EQ (3u , N->getAlignInBits ());
EXPECT_EQ (4u , N->getOffsetInBits ());
EXPECT_EQ (DWARFAddressSpace, *N->getDWARFAddressSpace ());
EXPECT_EQ (std::nullopt, N->getPtrAuthData ());
EXPECT_EQ (PtrAuthData, N1->getPtrAuthData ());
EXPECT_NE (PtrAuthData2, N1->getPtrAuthData ());
EXPECT_EQ (5u , N->getFlags ());
EXPECT_EQ (ExtraData, N->getExtraData ());
EXPECT_EQ (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type,
" something" , File, 1 , Scope, BaseType, 2 , 3 ,
4 , DWARFAddressSpace, Flags5, ExtraData));
4 , DWARFAddressSpace, std::nullopt, Flags5,
ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_reference_type,
" something" , File, 1 , Scope, BaseType, 2 , 3 ,
4 , DWARFAddressSpace, Flags5, ExtraData));
4 , DWARFAddressSpace, std::nullopt, Flags5,
ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type, " else" ,
File, 1 , Scope, BaseType, 2 , 3 ,
4 , DWARFAddressSpace, Flags5, ExtraData));
File, 1 , Scope, BaseType, 2 , 3 , 4 ,
DWARFAddressSpace, std::nullopt, Flags5,
ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type,
" something" , getFile (), 1 , Scope, BaseType, 2 ,
3 , 4 , DWARFAddressSpace, Flags5, ExtraData));
3 , 4 , DWARFAddressSpace, std::nullopt, Flags5,
ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type,
" something" , File, 2 , Scope, BaseType, 2 , 3 ,
4 , DWARFAddressSpace, Flags5, ExtraData));
4 , DWARFAddressSpace, std::nullopt, Flags5,
ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type,
" something" , File, 1 , getSubprogram (),
BaseType, 2 , 3 , 4 , DWARFAddressSpace, Flags5,
ExtraData));
BaseType, 2 , 3 , 4 , DWARFAddressSpace,
std::nullopt, Flags5, ExtraData));
EXPECT_NE (N, DIDerivedType::get (
Context, dwarf::DW_TAG_pointer_type, " something" , File, 1 ,
Scope, getBasicType (" basic2" ), 2 , 3 , 4 , DWARFAddressSpace,
Flags5, ExtraData));
std::nullopt, Flags5, ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type,
" something" , File, 1 , Scope, BaseType, 3 , 3 ,
4 , DWARFAddressSpace, Flags5, ExtraData));
4 , DWARFAddressSpace, std::nullopt, Flags5,
ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type,
" something" , File, 1 , Scope, BaseType, 2 , 2 ,
4 , DWARFAddressSpace, Flags5, ExtraData));
4 , DWARFAddressSpace, std::nullopt, Flags5,
ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type,
" something" , File, 1 , Scope, BaseType, 2 , 3 ,
5 , DWARFAddressSpace, Flags5, ExtraData));
5 , DWARFAddressSpace, std::nullopt, Flags5,
ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type,
" something" , File, 1 , Scope, BaseType, 2 , 3 ,
4 , DWARFAddressSpace + 1 , Flags5, ExtraData));
4 , DWARFAddressSpace + 1 , std::nullopt,
Flags5, ExtraData));
EXPECT_NE (N1,
DIDerivedType::get (Context, dwarf::DW_TAG_LLVM_ptrauth_type, " " ,
File, 1 , Scope, N, 2 , 3 , 4 , DWARFAddressSpace,
std::nullopt, Flags5, ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type,
" something" , File, 1 , Scope, BaseType, 2 , 3 ,
4 , DWARFAddressSpace, Flags4, ExtraData));
4 , DWARFAddressSpace, std::nullopt, Flags4,
ExtraData));
EXPECT_NE (N, DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type,
" something" , File, 1 , Scope, BaseType, 2 , 3 ,
4 , DWARFAddressSpace, Flags5, getTuple ()));
4 , DWARFAddressSpace, std::nullopt, Flags5,
getTuple ()));
TempDIDerivedType Temp = N->clone ();
EXPECT_EQ (N, MDNode::replaceWithUniqued (std::move (Temp)));
TempDIDerivedType Temp1 = N1->clone ();
EXPECT_EQ (N1, MDNode::replaceWithUniqued (std::move (Temp1)));
}
TEST_F (DIDerivedTypeTest, getWithLargeValues) {
Expand All
@@ -1937,14 +1961,23 @@ TEST_F(DIDerivedTypeTest, getWithLargeValues) {
MDTuple *ExtraData = getTuple ();
DINode::DIFlags Flags = static_cast <DINode::DIFlags>(5 );
auto *N = DIDerivedType::get (
Context, dwarf::DW_TAG_pointer_type, " something " , File, 1 , Scope,
BaseType, UINT64_MAX, UINT32_MAX - 1 , UINT64_MAX - 2 , UINT32_MAX - 3 ,
Flags, ExtraData);
auto *N = DIDerivedType::get (Context, dwarf::DW_TAG_pointer_type, " something " ,
File, 1 , Scope, BaseType, UINT64_MAX ,
UINT32_MAX - 1 , UINT64_MAX - 2 , UINT32_MAX - 3 ,
std::nullopt, Flags, ExtraData);
EXPECT_EQ (UINT64_MAX, N->getSizeInBits ());
EXPECT_EQ (UINT32_MAX - 1 , N->getAlignInBits ());
EXPECT_EQ (UINT64_MAX - 2 , N->getOffsetInBits ());
EXPECT_EQ (UINT32_MAX - 3 , *N->getDWARFAddressSpace ());
auto *N1 = DIDerivedType::get (
Context, dwarf::DW_TAG_LLVM_ptrauth_type, " " , File, 1 , Scope, N,
UINT64_MAX, UINT32_MAX - 1 , UINT64_MAX - 2 , UINT32_MAX - 3 ,
DIDerivedType::PtrAuthData (7 , true , 0xffff , true , false ), Flags,
ExtraData);
EXPECT_EQ (7U , *N1->getPtrAuthKey ());
EXPECT_EQ (true , *N1->isPtrAuthAddressDiscriminated ());
EXPECT_EQ (0xffffU , *N1->getPtrAuthExtraDiscriminator ());
}
typedef MetadataTest DICompositeTypeTest;
Expand Down
Expand Up
@@ -4268,7 +4301,7 @@ TEST_F(MDTupleAllocationTest, Tracking2) {
#if defined(GTEST_HAS_DEATH_TEST) && !defined(NDEBUG) && !defined(GTEST_HAS_SEH)
typedef MetadataTest MDTupleAllocationDeathTest;
TEST_F (MDTupleAllocationDeathTest, ResizeRejected) {
MDTuple *A = MDTuple::get (Context, None );
MDTuple *A = MDTuple::get (Context, std::nullopt );
auto *Value1 = getConstantAsMetadata ();
EXPECT_DEATH (A->push_back (Value1),
" Resizing is not supported for uniqued nodes" );
Expand Down