diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index 2b9bb6b18b5..38ce2525be7 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -112,6 +112,7 @@ namespace { // Anonymous namespace for class bool runOnFunction(Function &F) { // Get dominator information if we are being run by PassManager if (RealPass) EF = &getAnalysis(); + visit(F); InstsInThisBlock.clear(); @@ -333,6 +334,12 @@ void Verifier::visitFunction(Function &F) { F.getReturnType() == Type::VoidTy, "Functions cannot return aggregate values!", &F); + // Verify that this function (which has a body) is not named "llvm.*". It + // is not legal to define intrinsics. + if (F.getName().size() >= 5) + Assert1(F.getName().substr(0, 5) != "llvm.", + "llvm intrinsics cannot be defined!", &F); + // Check that this function meets the restrictions on this calling convention. switch (F.getCallingConv()) { default: