在 llvm 中创建函数传递参数和 return 类型 uint32_t 和 long double

Create functions in llvm pass with arguments and return type of type uint32_t and long double

有什么方法可以创建 return 类型和参数为 uint32_t 和 long double 的函数吗? 例如,我们可以如下创建 int 类型的参数:

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

在 llvm link 中, http://llvm.org/docs/doxygen/html/classllvm_1_1Type.html。我只能看到

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

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

在 LLVM IR 中,所有类型都以类型和位数来表示。一旦它们被编译,它们就会丢失签名和未签名的信息。因此,一旦将 C 代码编译为 LLVM IR,uint32_t 等类型将变为 i32,而 long double 将变为 x86_fp80,因为它是 80 位浮点格式。这里有一些关于 types. I think you can use this function for long double. As for uint32_t, you can use this 函数的信息。