<p dir="ltr"><br>
On May 3, 2013 5:30 AM, "Alexandru Ionut Diaconescu" <<a href="mailto:alexandruionutdiaconescu@gmail.com">alexandruionutdiaconescu@gmail.com</a>> wrote:<br>
><br>
> I also tried the following, with no compilation errors, but segfault, core dumped:<br>
><br>
>  LLVMContext& C = is->getContext();<br>
><br>
>  Value* values[size]; <br>
><br>
>   for(int gy=0;gy<size;gy++){<br>
>           values[gy]=ConstantInt::getSigned(Type::getInt64Ty(C),array[gy]);<br>
>   }<br>
>          <br>
>  llvm::ArrayRef<Value*> bla = values[size];</p>
<p dir="ltr">This is most likely wrong. I not even entirely sure which array ref actor that USS and who it compiled at all.</p>
<p dir="ltr">><br>
>   is->setMetadata("path",MDNode::get(C,bla));</p>
<p dir="ltr">Skip the explicit array ref and just write:</p>
<p dir="ltr">MDNode::get(C, values)</p>
<p dir="ltr">Here</p>
<p dir="ltr">><br>
><br>
><br>
><br>
> On Fri, May 3, 2013 at 1:18 PM, Alexandru Ionut Diaconescu <<a href="mailto:alexandruionutdiaconescu@gmail.com">alexandruionutdiaconescu@gmail.com</a>> wrote:<br>
>><br>
>> Hello everyone,<br>
>><br>
>> I want to pass a set of integers using metadata but I don't know how. I have tried:<br>
>><br>
>> the integers are in array[]<br>
>><br>
>> 1. <br>
>> LLVMContext& C = is->getContext();<br>
>> Value* values[size]; <br>
>> for(int gy=0;gy<size;gy++){               <br>
>>       values[gy]=ConstantInt::getSigned(Type::getInt64Ty(C),array[gy]);<br>
>> }<br>
>> is->setMetadata("path",MDNode::get(C,values));<br>
>><br>
>> failes when setMetadata(), since <br>
>><br>
>> Hello.cpp:706:56: error: no matching function for call to ‘llvm::MDNode::get(llvm::LLVMContext&, llvm::Value* [(((unsigned int)(((int)cebagcnt) + -0x00000000000000001)) + 1)])’<br>
>> Hello.cpp:706:56: note: candidate is:<br>
>> /home/alex/llvm/include/llvm/Metadata.h:120:18: note: static llvm::MDNode* llvm::MDNode::get(llvm::LLVMContext&, llvm::ArrayRef<llvm::Value*>)<br>
>> /home/alex/llvm/include/llvm/Metadata.h:120:18: note:   no known conversion for argument 2 from ‘llvm::Value* [(((unsigned int)(((int)cebagcnt) + -0x00000000000000001)) + 1)]’ to ‘llvm::ArrayRef<llvm::Value*>’<br>

>><br>
>> 2.<br>
>> It works manually when I have <br>
>><br>
>> Value* values[]{<br>
>>               ConstantInt::getSigned(Type::getInt64Ty(C),2),<br>
>>               ConstantInt::getSigned(Type::getInt64Ty(C),3)<br>
>>             };<br>
>> but I want to add metadata using the array[] elements with integers.<br>
>><br>
>> 3. also, not so appropriate, I tried to convert the concatenated array elements into a StringRef tsts = llvm::Twine(srsr).str();, but I have segfault errors. In addition, this method is not exactly what I need.<br>

>><br>
>> How should I add all the array elements to metadata one by one, like I am trying to do using values[] ?<br>
>><br>
>> Thank you much !  <br>
><br>
><br>
><br>
><br>
> -- <br>
> Best regards,<br>
> Alexandru Ionut Diaconescu<br>
><br>
> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
><br>
</p>