在llvm中使用参数创建函数,返回类型为uint32_t和long double的类型

时间:2017-03-05 19:50:39

标签: 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链接中, 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)

1 个答案:

答案 0 :(得分:1)

在LLVM IR中,所有类型都以类型和位数表示。编译完成后,会丢失已签名和未签名的信息。因此,一旦C代码被编译为LLVM IR,像uint32_t这样的类型将成为i32,而long double将成为x86_fp80,因为它是80位浮点格式。以下是有关types的一些信息。我认为您可以将此function用于long double。至于uint32_t,您可以使用this函数。