如何使用llvm从函数参数列表中提取数组大小

如何使用llvm从函数参数列表中提取数组大小,llvm,Llvm,给定一些源代码,我想创建一个llvm过程,提取与所有函数参数列表相关的信息。 如何提取作为输入传递给函数的数组的大小 例如: foo(inta[100]){ ... } 我想获得以下信息: 1) 数组中元素的类型 2) 数组的大小(如果是多维数组,则为与不同维度关联的大小) 在我的llvm过程中,我有一个函数,该函数在输入中给定一个llvm::Type,检查它是哪种类型,并提取我需要的信息,如果需要,递归调用自身以分析其他类型元素: if(argType->isPointerTy()){ er

给定一些源代码,我想创建一个llvm过程,提取与所有函数参数列表相关的信息。 如何提取作为输入传递给函数的数组的大小

例如:

foo(inta[100]){
...
}
我想获得以下信息: 1) 数组中元素的类型 2) 数组的大小(如果是多维数组,则为与不同维度关联的大小)

在我的llvm过程中,我有一个函数,该函数在输入中给定一个llvm::Type,检查它是哪种类型,并提取我需要的信息,如果需要,递归调用自身以分析其他类型元素:

if(argType->isPointerTy()){
errs()getPointerElementType();
IdentificationArgType(指针类型);
}
但是,使用此函数,我只能获得与数组类型(int)相关的信息。如何提取数组的大小


我的猜测是,我必须检索指向元素的llvm::Type,但我不知道如何访问该对象。

尝试将参数类型强制转换为ArrayType(而不是元素类型),然后使用getNumElements函数。
请参见尝试将参数类型强制转换为ArrayType(而不是元素类型),然后使用GetNumements函数。
请参阅

@ WeeTaveA:问题不是C语言或C++语义。它是关于LLVM数据的。谢谢,我刚刚修改了标签。@问题:问题不是关于C或C++语义。这是关于LLVM数据的。谢谢,我刚刚更改了标签。