2010-10-27 59 views
3

有人知道這個錯誤是什麼意思?當我嘗試反彙編由LLVMWriteBitcodeToFile寫入的文件時,出現錯誤。當我使用LLVMDumpModule轉儲模塊並手動組合和反彙編文件時,不會發生錯誤。我試圖編譯模塊(從LLVMDumpModule)看起來像:LLVM - 沒有BB的指令無效

; ModuleID = 'Test' 

define i32 @a(i32) { 
entry: 
    %icmp = icmp eq i32 %0, 1      ; <i1> [#uses=1] 
    br i1 %icmp, label %_L2, label %_L3 

_L1:            ; preds = %_L3 
    ret i32 %0 
    call void @RAISE(i32 1) 
    unreachable 

_L2:            ; preds = %entry 
    ret i32 1 

_L3:            ; preds = %entry 
    br label %_L1 
} 

declare void @RAISE(i32) 

任何線索?

回答

2

由於錯誤地構造了表示IR的內存LLVM對象,我之前遇到過類似的症狀。玩弄最初產生的代碼,並確保它沒有做任何腥事。

4

我不知道是顯示其指令錯誤消息,但我的猜測是

call void @RAISE(i32 1), 

,究其原因可能是,它是一個終止指令(基本塊中的最後一條指令後)

ret i32 %0 

,因此沒有父BB