Hello everyone, I want to pass a set of integers using metadata but I don't know how. I have tried: the integers are in array[] *1. * LLVMContext& C = is->getContext(); Value* values[size]; for(int gy=0;gy<size;gy++){ values[gy]=ConstantInt::getSigned(Type::getInt64Ty(C),array[gy]); } *is->setMetadata("path",MDNode::get(C,values));* failes when setMetadata(), since *Hello.cpp:706:56: error: no matching function for call to ‘llvm::MDNode::get(llvm::LLVMContext&, llvm::Value* [(((unsigned int)(((int)cebagcnt) + -0x00000000000000001)) + 1)])’ Hello.cpp:706:56: note: candidate is: /home/alex/llvm/include/llvm/Metadata.h:120:18: note: static llvm::MDNode* llvm::MDNode::get(llvm::LLVMContext&, llvm::ArrayRef<llvm::Value*>) /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*>’* *2.* It works manually when I have Value* values[]{ ConstantInt::getSigned(Type::getInt64Ty(C),*2*), ConstantInt::getSigned(Type::getInt64Ty(C),*3*) }; but I want to add metadata using the array[] elements with integers. *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. How should I add all the array elements to metadata one by one, like I am trying to do using values[] ? Thank you much ! -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130503/acab1982/attachment.html>
I also tried the following, with no compilation errors, but segfault, core dumped: *LLVMContext& C = is->getContext(); Value* values[size]; for(int gy=0;gy<size;gy++){ values[gy]=ConstantInt::getSigned(Type::getInt64Ty(C),array[gy]); } llvm::ArrayRef<Value*> bla = values[size]; is->setMetadata("path",MDNode::get(C,bla));* On Fri, May 3, 2013 at 1:18 PM, Alexandru Ionut Diaconescu < alexandruionutdiaconescu at gmail.com> wrote:> Hello everyone, > > I want to pass a set of integers using metadata but I don't know how. I > have tried: > > the integers are in array[] > > *1. * > LLVMContext& C = is->getContext(); > Value* values[size]; > for(int gy=0;gy<size;gy++){ > values[gy]=ConstantInt::getSigned(Type::getInt64Ty(C),array[gy]); > } > *is->setMetadata("path",MDNode::get(C,values));* > > failes when setMetadata(), since > > *Hello.cpp:706:56: error: no matching function for call to > ‘llvm::MDNode::get(llvm::LLVMContext&, llvm::Value* [(((unsigned > int)(((int)cebagcnt) + -0x00000000000000001)) + 1)])’ > Hello.cpp:706:56: note: candidate is: > /home/alex/llvm/include/llvm/Metadata.h:120:18: note: static llvm::MDNode* > llvm::MDNode::get(llvm::LLVMContext&, llvm::ArrayRef<llvm::Value*>) > /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*>’* > > *2.* > It works manually when I have > > Value* values[]{ > ConstantInt::getSigned(Type::getInt64Ty(C),*2*), > ConstantInt::getSigned(Type::getInt64Ty(C),*3*) > }; > but I want to add metadata using the array[] elements with integers. > > *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. > > How should I add all the array elements to metadata one by one, like I am > trying to do using values[] ? > > Thank you much ! >-- Best regards, Alexandru Ionut Diaconescu -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130503/709b20fa/attachment.html>
On May 3, 2013 5:30 AM, "Alexandru Ionut Diaconescu" < alexandruionutdiaconescu at gmail.com> wrote:> > I also tried the following, with no compilation errors, but segfault,core dumped:> > LLVMContext& C = is->getContext(); > > Value* values[size]; > > for(int gy=0;gy<size;gy++){ >values[gy]=ConstantInt::getSigned(Type::getInt64Ty(C),array[gy]);> } > > llvm::ArrayRef<Value*> bla = values[size];This is most likely wrong. I not even entirely sure which array ref actor that USS and who it compiled at all.> > is->setMetadata("path",MDNode::get(C,bla));Skip the explicit array ref and just write: MDNode::get(C, values) Here> > > > > On Fri, May 3, 2013 at 1:18 PM, Alexandru Ionut Diaconescu <alexandruionutdiaconescu at gmail.com> wrote:>> >> Hello everyone, >> >> I want to pass a set of integers using metadata but I don't know how. Ihave tried:>> >> the integers are in array[] >> >> 1. >> LLVMContext& C = is->getContext(); >> Value* values[size]; >> for(int gy=0;gy<size;gy++){ >> values[gy]=ConstantInt::getSigned(Type::getInt64Ty(C),array[gy]); >> } >> is->setMetadata("path",MDNode::get(C,values)); >> >> failes when setMetadata(), since >> >> Hello.cpp:706:56: error: no matching function for call to‘llvm::MDNode::get(llvm::LLVMContext&, llvm::Value* [(((unsigned int)(((int)cebagcnt) + -0x00000000000000001)) + 1)])’>> Hello.cpp:706:56: note: candidate is: >> /home/alex/llvm/include/llvm/Metadata.h:120:18: note: staticllvm::MDNode* llvm::MDNode::get(llvm::LLVMContext&, llvm::ArrayRef<llvm::Value*>)>> /home/alex/llvm/include/llvm/Metadata.h:120:18: note: no knownconversion for argument 2 from ‘llvm::Value* [(((unsigned int)(((int)cebagcnt) + -0x00000000000000001)) + 1)]’ to ‘llvm::ArrayRef<llvm::Value*>’>> >> 2. >> It works manually when I have >> >> Value* values[]{ >> ConstantInt::getSigned(Type::getInt64Ty(C),2), >> ConstantInt::getSigned(Type::getInt64Ty(C),3) >> }; >> but I want to add metadata using the array[] elements with integers. >> >> 3. also, not so appropriate, I tried to convert the concatenated arrayelements into a StringRef tsts = llvm::Twine(srsr).str();, but I have segfault errors. In addition, this method is not exactly what I need.>> >> How should I add all the array elements to metadata one by one, like Iam trying to do using values[] ?>> >> Thank you much ! > > > > > -- > Best regards, > Alexandru Ionut Diaconescu > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130503/1546ab07/attachment.html>