<p dir="ltr">Cool deal. Thanks. :)</p>
<div class="gmail_quote">On Jun 7, 2013 4:38 PM, "Manman Ren" <<a href="mailto:mren@apple.com">mren@apple.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
For consistance and readability, other helper functions return the concrete class, not DIType.<br>
<br>
Thanks,<br>
Manman<br>
<br>
On Jun 7, 2013, at 2:27 PM, Eric Christopher wrote:<br>
<br>
> Not complaining, but curious what inspired the change?<br>
><br>
> -eric<br>
><br>
> On Fri, Jun 7, 2013 at 11:35 AM, Manman Ren <<a href="mailto:mren@apple.com">mren@apple.com</a>> wrote:<br>
>> Author: mren<br>
>> Date: Fri Jun  7 13:35:53 2013<br>
>> New Revision: 183543<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=183543&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=183543&view=rev</a><br>
>> Log:<br>
>> DIBuilder: No functionality change.<br>
>><br>
>> Use the correct DIType when creating types in DIBuilder.<br>
>><br>
>> Modified:<br>
>>    llvm/trunk/include/llvm/DIBuilder.h<br>
>>    llvm/trunk/lib/IR/DIBuilder.cpp<br>
>><br>
>> Modified: llvm/trunk/include/llvm/DIBuilder.h<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DIBuilder.h?rev=183543&r1=183542&r2=183543&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DIBuilder.h?rev=183543&r1=183542&r2=183543&view=diff</a><br>

