Use the new parameter on Function::getIntrinsicID to identify cases where
a function is being called with an "llvm." name but it isn't actually an
intrinsic. In such cases generate an error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36121
91177308-0d34-0410-b5e6-
96231b3b80d8
Value *V = getVal(PFTy, $4); // Get the function we're calling...
CHECK_FOR_ERROR
+ // Check for call to invalid intrinsic to avoid crashing later.
+ if (Function *theF = dyn_cast<Function>(V)) {
+ if (theF->hasName() && 0 == strncmp(theF->getName().c_str(), "llvm.", 5)&&
+ !theF->getIntrinsicID(true))
+ GEN_ERROR("Call to invalid LLVM intrinsic function '" +
+ theF->getName() + "'");
+ }
+
// Check the arguments
ValueList Args;
if ($6->empty()) { // Has no arguments?