llvm-mirror/lib/IR
Justin Lebar c1a3abfb94 Don't invoke getName() from Function::isIntrinsic().
Summary:
getName() involves a hashtable lookup, so is expensive given how
frequently isIntrinsic() is called.  (In particular, many users cast to
IntrinsicInstr or one of its subclasses before calling
getIntrinsicID().)

This has an incidental functional change: Before, isIntrinsic() would
return true for any function whose name started with "llvm.", even if it
wasn't properly an intrinsic.  The new behavior seems more correct to
me, because it's strange to say that isIntrinsic() is true, but
getIntrinsicId() returns "not an intrinsic".

Some callers want the old behavior -- they want to know whether the
caller is a recognized intrinsic, or might be one in some other version
of LLVM.  For them, we added Function::hasLLVMReservedName(), which
checks whether the name starts with "llvm.".

This change is good for a 1.5% e2e speedup compiling a large Eigen
benchmark.

Reviewers: bogner

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D22065

llvm-svn: 276942
2016-07-27 23:46:57 +00:00
..
AsmWriter.cpp Don't invoke getName() from Function::isIntrinsic(). 2016-07-27 23:46:57 +00:00
AttributeImpl.h Expose AttributeSetNode, use it to provide aggregate getter for attribute in the C API. 2016-07-21 04:25:06 +00:00
Attributes.cpp Fix -Wreturn-type with gcc 4.8 and libc++ 2016-07-18 22:12:46 +00:00
AttributesCompatFunc.td Provide a way to specify inliner's attribute compatibility and merging. 2015-12-22 23:57:37 +00:00
AttributeSetNode.h Add missing import to fix the build 2016-07-21 04:31:38 +00:00
AutoUpgrade.cpp Invariant start/end intrinsics overloaded for address space 2016-07-22 17:49:40 +00:00
BasicBlock.cpp Apply clang-tidy's modernize-loop-convert to most of lib/IR. 2016-06-26 14:10:56 +00:00
CMakeLists.txt Move ProfileSummary to IR. 2016-05-19 21:07:12 +00:00
Comdat.cpp [NFC] Remove some dead code: 2016-05-11 16:38:40 +00:00
ConstantFold.cpp [ConstantFold] Don't incorrectly infer inbounds on array GEP 2016-07-13 03:24:41 +00:00
ConstantFold.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
ConstantRange.cpp fix formatting, typo; NFC 2016-06-19 17:20:27 +00:00
Constants.cpp Apply clang-tidy's modernize-loop-convert to most of lib/IR. 2016-06-26 14:10:56 +00:00
ConstantsContext.h Increase SmallVector size for ConstantUniqueMap::getHashValue() (NFC) 2016-04-19 00:17:55 +00:00
Core.cpp Expose AttributeSetNode, use it to provide aggregate getter for attribute in the C API. 2016-07-21 04:25:06 +00:00
DataLayout.cpp [IR] Make getIndexedOffsetInType return a signed result 2016-07-13 03:42:38 +00:00
DebugInfo.cpp StripDebugInfo: uses isa<DbgInfoIntrinsic> instead of matching against llvm.dbg.* (NFC) 2016-05-14 04:58:35 +00:00
DebugInfoMetadata.cpp [codeview] Add DISubprogram::ThisAdjustment 2016-07-01 02:41:21 +00:00
DebugLoc.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
DiagnosticInfo.cpp [OptRemark,LDist] RFC: Add hotness attribute 2016-07-15 17:23:20 +00:00
DiagnosticPrinter.cpp
DIBuilder.cpp [DIBuilder] Remove dead code. NFC. 2016-07-02 13:18:38 +00:00
Dominators.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
Function.cpp Don't invoke getName() from Function::isIntrinsic(). 2016-07-27 23:46:57 +00:00
GCOV.cpp llvm-cov: Fix reading gcov data that does not have function names 2016-02-08 22:49:40 +00:00
Globals.cpp [IR] [DAE] Copy comdats during DAE, and don't copy comdats in GlobalObject::copyAttributesFrom. 2016-06-15 23:20:15 +00:00
GVMaterializer.cpp
InlineAsm.cpp [InlineAsm] Avoid creating extra string instances in ConstraintInfo::Parse() 2016-05-23 13:58:04 +00:00
Instruction.cpp [IR] andIRFlags and copyIRFlags needs to handle GEP 2016-07-15 05:02:31 +00:00
Instructions.cpp Add getReturnedArgOperand to Call/InvokeInst, CallSite 2016-07-10 23:01:32 +00:00
IntrinsicInst.cpp [NFC] Remove some dead code: 2016-05-11 16:38:40 +00:00
IRBuilder.cpp Add invariant start call creation in IRBuilder.NFC 2016-07-22 20:57:23 +00:00
IRPrintingPasses.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
LegacyPassManager.cpp Remove doInitialization() and doFinalization() member declarations without definitions. 2016-04-28 19:21:30 +00:00
LLVMBuild.txt
LLVMContext.cpp [OptRemark,LDist] RFC: Add hotness attribute 2016-07-15 17:23:20 +00:00
LLVMContextImpl.cpp [OptRemark,LDist] RFC: Add hotness attribute 2016-07-15 17:23:20 +00:00
LLVMContextImpl.h [OptRemark,LDist] RFC: Add hotness attribute 2016-07-15 17:23:20 +00:00
Mangler.cpp Update to use new name alignTo(). 2016-01-14 21:06:47 +00:00
MDBuilder.cpp Fix the assertion failure caused by http://reviews.llvm.org/D22118 2016-07-11 17:36:02 +00:00
Metadata.cpp Rename StringMap::emplace_second to try_emplace. 2016-07-21 13:37:48 +00:00
MetadataImpl.h DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
Module.cpp Remove interface to get/set MaxFunctionCount 2016-06-20 21:36:38 +00:00
ModuleSummaryIndex.cpp [ThinLTO] Introduce typedef for commonly-used map type (NFC) 2016-04-25 21:09:51 +00:00
Operator.cpp [opaque pointer types] [NFC] GEP: replace get(Pointer)ElementType uses with get{Source,Result}ElementType. 2016-01-19 17:28:00 +00:00
OptBisect.cpp Removing unused function. 2016-04-22 22:24:20 +00:00
Pass.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
PassManager.cpp [PM] Run clang-format over various parts of the new pass manager code 2016-06-17 07:15:29 +00:00
PassRegistry.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
ProfileSummary.cpp Reapply r271728 after adding move cobstructor for ProfileSummaryInfo 2016-06-03 22:54:26 +00:00
Statepoint.cpp Introduce an GCRelocateInst class [NFC] 2016-04-12 18:05:10 +00:00
SymbolTableListTraitsImpl.h IR: Remove implicit iterator conversions from lib/IR, NFC 2015-10-08 23:49:46 +00:00
Type.cpp fix documentation comments; NFC 2016-06-02 20:37:52 +00:00
TypeFinder.cpp Apply clang-tidy's modernize-loop-convert to most of lib/IR. 2016-06-26 14:10:56 +00:00
Use.cpp
User.cpp [IR] Teach llvm::User to co-allocate a descriptor. 2015-09-24 01:00:49 +00:00
Value.cpp BasicAA should look through functions with returned arguments 2016-07-11 01:32:20 +00:00
ValueSymbolTable.cpp Apply clang-tidy's modernize-loop-convert to most of lib/IR. 2016-06-26 14:10:56 +00:00
ValueTypes.cpp Add isScalarInteger helper to EVT/MVT 2016-03-01 18:01:28 +00:00
Verifier.cpp Don't invoke getName() from Function::isIntrinsic(). 2016-07-27 23:46:57 +00:00