[LLVMdev] int to StringRed conversion

Alexandru Ionut Diaconescu alexandruionutdiaconescu at gmail.com
Thu May 2 08:10:22 PDT 2013


The problem is that I want to pass only srsr which is an int. "marked" was
just an example :)

Thanks you!


On Thu, May 2, 2013 at 5:06 PM, Logan Chien <tzuhsiang.chien at gmail.com>wrote:

> I'm not familiar with this, but maybe you can try:
>
> StringRef tst = ("marked" + Twine(srsr)).str();
>
> It seems that you can't use integer as meta data kind name.
>
> Logan
>
>
> On Thu, May 2, 2013 at 10:59 PM, Alexandru Ionut Diaconescu <
> alexandruionutdiaconescu at gmail.com> wrote:
>
>> Thank you for your help!
>>
>> Almost solved my problem. Now I don't have any compilation errors. I have
>> only one segfault:
>>
>> opt: LLVMContext.cpp:147: unsigned int
>> llvm::LLVMContext::getMDKindID(llvm::StringRef) const: Assertion
>> `isValidName(Name) && "Invalid MDNode name"' failed.
>>
>> This is due because when I setMetadata() it failes.
>>
>> StringRef tsts = llvm::Twine(srsr).str();
>> ....
>> LLVMContext& C = is->getContext();
>> MDNode* N = MDNode::get(C, MDString::get(C, "path"));
>> is->setMetadata(tsts, N);
>>
>>
>> If I put
>> is->setMetadata("marked", N);, it goes ok and the .bc is modified. But if
>> I directly put tsts it failes...
>>
>> and the definition is :
>>  void Instruction::setMetadata ( StringRef<http://llvm.org/docs/doxygen/html/classllvm_1_1StringRef.html>
>>   *Kind*,
>>
>> MDNode <http://llvm.org/docs/doxygen/html/classllvm_1_1MDNode.html> *  *
>> Node*
>> )
>>
>> I don't know how I can use the tsts parameter..
>>
>> Thank you again !
>>
>>
>> On Thu, May 2, 2013 at 4:42 PM, Logan Chien <tzuhsiang.chien at gmail.com>wrote:
>>
>>> Hi,
>>>
>>>   I think you may try to use llvm::Twine(int).  For example, to convert
>>> 30 to string, you can use:
>>>
>>> Twine(30).str()
>>>
>>> To convert the string back to integer, you can try the
>>> StringRef::getAsInteger(unsigned, APInt &).  For example:
>>>
>>> APInt i;
>>> str.getAsInteger(/*radix=*/ 10, /*output=*/ i);
>>>
>>> Sincerely,
>>> Logan
>>>
>>>
>>>
>>>  On Thu, May 2, 2013 at 9:53 PM, Alexandru Ionut Diaconescu <
>>> alexandruionutdiaconescu at gmail.com> wrote:
>>>
>>>>  Hello everyone,
>>>>
>>>> I have an integer and I want to convert it to StringRef in order to set
>>>> metadata.
>>>> setMetadata->(StringRef, MDNode*);
>>>>
>>>> It is there a native LLVM way to do it?
>>>>
>>>> 1. In the llvm::APSInt Class is toString() method, which seems it is
>>>> not for this purpose
>>>> 2. itoa and string are not part of LLVM
>>>> 3. stringstream is not part of LLVM
>>>> 4. to_string is not part of LLVM
>>>> 5. any casting method?
>>>>
>>>> Also, I would like to get the metadata and convert it back to integer.
>>>>
>>>> Thank you !
>>>>
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>
>>>>
>>>
>>
>>
>> --
>> Best regards,
>> Alexandru Ionut Diaconescu
>>
>
>


-- 
Best regards,
Alexandru Ionut Diaconescu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130502/a57d5e0a/attachment.html>


More information about the llvm-dev mailing list