[LLVMdev] LLVM problem, please do not ignore
Duncan Sands
baldrick at free.fr
Thu Nov 3 06:57:01 PDT 2011
Hi Arshak, build LLVM with assertions on. Then you will get helpful messages
like "Destroying a value while uses still around!" and so on. You need to use
replaceAllUsesWith to replace all uses of the add with something else (eg an
undef value of the same type) before you delete it.
Ciao, Duncan.
On 11/03/11 11:55, Arshak Nazaryan wrote:
> Dear sir or madam,
>
> I am a 4-th year student at Yerevan State University, Armenia; and I am studying
> LLVM in order to write my Bachelor thesis.
> I am trying to write an llvm pass that just removes all "Add" commands and gives
> some statstics.
> Nevertheless, I get this segmentation fault:
>
> ................some rows about functions, that are not changed by my pass. The
> errors occurs after it has modified a "@_Z3addii" function.
> store i32 %b.0, i32* %4 and the type is ddddbbm 28
> %5 = load i32* %a_addr, align 4 and the type is ddddbbm 27
> %6 = load i32* %b_addr, align 4 and the type is ddddbbm 27
> %7 = add nsw i32 %5, %6 and the type is ddddbbm 8
> store i32 %7, i32* %0, align 4 and the type is ddddbbm 28
> %7 = add nsw i32 %5, %6 is erased, ba!
> %7 = load i32* %0, align 4 and the type is ddddbbm 27
> store i32 %7, i32* %retval, align 4 and the type is ddddbbm 28
> br label %return and the type is ddddbbm 2
> ret i32 %retval1 and the type is ddddbbm 1
> 0 opt 0x00000000008ed93f
> 1 opt 0x00000000008edcea
> 2 libpthread.so.0 0x00007f9ba1183c60
> 3 opt 0x00000000004b3615 llvm::PATypeHolder::get() const + 21
> 4 opt 0x00000000008a4f11
> 5 opt 0x00000000008a9404
> 6 opt 0x0000000000882557
> llvm::FPPassManager::runOnFunction(llvm::Function&) + 551
> 7 opt 0x00000000008825db
> llvm::FPPassManager::runOnModule(llvm::Module&) + 75
> 8 opt 0x0000000000882197
> llvm::MPPassManager::runOnModule(llvm::Module&) + 503
> 9 opt 0x0000000000882299 llvm::PassManagerImpl::run(llvm::Module&)
> + 137
> 10 opt 0x00000000004ac451 main + 4881
> 11 libc.so.6 0x00007f9ba0459eff __libc_start_main + 255
> 12 opt 0x000000000049f5f9
> Stack dump:
> 0.Program arguments: opt hello.bc -load
> ../llvm/llvm-2.9/plugin/BasicBlockStats.so -basic-block-stats -stats -o newhello.bc
> 1.Running pass 'Function Pass Manager' on module 'hello.bc'.
> 2.Running pass 'Module Verifier' on function '@_Z3addii'
> Segmentation fault
>
> Please find the source of my pass attached.
> Hope to get a reply soon.
>
> Regards,
> Arshak Nazaryan
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list