New feature: add support for target intrinsics being defined in the

target directories themselves.  This also means that VMCore no longer
needs to know about every target's list of intrinsics.  Future work
will include converting the PowerPC target to this interface as an
example implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63765 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nate Begeman
2009-02-04 19:47:21 +00:00
parent e5ab34e05d
commit d24479730a
21 changed files with 207 additions and 43 deletions

View File

@@ -2949,15 +2949,6 @@ bool LLParser::ParseCall(Instruction *&Inst, PerFunctionState &PFS,
Value *Callee;
if (ConvertValIDToValue(PFTy, CalleeID, Callee, PFS)) return true;
// Check for call to invalid intrinsic to avoid crashing later.
if (Function *F = dyn_cast<Function>(Callee)) {
if (F->hasName() && F->getNameLen() >= 5 &&
!strncmp(F->getValueName()->getKeyData(), "llvm.", 5) &&
!F->getIntrinsicID(true))
return Error(CallLoc, "Call to invalid LLVM intrinsic function '" +
F->getNameStr() + "'");
}
// FIXME: In LLVM 3.0, stop accepting zext, sext and inreg as optional
// function attributes.
unsigned ObsoleteFuncAttrs = Attribute::ZExt|Attribute::SExt|Attribute::InReg;