函数
Function *RemoveStruct::CreateMidFunction(Function *F, StructType *val_st, const int argNo)
通过val_num将所有的array记录,再利用createArrayStructType函数根据sub_struct type创建相应的sub array struct type
else if (IsArrayStructVal(oldArg_type)) {
StructType *arg_st = getValueStructType(oldArg);
//When the formalArg has same StructType to val
if (argNo == count) {
assert(arg_st == val_st);
int struct_num = arg_st->getStructNumElements();
vector<int> val_num;
val_num.clear();
bool b = ArrayVarNums(oldArg_type, val_num);
for (int j = 0; j < struct_num; j++) {
Type *sub_type = arg_st->getStructElementType(j);
ArrayType *arrayType = createArrayStructType(val_num, sub_type);
outs()<<*sub_type <<" "<<*arrayType<<"\n";
if (arrayType->isPointerTy()) {
params.push_back(arrayType);
} else {
params.push_back(arrayType->getPointerTo(0));
}
}
}
}