我有followint LLVM IR文件從LLVM IR中清除基本塊中的第一條指令?
%1 = load i32* %i, align 4
%2 = load i32* %j, align 4
%3 = icmp sgt i32 %1, %2
br i1 %3, label %4, label %6
; <label>:4 ; preds = %0
%5 = load i32* %i, align 4
store i32 %5, i32* %k, align 4
br label %6
; <label>:6 ; preds = %5, %0
ret i32 0
在它我第一加載vairable%1和變量 「j」 以%2則 「i」 的我比較大於條件爲(i> j)的。基於該分支要麼標籤4或標籤6.我的問題是有兩個加載指令爲變量「我」一個在第一個基本塊和其他在第二個基本塊。這裏我想刪除第二個加載指令。 對此我這樣做,因爲當我達到第二個加載指令的變量「我」我第二條指令的第一條指令代替了所有用途,然後我刪除當前的指令,即第二條。在這裏我無法設置指令迭代器指針。我不想爲下一條指令設置(存儲i32%5,i32 *%k,對齊4)。有其他方法嗎? 如果你知道,請讓我知道。
不知道我理解你的問題。但我很確定後續的傳球應該能夠輕鬆地將你的負荷移除,所以我不會真的打擾。如果您有一個令人信服的理由來刪除負載,請重新提出您的問題,因爲我無法理解您的問題究竟是什麼。 – CAFxX 2012-03-14 05:53:53
我的問題是,刪除第二個加載指令後,我想設置指令迭代器,以便在下一次迭代中它應該達到(存儲i32%5,i32 *%k,align 4),因爲在for循環中,我正在遞增指令迭代器。 – damrudhard 2012-03-14 10:04:51
爲什麼不直接在'inst-> eraseFromParent()'之後調用'BB-> begin()'來獲得新的迭代器呢? – CAFxX 2012-03-14 10:58:59