>> ==============================================================================<br>
>> --- llvm/trunk/include/llvm/DIBuilder.h (original)<br>
>> +++ llvm/trunk/include/llvm/DIBuilder.h Fri Jun  7 13:35:53 2013<br>
>> @@ -110,7 +110,7 @@ namespace llvm {<br>
>>     DIEnumerator createEnumerator(StringRef Name, uint64_t Val);<br>
>><br>
>>     /// createNullPtrType - Create C++0x nullptr type.<br>
>> -    DIType createNullPtrType(StringRef Name);<br>
>> +    DIBasicType createNullPtrType(StringRef Name);<br>
>><br>
>>     /// createBasicType - Create debugging information entry for a basic<br>
>>     /// type.<br>
>> @@ -155,7 +155,7 @@ namespace llvm {<br>
>>                                 unsigned LineNo, DIDescriptor Context);<br>
>><br>
>>     /// createFriend - Create debugging information entry for a 'friend'.<br>
>> -    DIType createFriend(DIType Ty, DIType FriendTy);<br>
>> +    DIDerivedType createFriend(DIType Ty, DIType FriendTy);<br>
>><br>
>>     /// createInheritance - Create debugging information entry to establish<br>
>>     /// inheritance relationship between two types.<br>
>> @@ -191,9 +191,10 @@ namespace llvm {<br>
>>     /// @param Ty         Type of the static member.<br>
>>     /// @param Flags      Flags to encode member attribute, e.g. private.<br>
>>     /// @param Val        Const initializer of the member.<br>
>> -    DIType createStaticMemberType(DIDescriptor Scope, StringRef Name,<br>
>> -                                  DIFile File, unsigned LineNo, DIType Ty,<br>
>> -                                  unsigned Flags, llvm::Value *Val);<br>
>> +    DIDerivedType<br>
>> +    createStaticMemberType(DIDescriptor Scope, StringRef Name,<br>
>> +                           DIFile File, unsigned LineNo, DIType Ty,<br>
>> +                           unsigned Flags, llvm::Value *Val);<br>
>><br>
>>     /// createObjCIVar - Create debugging information entry for Objective-C<br>
>>     /// instance variable.<br>
>> @@ -212,14 +213,14 @@ namespace llvm {<br>
>>     /// @param PropertySetterName Name of the Objective C property setter<br>
>>     ///                           selector.<br>
>>     /// @param PropertyAttributes Objective C property attributes.<br>
>> -    DIType createObjCIVar(StringRef Name, DIFile File,<br>
>> -                          unsigned LineNo, uint64_t SizeInBits,<br>
>> -                          uint64_t AlignInBits, uint64_t OffsetInBits,<br>
>> -                          unsigned Flags, DIType Ty,<br>
>> -                          StringRef PropertyName = StringRef(),<br>
>> -                          StringRef PropertyGetterName = StringRef(),<br>
>> -                          StringRef PropertySetterName = StringRef(),<br>
>> -                          unsigned PropertyAttributes = 0);<br>
>> +    DIDerivedType createObjCIVar(StringRef Name, DIFile File,<br>
>> +                                 unsigned LineNo, uint64_t SizeInBits,<br>
>> +                                 uint64_t AlignInBits, uint64_t OffsetInBits,<br>
>> +                                 unsigned Flags, DIType Ty,<br>
>> +                                 StringRef PropertyName = StringRef(),<br>
>> +                                 StringRef PropertyGetterName = StringRef(),<br>
>> +                                 StringRef PropertySetterName = StringRef(),<br>
>> +                                 unsigned PropertyAttributes = 0);<br>
>><br>
>>     /// createObjCIVar - Create debugging information entry for Objective-C<br>
>>     /// instance variable.<br>
>> @@ -232,11 +233,11 @@ namespace llvm {<br>
>>     /// @param Flags        Flags to encode member attribute, e.g. private<br>
>>     /// @param Ty           Parent type.<br>
>>     /// @param PropertyNode Property associated with this ivar.<br>
>> -    DIType createObjCIVar(StringRef Name, DIFile File,<br>
>> -                          unsigned LineNo, uint64_t SizeInBits,<br>
>> -                          uint64_t AlignInBits, uint64_t OffsetInBits,<br>
>> -                          unsigned Flags, DIType Ty,<br>
>> -                          MDNode *PropertyNode);<br>
>> +    DIDerivedType createObjCIVar(StringRef Name, DIFile File,<br>
>> +                                 unsigned LineNo, uint64_t SizeInBits,<br>
>> +                                 uint64_t AlignInBits, uint64_t OffsetInBits,<br>
>> +                                 unsigned Flags, DIType Ty,<br>
>> +                                 MDNode *PropertyNode);<br>
>><br>
>>     /// createObjCProperty - Create debugging information entry for Objective-C<br>
>>     /// property.<br>
>><br>
>> Modified: llvm/trunk/lib/IR/DIBuilder.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=183543&r1=183542&r2=183543&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=183543&r1=183542&r2=183543&view=diff</a><br>

>> ==============================================================================<br>
>> --- llvm/trunk/lib/IR/DIBuilder.cpp (original)<br>
>> +++ llvm/trunk/lib/IR/DIBuilder.cpp Fri Jun  7 13:35:53 2013<br>
>> @@ -209,7 +209,7 @@ DIEnumerator DIBuilder::createEnumerator<br>
>> }<br>
>><br>
>> /// createNullPtrType - Create C++0x nullptr type.<br>
>> -DIType DIBuilder::createNullPtrType(StringRef Name) {<br>
>> +DIBasicType DIBuilder::createNullPtrType(StringRef Name) {<br>
>>   assert(!Name.empty() && "Unable to create type without name");<br>
>>   // nullptr is encoded in DIBasicType format. Line number, filename,<br>
>>   // ,size, alignment, offset and flags are always empty here.<br>
>> @@ -225,7 +225,7 @@ DIType DIBuilder::createNullPtrType(Stri<br>
>>     ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Flags;<br>
>>     ConstantInt::get(Type::getInt32Ty(VMContext), 0)  // Encoding<br>
>>   };<br>
>> -  return DIType(MDNode::get(VMContext, Elts));<br>
>> +  return DIBasicType(MDNode::get(VMContext, Elts));<br>
>> }<br>
>><br>
>> /// createBasicType - Create debugging information entry for a basic<br>
>> @@ -350,7 +350,7 @@ DIDerivedType DIBuilder::createTypedef(D<br>
>> }<br>
>><br>
>> /// createFriend - Create debugging information entry for a 'friend'.<br>
>> -DIType DIBuilder::createFriend(DIType Ty, DIType FriendTy) {<br>
>> +DIDerivedType DIBuilder::createFriend(DIType Ty, DIType FriendTy) {<br>
>>   // typedefs are encoded in DIDerivedType format.<br>
>>   assert(Ty.Verify() && "Invalid type!");<br>
>>   assert(FriendTy.Verify() && "Invalid friend type!");<br>
>> @@ -366,7 +366,7 @@ DIType DIBuilder::createFriend(DIType Ty<br>
>>     ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Flags<br>
>>     FriendTy<br>
>>   };<br>
>> -  return DIType(MDNode::get(VMContext, Elts));<br>
>> +  return DIDerivedType(MDNode::get(VMContext, Elts));<br>
>> }<br>
>><br>
>> /// createInheritance - Create debugging information entry to establish<br>
>> @@ -413,10 +413,11 @@ DIDerivedType DIBuilder::createMemberTyp<br>
>><br>
>> /// createStaticMemberType - Create debugging information entry for a<br>
>> /// C++ static data member.<br>
>> -DIType DIBuilder::createStaticMemberType(DIDescriptor Scope, StringRef Name,<br>
>> -                                         DIFile File, unsigned LineNumber,<br>
>> -                                         DIType Ty, unsigned Flags,<br>
>> -                                         llvm::Value *Val) {<br>
>> +DIDerivedType<br>
>> +DIBuilder::createStaticMemberType(DIDescriptor Scope, StringRef Name,<br>
>> +                                  DIFile File, unsigned LineNumber,<br>
>> +                                  DIType Ty, unsigned Flags,<br>
>> +                                  llvm::Value *Val) {<br>
>>   // TAG_member is encoded in DIDerivedType format.<br>
>>   Flags |= DIDescriptor::FlagStaticMember;<br>
>>   Value *Elts[] = {<br>
>> @@ -432,18 +433,19 @@ DIType DIBuilder::createStaticMemberType<br>
>>     Ty,<br>
>>     Val<br>
>>   };<br>
>> -  return DIType(MDNode::get(VMContext, Elts));<br>
>> +  return DIDerivedType(MDNode::get(VMContext, Elts));<br>
>> }<br>
>><br>
>> /// createObjCIVar - Create debugging information entry for Objective-C<br>
>> /// instance variable.<br>
>> -DIType DIBuilder::createObjCIVar(StringRef Name,<br>
>> -                                 DIFile File, unsigned LineNumber,<br>
>> -                                 uint64_t SizeInBits, uint64_t AlignInBits,<br>
>> -                                 uint64_t OffsetInBits, unsigned Flags,<br>
>> -                                 DIType Ty, StringRef PropertyName,<br>
>> -                                 StringRef GetterName, StringRef SetterName,<br>
>> -                                 unsigned PropertyAttributes) {<br>
>> +DIDerivedType<br>
>> +DIBuilder::createObjCIVar(StringRef Name,<br>
>> +                          DIFile File, unsigned LineNumber,<br>
>> +                          uint64_t SizeInBits, uint64_t AlignInBits,<br>
>> +                          uint64_t OffsetInBits, unsigned Flags,<br>
>> +                          DIType Ty, StringRef PropertyName,<br>
>> +                          StringRef GetterName, StringRef SetterName,<br>
>> +                          unsigned PropertyAttributes) {<br>
>>   // TAG_member is encoded in DIDerivedType format.<br>
>>   Value *Elts[] = {<br>
>>     GetTagConstant(VMContext, dwarf::DW_TAG_member),<br>
>> @@ -461,16 +463,17 @@ DIType DIBuilder::createObjCIVar(StringR<br>
>>     MDString::get(VMContext, SetterName),<br>
>>     ConstantInt::get(Type::getInt32Ty(VMContext), PropertyAttributes)<br>
>>   };<br>
>> -  return DIType(MDNode::get(VMContext, Elts));<br>
>> +  return DIDerivedType(MDNode::get(VMContext, Elts));<br>
>> }<br>
>><br>
>> /// createObjCIVar - Create debugging information entry for Objective-C<br>
>> /// instance variable.<br>
>> -DIType DIBuilder::createObjCIVar(StringRef Name,<br>
>> -                                 DIFile File, unsigned LineNumber,<br>
>> -                                 uint64_t SizeInBits, uint64_t AlignInBits,<br>
>> -                                 uint64_t OffsetInBits, unsigned Flags,<br>
>> -                                 DIType Ty, MDNode *PropertyNode) {<br>
>> +DIDerivedType<br>
>> +DIBuilder::createObjCIVar(StringRef Name,<br>
>> +                          DIFile File, unsigned LineNumber,<br>
>> +                          uint64_t SizeInBits, uint64_t AlignInBits,<br>
>> +                          uint64_t OffsetInBits, unsigned Flags,<br>
>> +                          DIType Ty, MDNode *PropertyNode) {<br>
>>   // TAG_member is encoded in DIDerivedType format.<br>
>>   Value *Elts[] = {<br>
>>     GetTagConstant(VMContext, dwarf::DW_TAG_member),<br>
>> @@ -485,7 +488,7 @@ DIType DIBuilder::createObjCIVar(StringR<br>
>>     Ty,<br>
>>     PropertyNode<br>
>>   };<br>
>> -  return DIType(MDNode::get(VMContext, Elts));<br>
>> +  return DIDerivedType(MDNode::get(VMContext, Elts));<br>
>> }<br>
>><br>
>> /// createObjCProperty - Create debugging information entry for Objective-C<br>
>><br>
>><br>
>> _______________________________________________<br>
>> llvm-commits mailing list<br>
>> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br>
</blockquote></div>