mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 21:29:20 +00:00
Fix the verification for overloaded intrinsic types. Check that they are
what they're supposed to be before using them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41130 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
62bc33c954
commit
fe5b4393d4
@ -1144,6 +1144,15 @@ void Verifier::VerifyIntrinsicPrototype(Intrinsic::ID ID,
|
||||
}
|
||||
}
|
||||
} else if (VT == MVT::iAny) {
|
||||
if (!EltTy->isInteger()) {
|
||||
if (ArgNo == 0)
|
||||
CheckFailed("Intrinsic result type is not "
|
||||
"an integer type.", F);
|
||||
else
|
||||
CheckFailed("Intrinsic parameter #" + utostr(ArgNo-1) + " is not "
|
||||
"an integer type.", F);
|
||||
break;
|
||||
}
|
||||
unsigned GotBits = cast<IntegerType>(EltTy)->getBitWidth();
|
||||
Suffix += ".";
|
||||
if (EltTy != Ty)
|
||||
@ -1158,10 +1167,6 @@ void Verifier::VerifyIntrinsicPrototype(Intrinsic::ID ID,
|
||||
break;
|
||||
}
|
||||
} else if (VT == MVT::fAny) {
|
||||
Suffix += ".";
|
||||
if (EltTy != Ty)
|
||||
Suffix += "v" + utostr(NumElts);
|
||||
Suffix += MVT::getValueTypeString(MVT::getValueType(EltTy));
|
||||
if (!EltTy->isFloatingPoint()) {
|
||||
if (ArgNo == 0)
|
||||
CheckFailed("Intrinsic result type is not "
|
||||
@ -1171,10 +1176,18 @@ void Verifier::VerifyIntrinsicPrototype(Intrinsic::ID ID,
|
||||
"a floating-point type.", F);
|
||||
break;
|
||||
}
|
||||
Suffix += ".";
|
||||
if (EltTy != Ty)
|
||||
Suffix += "v" + utostr(NumElts);
|
||||
Suffix += MVT::getValueTypeString(MVT::getValueType(EltTy));
|
||||
} else if (VT == MVT::iPTR) {
|
||||
if (!isa<PointerType>(Ty)) {
|
||||
CheckFailed("Intrinsic parameter #" + utostr(ArgNo-1) + " is not a "
|
||||
"pointer and a pointer is required.", F);
|
||||
if (ArgNo == 0)
|
||||
CheckFailed("Intrinsic result type is not a "
|
||||
"pointer and a pointer is required.", F);
|
||||
else
|
||||
CheckFailed("Intrinsic parameter #" + utostr(ArgNo-1) + " is not a "
|
||||
"pointer and a pointer is required.", F);
|
||||
break;
|
||||
}
|
||||
} else if (MVT::isVector(VT)) {
|
||||
|
Loading…
Reference in New Issue
Block a user