[llvm-commits] Move Module::getTypeByName to LLVMContext::getTypeByName
NAKAMURA Takumi
geek4civic at gmail.com
Thu Jan 10 16:03:26 PST 2013
LGTM. Chris, I don't understand why getTypeByName() belongs to Module?
Mael, please update and resend your patch along trunk, thank you.
LLVMContext.h has been moved to include/llvm/IR.
> --- a/include/llvm/LLVMContext.h
> +++ b/include/llvm/LLVMContext.h
> @@ -86,6 +87,10 @@ public:
> void emitError(const Instruction *I, const Twine &ErrorStr);
> void emitError(const Twine &ErrorStr);
>
> + /// getTypeByName - Return the type with the specified name, or null if there
> + /// is none by that name.
> + StructType * getTypeByName(StringRef Name) const;
We prefer;
> + StructType *getTypeByName(StringRef Name) const;
> +
> private:
> // DO NOT IMPLEMENT
> LLVMContext(LLVMContext&);
> --- a/lib/VMCore/Type.cpp
> +++ b/lib/VMCore/Type.cpp
> @@ -631,11 +631,7 @@ bool StructType::isLayoutIdentical(StructType *Other) const {
> /// getTypeByName - Return the type with the specified name, or null if there
> /// is none by that name.
> StructType *Module::getTypeByName(StringRef Name) const {
> - StringMap<StructType*>::iterator I =
> - getContext().pImpl->NamedStructTypes.find(Name);
> - if (I != getContext().pImpl->NamedStructTypes.end())
> - return I->second;
> - return 0;
> + return getContext().getTypeByName(Name);
We prefer here;
> + return getContext().getTypeByName(Name);
> }
2013/1/11 Maël Nison <nison.mael at gmail.com>:
> Could it be possible to have a feedback, even negative, please ?
>
>
> On 5 August 2012 14:44, Maël Nison <nison.mael at gmail.com> wrote:
>>
>> As a workaround, creating a temporary stack-alloced Module to use its
>> getTypeByName() method works.
>>
>> But that's a workaround, it requires useless additional instructions. : /
>>
>>
>> On 2 August 2012 18:40, Maël Nison <nison.mael at gmail.com> wrote:
>>>
>>> Hi,
>>>
>>> This very short patch moves Module's getTypeByName into LLVMContext,
>>> because :
>>>
>>> - Every types are linked to a Context, so it makes sense to get types
>>> from the context and not from a module
>>> - The Module::getTypeByName function doesn't actually use anything owned
>>> by the Module class
>>> - It is not possible to specialize the TypeBuilder to return a named
>>> structure (we can only returns literal structures). By moving getTypeByName
>>> into the LLVMContext class, we are able to do it (TypeBuilder's
>>> specializations are called with a LLVMContext reference as parameter).
>>>
>>> In order to keep backward compatibility, Module::getTypeByName now
>>> forwards to the new method.
>>>
>>> It's my first patch so .. am I doing it wrong ?
>>>
>>> --
>>> Maël Nison
>>> Epitech 2014, Paris - Astek
>>>
>>
>>
>>
>> --
>> Maël Nison
>> Epitech 2014, Paris - Astek
>>
>
>
>
> --
> Maël Nison
> JS Github hipster, Assistant C++ chez Epitech
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list