mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Debug Info IR: Switch DIObjCProperty to use DITypeRef.
This is a prerequisite for turning on ODR type uniquing for ObjC++. rdar://problem/21377883 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239780 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		| @@ -2092,7 +2092,7 @@ class DIObjCProperty : public DINode { | ||||
|   static DIObjCProperty * | ||||
|   getImpl(LLVMContext &Context, StringRef Name, DIFile *File, unsigned Line, | ||||
|           StringRef GetterName, StringRef SetterName, unsigned Attributes, | ||||
|           DIType *Type, StorageType Storage, bool ShouldCreate = true) { | ||||
|           DITypeRef Type, StorageType Storage, bool ShouldCreate = true) { | ||||
|     return getImpl(Context, getCanonicalMDString(Context, Name), File, Line, | ||||
|                    getCanonicalMDString(Context, GetterName), | ||||
|                    getCanonicalMDString(Context, SetterName), Attributes, Type, | ||||
| @@ -2114,7 +2114,7 @@ public: | ||||
|   DEFINE_MDNODE_GET(DIObjCProperty, | ||||
|                     (StringRef Name, DIFile *File, unsigned Line, | ||||
|                      StringRef GetterName, StringRef SetterName, | ||||
|                      unsigned Attributes, DIType *Type), | ||||
|                      unsigned Attributes, DITypeRef Type), | ||||
|                     (Name, File, Line, GetterName, SetterName, Attributes, | ||||
|                      Type)) | ||||
|   DEFINE_MDNODE_GET(DIObjCProperty, | ||||
| @@ -2132,12 +2132,7 @@ public: | ||||
|   DIFile *getFile() const { return cast_or_null<DIFile>(getRawFile()); } | ||||
|   StringRef getGetterName() const { return getStringOperand(2); } | ||||
|   StringRef getSetterName() const { return getStringOperand(3); } | ||||
|  | ||||
|   /// \brief Get the type. | ||||
|   /// | ||||
|   /// \note Objective-C doesn't have an ODR, so there is no benefit in storing | ||||
|   /// a type ref here. | ||||
|   DIType *getType() const { return cast_or_null<DIType>(getRawType()); } | ||||
|   DITypeRef getType() const { return DITypeRef(getRawType()); } | ||||
|  | ||||
|   StringRef getFilename() const { | ||||
|     if (auto *F = getFile()) | ||||
|   | ||||
| @@ -931,7 +931,7 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, const DICompositeType *CTy) { | ||||
|         StringRef PropertyName = Property->getName(); | ||||
|         addString(ElemDie, dwarf::DW_AT_APPLE_property_name, PropertyName); | ||||
|         if (Property->getType()) | ||||
|           addType(ElemDie, Property->getType()); | ||||
|           addType(ElemDie, resolve(Property->getType())); | ||||
|         addSourceLine(ElemDie, Property); | ||||
|         StringRef GetterName = Property->getGetterName(); | ||||
|         if (!GetterName.empty()) | ||||
|   | ||||
| @@ -327,7 +327,8 @@ DIBuilder::createObjCProperty(StringRef Name, DIFile *File, unsigned LineNumber, | ||||
|                               StringRef GetterName, StringRef SetterName, | ||||
|                               unsigned PropertyAttributes, DIType *Ty) { | ||||
|   return DIObjCProperty::get(VMContext, Name, File, LineNumber, GetterName, | ||||
|                              SetterName, PropertyAttributes, Ty); | ||||
|                              SetterName, PropertyAttributes, | ||||
|                              DITypeRef::get(Ty)); | ||||
| } | ||||
|  | ||||
| DITemplateTypeParameter * | ||||
|   | ||||
| @@ -1086,7 +1086,7 @@ void Verifier::visitDIExpression(const DIExpression &N) { | ||||
| void Verifier::visitDIObjCProperty(const DIObjCProperty &N) { | ||||
|   Assert(N.getTag() == dwarf::DW_TAG_APPLE_property, "invalid tag", &N); | ||||
|   if (auto *T = N.getRawType()) | ||||
|     Assert(isa<DIType>(T), "invalid type ref", &N, T); | ||||
|     Assert(isTypeRef(N, T), "invalid type ref", &N, T); | ||||
|   if (auto *F = N.getRawFile()) | ||||
|     Assert(isa<DIFile>(F), "invalid file", &N, F); | ||||
| } | ||||
|   | ||||
| @@ -1945,7 +1945,7 @@ TEST_F(DIObjCPropertyTest, get) { | ||||
|   StringRef GetterName = "getter"; | ||||
|   StringRef SetterName = "setter"; | ||||
|   unsigned Attributes = 7; | ||||
|   DIType *Type = cast<DIBasicType>(getBasicType("basic")); | ||||
|   DITypeRef Type = getBasicType("basic"); | ||||
|  | ||||
|   auto *N = DIObjCProperty::get(Context, Name, File, Line, GetterName, | ||||
|                                 SetterName, Attributes, Type); | ||||
| @@ -1975,7 +1975,7 @@ TEST_F(DIObjCPropertyTest, get) { | ||||
|                                    SetterName, Attributes + 1, Type)); | ||||
|   EXPECT_NE(N, DIObjCProperty::get(Context, Name, File, Line, GetterName, | ||||
|                                    SetterName, Attributes, | ||||
|                                    cast<DIBasicType>(getBasicType("other")))); | ||||
|                                    getBasicType("other"))); | ||||
|  | ||||
|   TempDIObjCProperty Temp = N->clone(); | ||||
|   EXPECT_EQ(N, MDNode::replaceWithUniqued(std::move(Temp))); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user