isa<IntrinsicInst> actually performed a string comparison on the function name instead of just checking that the ID wasn't not_intrinsic, which was ~50 cycles per invocation instead of ~10. This should vastly reduce the number of wasteful string comparisons in intrinsic-heavy code. Furthermore, match() was *already doing this*; we actually had two different sets of behavior going on!
Unfortunately, this change seems to break three tests:
LLVM :: Bitcode/function-local-metadata.3.5.ll LLVM :: Bitcode/metadata.3.5.ll LLVM :: Transforms/GlobalOpt/metadata.ll
All of which use intrinsics like "llvm.foo" that don't really exist. Does anyone know what's up with this? Are the tests just bogus?