1
我有一個指導訪問者實施檢查FCmpInst
。在我的IR,我從鐺上一個C++文件生成的幾行:提取LLVM紅外標識符
%2 = load float, float* %x, align 4
%3 = fcmp ogt float %2, 1.0000e+00
的FCmpInst
訪問期間調用getOperand(0)
返回上述load
指令。然後,如果我在load
指令上調用getPointerOperand()
,它將指向alloca
指令,該指令首先預留%x
。我不想要指針 - 相反,我想要標識符名稱「%x」。我們如何從IR中提取這些名稱?我發現在任何指令上調用dump()
都會顯示標識符,但是我還沒有找到可以自己提取標識符的API調用。謝謝!
是的,我熟悉'getName'方法,但是,正如你所說,它返回空字符串。當你在值上調用'dump()'時,信息就在那裏!那麼,什麼數據結構保持整個字符串?我會很高興採取並解析'%'符號。請記住,我有IR文件,並將其發送到「ModulePass」。 –
你是在'load'指令還是'alloca'指令上調用getName? –
是的,但大多數說明都沒有名字。我決定在執行對代碼的更多分析之前,我的通行證將貫穿整個指令列表並自行分配名稱。我在'AsmWriter'類中看到了[這個操作](http://llvm.org/docs/doxygen/html/AsmWriter_8cpp_source.html#l02688),它顯示了在raw_ostream調用期間被標記的標識符。這至少可以回答我關於「where」標識符存儲的問題:它們是由打印過程實時生成的。 –