Cプログラムで配列の総数をどのように数えることができますか?
LLVM IR の配列宣言は、操作のallocaタイプに対応しています。そう
int a[10];
に対応
%a = alloca [10 x i32], align 4
LLVM IRで。
でも気づいたことも
int j = 0;
alloca命令にも対応
%j = alloca i32, align 4
では、配列のみに対応する alloca 命令の数をカウントするにはどうすればよいでしょうか。
編集:
for (Function::iterator i = F.begin(), e = F.end(); i != e; ++i)
{
for (BasicBlock::iterator ii =(*i).begin(), ii_e = (*i).end(); ii != ii_e; ++ii)
{
Instruction *n = dyn_cast<Instruction>(&*ii);
for( int num = 0; num < n->getNumOperands(); ++num)
if(isa<ArrayType>(n->getOperand(num)->getType()))
{
// doesn't work
errs()<<"yayayayay Array\n";
}
}
}