mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
Support var arg intrinsics.
llvm-svn: 33962
This commit is contained in:
parent
a38cfcb65c
commit
7d5ddeb668
@ -88,6 +88,8 @@ def llvm_v4i32_ty : LLVMPackedType<v4i32, 4, llvm_i32_ty>; // 4 x i32
|
||||
def llvm_v4f32_ty : LLVMPackedType<v4f32, 4, llvm_float_ty>; // 4 x float
|
||||
def llvm_v2f64_ty : LLVMPackedType<v2f64, 2, llvm_double_ty>;// 2 x double
|
||||
|
||||
def ... : LLVMType<isVoid, "...">; // vararg
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Intrinsic Definitions.
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -217,6 +219,11 @@ def int_dbg_func_start : Intrinsic<[llvm_void_ty, llvm_descriptor_ty]>;
|
||||
def int_dbg_declare : Intrinsic<[llvm_void_ty, llvm_ptr_ty,
|
||||
llvm_descriptor_ty]>;
|
||||
|
||||
//===------------------ Exception Handling Intrinsics----------------------===//
|
||||
//
|
||||
def int_eh_exception : Intrinsic<[llvm_ptr_ty]>;
|
||||
def int_eh_handlers : Intrinsic<[llvm_ptr_ty, llvm_ptr_ty, ...]>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Target-specific intrinsics
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -987,6 +987,10 @@ void Verifier::VerifyIntrinsicPrototype(Function *F, ...) {
|
||||
for (unsigned ArgNo = 0; 1; ++ArgNo) {
|
||||
int TypeID = va_arg(VA, int);
|
||||
|
||||
if (TypeID == -2) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (TypeID == -1) {
|
||||
if (ArgNo != FTy->getNumParams()+1)
|
||||
CheckFailed("Intrinsic prototype has too many arguments!", F);
|
||||
|
@ -176,7 +176,7 @@ using namespace llvm;
|
||||
|
||||
Comment \/\/.*
|
||||
|
||||
Identifier [a-zA-Z_][0-9a-zA-Z_]*
|
||||
Identifier [a-zA-Z_][0-9a-zA-Z_]*|\.\.\.
|
||||
Integer [-+]?[0-9]+|0x[0-9a-fA-F]+|0b[01]+
|
||||
CodeFragment \[\{([^}]+|\}[^\]])*\}\]
|
||||
StringVal \"[^"]*\"
|
||||
|
@ -109,6 +109,11 @@ EmitIntrinsicToNameTable(const std::vector<CodeGenIntrinsic> &Ints,
|
||||
}
|
||||
|
||||
static void EmitTypeVerify(std::ostream &OS, Record *ArgType) {
|
||||
if (ArgType->getValueAsString("TypeVal") == "...") {
|
||||
OS << "-2, ";
|
||||
return;
|
||||
}
|
||||
|
||||
OS << "(int)" << ArgType->getValueAsString("TypeVal") << ", ";
|
||||
// If this is an integer type, check the width is correct.
|
||||
if (ArgType->isSubClassOf("LLVMIntegerType"))
|
||||
|
Loading…
x
Reference in New Issue
Block a user