[LLVMdev] StructReturnToPointer in poolalloc failing with LLVM 3.4 (original) (raw)
John Criswell criswell at illinois.edu
Sun Mar 16 13:27:01 PDT 2014
- Previous message: [LLVMdev] StructReturnToPointer in poolalloc failing with LLVM 3.4
- Next message: [LLVMdev] Users of llvm::error_code all inherit from _do_message
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 3/14/14 4:06 PM, Zvonimir Rakamaric wrote:
Hi,
I've been happily using DSA in a project of mine for quite a while now, and recently I noticed that the functionality of StructReturnToPointer could be useful to me as well.
DSA isn't supported for LLVM 3.4 yet. The release_32 branch works with LLVM 3.2, and I think the trunk branch compiles with LLVM 3.3 (although I haven't used that branch much myself yet).
If you want to use DSA, you'll either need to update it to work with LLVM 3.4 or stick with an earlier version of LLVM with which it works.
As far as your specific question on the attribute code, I'm not sufficiently familiar with LLVM 3.4 to know why it's not working. If I had to take a guess, I'd say that you might want to dump F->getAttributes().getParamAttributes(II->getArgNo()) to see if the "+ 1" in the last line is an off-by-one error.
Sorry I don't know what wrong with particular piece of code,
John Criswell
So I tried using it on a simple example, but I keep getting the following exception: smack: /home/zvonimir/projects/smack-project/llvm/src/lib/IR/Attributes.cpp:912: unsigned int llvm::AttributeSet::getSlotIndex(unsigned int) const: Assertion `pImpl && Slot < pImpl->getNumAttributes() && "Slot # out of range!"' failed. 0 smack 0x0000000000a38982 llvm::sys::PrintStackTrace(IOFILE*) + 34 1 smack 0x0000000000a37d69 2 libpthread.so.0 0x00007fc770d81cb0 3 libc.so.6 0x00007fc76fdab425 gsignal + 53 4 libc.so.6 0x00007fc76fdaeb8b abort + 379 5 libc.so.6 0x00007fc76fda40ee 6 libc.so.6 0x00007fc76fda4192 7 smack 0x000000000090164f 8 smack 0x000000000099a984 llvm::Argument::addAttr(llvm::AttributeSet) + 36 9 smack 0x000000000050f294 llvm::StructRet::runOnModule(llvm::Module&) + 2180 10 smack 0x00000000009c2e1f llvm::legacy::PassManagerImpl::run(llvm::Module&) + 927 11 smack 0x000000000048d448 main + 840 _12 libc.so.6 0x00007fc76fd9676d libcstartmain + 237
Basically, there is a problem with the following piece of code, and I suspect it might be due to upgrading to LLVM 3.4: ValueToValueMapTy ValueMap; Function::argiterator NI = NF->argbegin(); NI->setName("ret"); ++NI; for (Function::argiterator II = F->argbegin(); II != F->argend(); ++II, ++NI) { ValueMap[II] = NI; NI->setName(II->getName()); NI->addAttr(F->getAttributes().getParamAttributes(II->getArgNo() + 1)); } I've tried to fix this, but no luck so far, and so help would be great appreciated. Thanks! -- Zvonimir
LLVM Developers mailing list LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
- Previous message: [LLVMdev] StructReturnToPointer in poolalloc failing with LLVM 3.4
- Next message: [LLVMdev] Users of llvm::error_code all inherit from _do_message
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]