[llvm-dev] DeclarationName and the StringRef.

Umesh Kalappa via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 21 05:01:28 PST 2016


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 .


Thank you
~Umesh

On Wed, Dec 21, 2016 at 4:34 PM, Umesh Kalappa <umesh.kalappa0 at gmail.com>
wrote:

> Hi Guys ,
>
> We have the function that accepts StringRef and construct
> the DeclarationName instance .
>
> Currenlty we are achieving the same as ,the code snap
>
> void appendExtern(StringRef Sr)
> {
>  char *ExternChar = const_cast<char *> (Sr.data());
>  *Ptr =reinterpret_cast<void *>(ExternChar);
>
>   this->ExternName = DeclarationName::getFromOpaquePtr(Ptr);
>
> }
>
> There is, any better way of achieving this  ,because the above code is
> crashing intermittently ?
>
> Thank you  and any help here appreciated.
> ~Umesh
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161221/f9e2a65a/attachment.html>


More information about the llvm-dev mailing list