llvm-6502/lib/VMCore
Chris Lattner dd4b421516 Change the code to no longer compute the "type description" immediately when
the type is analyzed.  Instead, only compute it when requested (with
getDescription), and cached for reuse later.

This dramatically speeds up LLVM in general because these descriptions almost
_never_ need to be constructed.  The only time they are used is when a type is
<<'d.  Printing of modules by themselves uses other code to print symbolic
types when possible, so these descriptions are really only used for debugging.

Also, this fixes the particularly bad case when lots of types get resolved to
each other, such as during linking of large programs.  In these cases, the type
descriptions would be repeatedly recomputed and discarded even though: A. noone
reads the description before it gets resolved, and B. many many resolutions
happen at intermediate steps, causing a HUGE waste of time.

Overall, this makes the getTypeDesc function much more light-weight, and fixes
bug: Assembler/2002-07-08-HugePerformanceProblem.llx, which went from taking
1048.770u/19.150s (which is 17.5 MINUTES, on apoc), to taking 0.020u/0.000s,
which is a nice little speedup.  :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8320 91177308-0d34-0410-b5e6-96231b3b80d8
2003-09-02 16:35:17 +00:00
..
AsmWriter.cpp Support new 'any' support for pointer size and endianness 2003-08-24 13:48:48 +00:00
BasicBlock.cpp Allow specifying the name for the newly split basic block 2003-08-24 03:41:39 +00:00
ConstantFold.cpp Implement Assembler/2003-08-21-ConstantExprCast-Fold.llx 2003-08-21 19:45:55 +00:00
ConstantFold.h Add support for ~ operator on constants 2003-07-23 17:21:17 +00:00
ConstantFolding.h Add support for ~ operator on constants 2003-07-23 17:21:17 +00:00
ConstantRange.cpp Simplify code by using ConstantInt::getRawValue instead of checking to see 2003-07-23 15:22:26 +00:00
Constants.cpp Implement "unsafe" replaceAllUsesWWith stuff for use during type resolution. 2003-08-29 05:36:46 +00:00
Dominators.cpp Do not even attempt to compute dominator information for unreachable blocks 2003-08-18 22:11:16 +00:00
Function.cpp As it turns out, things will be simpler than I first expected. We no longer 2003-08-25 22:35:01 +00:00
iBranch.cpp
iCall.cpp Simplify assertions 2003-02-01 03:33:22 +00:00
iMemory.cpp Remove assertion which is never reached. 2003-09-02 06:45:34 +00:00
InstrTypes.cpp Simplify some of the PHI node interfaces 2003-03-05 21:15:12 +00:00
Instruction.cpp *** empty log message *** 2003-07-31 05:06:09 +00:00
iOperators.cpp The word dependent' has no a'. 2003-08-21 22:14:26 +00:00
iSwitch.cpp Rename SwitchInst::dest_push_back -> addCase 2003-08-23 23:14:37 +00:00
LeakDetector.cpp
Linker.cpp Fix bug where we considered function types equivalent even if they had differing numbers of arguments 2003-08-28 16:42:50 +00:00
Makefile
Mangler.cpp Mangle ALL letters that we do not allow, not just a few. 2003-08-24 21:08:38 +00:00
Module.cpp Implement new method 2003-08-31 00:19:28 +00:00
Pass.cpp Spell `necessary' correctly. 2003-08-18 14:43:39 +00:00
PassManagerT.h Add new method to FunctionPassManager to add ImmutablePasses. 2003-08-14 06:07:57 +00:00
SlotCalculator.cpp Remove redundant const qualifiers from cast<> expressions 2003-07-23 15:30:06 +00:00
SymbolTable.cpp Fix bug: Linker/2003-08-28-TypeResolvesGlobal2.ll 2003-08-29 05:11:34 +00:00
SymbolTableListTraitsImpl.h - Eliminated the deferred symbol table stuff in Module & Function, it really 2002-11-20 18:36:02 +00:00
Type.cpp Change the code to no longer compute the "type description" immediately when 2003-09-02 16:35:17 +00:00
Value.cpp Fix bug: Linker/2003-08-28-TypeResolvesGlobal3.ll 2003-08-29 05:37:22 +00:00
Verifier.cpp As it turns out, things will be simpler than I first expected. We no longer 2003-08-25 22:35:01 +00:00