Author: djg Date: Thu Aug 16 17:06:45 2007 New Revision: 41130 URL: http://llvm.org/viewvc/llvm-project?rev=41130&view=rev Log: Fix the verification for overloaded intrinsic types. Check that they are what they're supposed to be before using them.
Modified: llvm/trunk/lib/VMCore/Verifier.cpp Modified: llvm/trunk/lib/VMCore/Verifier.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Verifier.cpp?rev=41130&r1=41129&r2=41130&view=diff ============================================================================== --- llvm/trunk/lib/VMCore/Verifier.cpp (original) +++ llvm/trunk/lib/VMCore/Verifier.cpp Thu Aug 16 17:06:45 2007 @@ -1144,6 +1144,15 @@ } } } 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 @@ 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 @@ "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)) { _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits