mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
Fix the verification for overloaded intrinsic types. Check that they are
what they're supposed to be before using them. llvm-svn: 41130
This commit is contained in:
parent
70ac81f489
commit
644db457f0
@ -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