2017-03-05 3 views
1

Gibt es eine Möglichkeit, eine Funktion mit Rückgabetyp und Argumente wie uint32_t und long double zu erstellen? Zum Beispiel können wir Argumente vom Typ int erstellen wie folgt:Erstellen Sie Funktionen in llvm übergeben mit Argumenten und Rückgabetyp vom Typ Uint32_t und long double

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

Im llvm Link, http://llvm.org/docs/doxygen/html/classllvm_1_1Type.html. Ich kann nur

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

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

Antwort

1

In LLVM IR sehen, alle Arten in Bezug auf die Art und die Anzahl von Bits dargestellt werden. Sobald sie kompiliert sind, verlieren sie die Information von signiert und unsigniert. Sobald also ein C-Code zu LLVM IR kompiliert wird, werden Typen wie uint32_t i32 und long double würde x86_fp80 werden, da es ein 80-Bit-Floating-Format ist. Hier sind einige Informationen über types. Ich denke, dass Sie diese function für long double verwenden können. Wie für uint32_t, können Sie this Funktion verwenden.

Verwandte Themen