[llvm-dev] DeclarationName and the StringRef.

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 21 10:04:15 PST 2016


On 12/21/2016 5:01 AM, Umesh Kalappa via llvm-dev wrote:
> To context was ,
>
> Basic requirement was to append extra string to the decl name  and 
> update all his references to the updated name. ,
>
> So we are constructing  the DeclarationName  instance as stated below 
> code snap.
> and from DeclarationName instance ,we are constructing  the 
> DeclarationNameInfo and same info used to create decl spec 
> with FunctionDecl::Create () .
>
> Question is ,
>
> How do ,someone instantiate   the DeclarationName instance using 
> StringRef ,because in the current trunk code snap ,we see that 
> the DeclarationName can be constructed using the IdentifierInfo or 
> Objc Selector or CXXOperatorId  etc as argument in the constructor .
>
> The code i.e
> void appendExtern(StringRef Sr)
> {
>  char *ExternChar = const_cast<char *> (Sr.data());
>  *Ptr =reinterpret_cast<void *>(ExternChar);
>   this->ExternName = DeclarationName::getFromOpaquePtr(Ptr);
>
> }
>
> the above is kind of hack ,may result in dangling memory references 
> ,Any thoughts  on this  ?
>
> we thought to change the DeclarationName class ,with adding 
> new DeclarationName constructor ,that construct the DeclarationName 
> instance by StringRef as argument. i.e DeclarationName(StringRef Sr) ;
>
> Before doing this ,we thought to check with community for better 
> alternative / suggestions .
>

Usually it's better to send questions about the clang frontend to just 
cfe-dev, rather than llvm-dev.

You can use IdentifierTable::get to get an IdentifierInfo for an 
arbitrary string, then make a DeclarationName from that.

-Eli

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161221/4536114d/attachment.html>


More information about the llvm-dev mailing list