在llvm过程中创建函数,参数和返回类型为uint32\u t和long double

在llvm过程中创建函数,参数和返回类型为uint32\u t和long double,llvm,llvm-clang,llvm-gcc,Llvm,Llvm Clang,Llvm Gcc,有没有办法创建一个返回类型和参数为uint32_t和long double的函数? 例如,我们可以创建int类型的参数,如下所示: std::vector<Type*>FuncTy_args; FuncTy_args.push_back(IntegerType::get(M.getContext(), 32)); 在LLVM IR中,所有类型都用类型和位数表示。一旦编译,它们就会丢失已签名和未签名的信息。因此,一旦一个C代码被编译成LLVM IR,像uint32\u t这样的类

有没有办法创建一个返回类型和参数为uint32_t和long double的函数? 例如,我们可以创建int类型的参数,如下所示:

 std::vector<Type*>FuncTy_args;
 FuncTy_args.push_back(IntegerType::get(M.getContext(), 32));

在LLVM IR中,所有类型都用类型和位数表示。一旦编译,它们就会丢失已签名和未签名的信息。因此,一旦一个C代码被编译成LLVM IR,像uint32\u t这样的类型将变成
i32
long double
将变成
x86\u fp80
,因为它是80位浮点格式。这里有一些关于。我想你可以用这个来做长双人。对于
uint32\u t
,您可以使用函数

static PointerType *    getDoublePtrTy (LLVMContext &C, unsigned AS=0)