aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2003-10-08Minor fixes here and thereChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8963 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-08Avoid building data structures we don't really need. This improves the runtimeChris Lattner
of a test that Bill Wendling sent me from 228.5s to 105s. Obviously there is more improvement to be had, but this is a nice speedup which should be "felt" by many programs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8962 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-08Change MRegisterDesc::AliasSet, TargetInstrDescriptor::ImplicitDefsAlkis Evlogimenos
and TargetInstrDescriptor::ImplicitUses to always point to a null terminated array and never be null. So there is no need to check for pointer validity when iterating over those sets. Code that looked like: if (const unsigned* AS = TID.ImplicitDefs) { for (int i = 0; AS[i]; ++i) { // use AS[i] } } was changed to: for (const unsigned* AS = TID.ImplicitDefs; *AS; ++AS) { // use *AS } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8960 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-07whoops, don't accidentally lose variable namesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8955 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-07Fix bug: InstCombine/cast.ll:test11 / PR#7Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8954 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-07Refactor code a bitChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8952 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-07Add a sanity check for constant expression castsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8951 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-07Fix bugzilla bug #5Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8930 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-07Bill contributed this major rewrite of the -lowerswitch pass to make it generateChris Lattner
logarithmic conditional branch sequences instead of linear sequences. Thanks Bill! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8928 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-07Fix bug in previous checkinChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8922 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-06Actually _PASS IN_ NO_RESERVE if we have it.Chris Lattner
Thanks to Brian for fixing this obvious oops git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8899 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-06ToolRunner.h has been moved from include/Support to include/llvm/Support.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8898 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-06Users can never be nullChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8895 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-06Minor speedups for the instcombine passChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8894 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-06Speed up the predicate used to decide when to inline by caching the sizeChris Lattner
of callees between executions. On eon, in release mode, this changes the inliner from taking 11.5712s to taking 2.2066s. In debug mode, it went from taking 14.4148s to taking 7.0745s. In release mode, this is a 24.7% speedup of gccas, in debug mode, it's a total speedup of 11.7%. This also makes it slightly more aggressive. This could be because we are not judging the size of the functions quite as accurately as before. When we start looking at the performance of the generated code, this can be investigated further. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8893 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-06Add # of printed instructions statistic to both the SPARC and X86 LLC backends.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8892 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-06Avoid doing pointless work. Amazingly, this makes us go faster.Chris Lattner
Running the inliner on 252.eon used to take 48.4763s, now it takes 14.4148s. In release mode, it went from taking 25.8741s to taking 11.5712s. This also fixes a FIXME. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8890 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-06Implement the NamedRegionTimer classChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8889 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-06All of our supported operating systems (so far) and FreeBSD technicallyBrian Gaeke
want you to include <sys/stat.h> for fstat(), struct stat, and friends. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8887 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05This changes the PromoteMemToReg function to create "pruned" SSA form, notChris Lattner
"minimal" SSA form (in other words, it doesn't insert dead PHIs). This speeds up the mem2reg pass very significantly because it doesn't have to do a lot of frivolous work in many common cases. In the 252.eon function I have been playing with, this doesn't even insert the 120 PHI nodes that it used to which were trivially dead (in the process of promoting 356 alloca instructions overall). This speeds up the mem2reg pass from 1.2459s to 0.1284s. More significantly, the DCE pass used to take 2.4138s to remove the 120 dead PHI nodes that mem2reg constructed, now it takes 0.0134s (which is the time to scan the function and decide that there is nothing dead). So overall, on this one function, we speed things up a total of 3.5179s, which is a 24.8x speedup! :) This change is tested by the Mem2Reg/2003-10-05-DeadPHIInsertion.ll test, which now passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8884 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05Change the interface to PromoteMemToReg to also take a DominatorTreeChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8883 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05Speed up the mem2reg transform for allocas which are only read/written in a ↵Chris Lattner
single basic block. This is amazingly common in code generated by the C/C++ front-ends. This change makes it not have to insert ANY phi nodes, whereas before it would insert a ton of dead ones which DCE would have to clean up. Thus, this fix improves compile-time performance of these trivial allocas in two ways: 1. It doesn't have to do the walking and book-keeping for renaming 2. It does not insert dead phi nodes for them which would have to subsequently be cleaned up. On my favorite testcase from 252.eon, this special case handles 305 out of 356 promoted allocas in the function. It speeds up the mem2reg pass from 7.5256s to 1.2505s. It inserts 677 fewer dead PHI nodes, which speeds up a subsequent -dce pass from 18.7524s to 2.4806s. There are still 120 trivially dead PHI nodes being inserted for variables used in multiple basic blocks, but they are not handled by this patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8881 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05Move support/lib/Support back to lib/SupportChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8874 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05Add support for the Invoke instruction by using the LowerInvoke passChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8872 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05Instead of hacking in custom support for Invoke/Unwind, use the LowerInvoke passChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8871 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05Initial checkin of the LLVM->LLVM transform to support code generators whichChris Lattner
do not support stack unwinding yet git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8869 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05simplify-cfg is really a function passChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8868 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05Be more careful handling PHI nodes, which might be of potentially high degree.Chris Lattner
This reduces the time to verify a function from eon with a large number of large PHI nodes from 22996s (6.38 hours) to 10.5499s git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8866 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05The first PHI node may be null, scan for the first non-null oneChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8865 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05The VersionNumbers vector is only used during PHI placement. Turn it into ↵Chris Lattner
an argument, allowing us to get rid of the vector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8864 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05* Update file header commentChris Lattner
*** Revamp the code which handled unreachable code in the function. Now the code is much more efficient for high-degree basic blocks, such as those that occur in the 252.eon SPEC benchmark. For the interested, the time to promote a SINGLE alloca in _ZN7mrScene4ReadERSi function used to be > 3.5s. Now it is < .075s. The function has a LOT of allocas in it, so it appeared to be infinite looping, this should make it much nicer. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8863 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05Simplify the loop a bitChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8862 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05There is no need for separate WriteSets and PhiNodeBlocks lists. It is just aChris Lattner
work-list of value definitions. This allows elimination of the explicit 'iterative' step of the algorithm, and also reuses temporary memory better. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8861 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05The PhiNodes 2D vector is only used during PHI node placement. It doesn'tChris Lattner
need to be an instance variable! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8860 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05* Document instance vars betterChris Lattner
* Fuse two parallel loops * Use a more specific type for AllocaLookup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8859 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05Two small cleanups/speedups:Chris Lattner
* Do not insert a new entry into NewPhiNodes during the rename pass if there are no PHIs in a block. * Do not compute WriteSets in parallel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8858 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05* Minor cleanupsChris Lattner
* Eliminate the KillList instance variable, instead, just delete loads and stores as they are "renamed", and delete allocas when they are done * Make the 'visited' set an instance variable to avoid passing it on the stack. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8857 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05A couple of minor code cleanups.Chris Lattner
Print literal doubles using ftostr instead of <<, because it yields higher precision numbers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8855 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-05Type tables are now AbstractTypeUsers. This allows them to merge togetherChris Lattner
constants as necessary due to type resolution. With this change, the following spec benchmarks now link: 176.gcc, 177.mesa, 252.eon, 253.perlbmk, & 300.twolf. IOW, all SPEC INT and FP benchmarks now link. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8853 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-04Rename AbstractModuleProvider -> ModuleProvider, to match the header file name,Chris Lattner
and because, while the class used by the interface is abstract, the actual concept is not. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8850 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-04Transform two methods to return pointers directly instead of returning themChris Lattner
as 'by reference' arguments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8849 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-04Use V for values, not D.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8848 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-04Do not leak the ModuleProvider if releaseModule() throws.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8847 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-03Minor random speedup: make Constant::getNullValue only call ConstantFOO::getChris Lattner
once! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8845 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-03Explicit copy ctors are no longer neededChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8844 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-03Minor cleanupsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8843 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-03This checkin basically amounts to a complete rewrite of the type-resolutionChris Lattner
machinery. This dramatically simplifies how things works, removes irritating little corner cases, and overall improves speed and reliability. Highlights of this change are: 1. The exponential algorithm built into the code is now gone. For example the time to disassemble one bytecode file from the mesa benchmark went from taking 12.5s to taking 0.16s. 2. The linker bugs should be dramatically reduced. The one remaining bug has to do with constant handling, which I actually introduced in "union-find" checkins. 3. The code is much easier to follow, as a result of fewer special cases. It's probably also smaller. yaay. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8842 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-03These methods are dead, remove them. Because the bodies will soon beChris Lattner
ressurected, just ifdef them out for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8840 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-03Dramatically simplify DerivedType::refineAbstractTypeToInternalChris Lattner
This makes use of the new PATypeHolder's to keep types from being deleted prematurely, instead of the wierd "self reference" garbage. This is easier to understand and more efficient as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8834 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-02Make the PATypeHolder use a simple union-find implementation to handleChris Lattner
merging of types. This makes it MUCH more efficient than before, also making things simpler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8833 91177308-0d34-0410-b5e6-96231b3b80d8