我試圖檢測數組聲明併爲靜態大小的數組構建符號值表。它將包含一個name-arraySize配對。我有幾個問題:LLVM指令變量名稱和參數
1)給定一條指令,如%a = alloca [200 x i8],對齊16如何提取數組的名稱「a」。
2)我想提取「200」作爲數組的大小,但這樣的代碼:
if(AllocaInst *allocInst = dyn_cast<AllocaInst>(&*I)){
PointerType *p = allocInst->getType();
if(p->getElementType()->isArrayTy()){
Value* v = allocInst->getOperand(0);
errs() << *v ;
}
}
得到我「123-132 1」當我打印v有誰知道這是爲什麼?除了可能的地址,我不認爲有關於此的任何32bit。
好吧,我想出瞭如何獲得大小: ArrayType * a = cast(p-> getElementType()); A-> getNumElements() –
Realn0whereman
2012-03-22 18:06:19
好吧......所以......我想出如何得到名字太... allocInst->的getName() 爲什麼簡單地張貼在計算器可以幫助我找到答案更快...:P – Realn0whereman 2012-03-22 18:12:02
如果您只發布包含此信息的答案,而不是評論,那麼最好。這樣,問題將被正確標記爲已回答。 – Oak 2012-10-18 13:11:21