[LLVMdev] LLVM problem, please do not ignore

Michael Smith Michael.Smith at synopsys.com
Thu Nov 3 09:21:11 PDT 2011


You probably have dangling references to the instructions you removed. Before erasing the instruction, you should call replaceAllUsesWith(Value *v) to remove any references in other instructions.

Regards,
Michael Smith

From: Arshak Nazaryan [mailto:arshak.info at gmail.com]
Sent: Thursday, November 03, 2011 3:56 AM
To: llvmdev at cs.uiuc.edu
Subject: [LLVMdev] LLVM problem, please do not ignore

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111103/698ff8bd/attachment.html>


More information about the llvm-dev mailing list