summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix some serious bugs in the cmov descriptions, which didn't cause a problem ↵Chris Lattner2004-03-301-60/+60
| | | | | | | | | | because we never generated them Make indentation a bit more consistent llvm-svn: 12549
* Start cleaning up this pass so that I can debug it.Brian Gaeke2004-03-301-80/+34
| | | | llvm-svn: 12548
* Now that all the code generators support the select instruction, and the ↵Chris Lattner2004-03-301-78/+9
| | | | | | | | instcombine pass can eliminate many nasty cases of them, start generating them in the optimizers llvm-svn: 12545
* Implement select.ll:test[3-6]Chris Lattner2004-03-301-4/+32
| | | | llvm-svn: 12544
* Fix a fairly major performance problem. If a PHI node had a constant asChris Lattner2004-03-301-11/+18
| | | | | | | | | an incoming value from a block, the selector would evaluate the constant at the TOP of the block instead of at the end of the block. This made the live range for the constant span the entire block, increasing register pressure needlessly. llvm-svn: 12542
* Add the select lowering pass to get initial support for select instructionsChris Lattner2004-03-302-0/+10
| | | | llvm-svn: 12541
* Add a simple select instruction lowering passChris Lattner2004-03-301-0/+95
| | | | llvm-svn: 12540
* Add some new methodsChris Lattner2004-03-301-15/+87
| | | | llvm-svn: 12539
* Don't warn about a null live range if the Value is a ConstantIntegral.Brian Gaeke2004-03-291-1/+1
| | | | | | | Otherwise, if you're in debugging mode, you get warnings for (apparently) every immediate constant in the function during reg. allocation. llvm-svn: 12538
* Change how the beginnings and ends of MachineFunctions are printed. GetBrian Gaeke2004-03-291-3/+3
| | | | | | rid of the funny cast. llvm-svn: 12537
* Adjust to new itfChris Lattner2004-03-291-2/+2
| | | | llvm-svn: 12534
* Handle -0.0 correctlyChris Lattner2004-03-291-1/+4
| | | | llvm-svn: 12530
* Add a bunch of methods that should have been added a long time ago.Chris Lattner2004-03-291-0/+61
| | | | llvm-svn: 12526
* Add another checkChris Lattner2004-03-291-0/+5
| | | | llvm-svn: 12525
* Fix an assertionChris Lattner2004-03-291-1/+1
| | | | | | Contributed by Reid Spencer llvm-svn: 12524
* Make error message a bit nicer.Chris Lattner2004-03-291-1/+1
| | | | | | Contributed by Reid Spencer llvm-svn: 12523
* Add two methods which have been needed for a long time: ↵Chris Lattner2004-03-261-0/+35
| | | | | | Type::get(Un)signedVersion llvm-svn: 12522
* X % -1 == X % 1 == 0Chris Lattner2004-03-261-0/+2
| | | | llvm-svn: 12520
* Two changes:Chris Lattner2004-03-251-16/+40
| | | | | | | | | | #1 is to unconditionally strip constantpointerrefs out of instruction operands where they are absolutely pointless and inhibit optimization. GRRR! #2 is to implement InstCombine/getelementptr_const.ll llvm-svn: 12519
* Minor efficiency improvement, finegrainify namespacificationChris Lattner2004-03-251-5/+10
| | | | llvm-svn: 12517
* Hrm, we were leaking ~1M of garbage that valgrind never told us about becauseChris Lattner2004-03-191-0/+8
| | | | | | it was "reachable". Cute. llvm-svn: 12515
* Teach the optimizer to delete zero sized alloca's (but not mallocs!)Chris Lattner2004-03-191-4/+12
| | | | llvm-svn: 12507
* Fix PR299: [Sparc] Code generator asserts on alloc of zero size typeChris Lattner2004-03-191-1/+7
| | | | llvm-svn: 12504
* Malloc doesn't kill a load. This patch need not go into 1.2 though.Chris Lattner2004-03-181-1/+0
| | | | llvm-svn: 12500
* Fix a really nasty bug that was breaking ijpeg in LLC mode. We were incorrectlyChris Lattner2004-03-181-0/+2
| | | | | | | folding load instructions into other instructions across free instruction boundaries. Perhaps this will also fix the other strange failures? llvm-svn: 12494
* Fix bug: CodeExtractor/2004-03-17-MissedLiveIns.llChris Lattner2004-03-181-0/+5
| | | | | | | With this fix we now successfully extract all 149 loops from 256.bzip2 without crashing or miscompiling the program! llvm-svn: 12493
* Add statistics to the loop extractor. The loop extractor has successfullyChris Lattner2004-03-181-0/+6
| | | | | | | extracted all 63 loops for Olden/bh without crashing and without miscompiling the program!!! llvm-svn: 12491
* Fix problem with PHI nodes having multiple predecessors from differentChris Lattner2004-03-181-1/+2
| | | | | | exit nodes llvm-svn: 12490
* Fix CodeExtractor/2004-03-17-UpdatePHIsOutsideRegion.llChris Lattner2004-03-181-0/+13
| | | | llvm-svn: 12489
* Seriously simplify and correct the PHI node handling code.Chris Lattner2004-03-181-162/+28
| | | | llvm-svn: 12487
* Fix CodeExtractor/2004-03-17-OutputMismatch.llChris Lattner2004-03-181-3/+7
| | | | llvm-svn: 12486
* Fix several bugs in the extractor:Chris Lattner2004-03-181-45/+52
| | | | | | | | | | | | 1. Names were not put on the new arguments created (ok, this just helps sanity :) 2. Fix outgoing pointer values 3. Do not insert stores for values that had not been computed 4. Fix some wierd problems with the outset calculation This fixes CodeExtractor/2004-03-14-DominanceProblem.ll, making the extractor work on at least one simple case! llvm-svn: 12484
* The code extractor needs dominator info. Provide itChris Lattner2004-03-181-3/+7
| | | | llvm-svn: 12483
* Prune #includes, moving the module interface to the front. Note that thisChris Lattner2004-03-181-2/+1
| | | | | | | exposed the fact that the header was not self-contained. There is a reason we do things :) llvm-svn: 12481
* Fix a HORRIBLY NASTY bug that caused siod to stop working last night.Chris Lattner2004-03-171-1/+1
| | | | llvm-svn: 12479
* Fix compilation of mesa, which I broke earlier todayChris Lattner2004-03-171-2/+3
| | | | llvm-svn: 12465
* Be more accurateChris Lattner2004-03-171-4/+15
| | | | llvm-svn: 12464
* Make the set of fixed (preallocated) intervals be a fixed superset ofAlkis Evlogimenos2004-03-171-29/+10
| | | | | | | unhandled + handled. So unhandled is now including all fixed intervals and fixed intervals never changes when processing a function. llvm-svn: 12462
* Fix bug in previous checkinChris Lattner2004-03-161-2/+7
| | | | llvm-svn: 12458
* Okay, so there is no reasonable way for tail duplication to update SSA form,Chris Lattner2004-03-161-195/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | as it is making effectively arbitrary modifications to the CFG and we don't have a domset/domfrontier implementations that can handle the dynamic updates. Instead of having a bunch of code that doesn't actually work in practice, just demote any potentially tricky values to the stack (causing the problem to go away entirely). Later invocations of mem2reg will rebuild SSA for us. This fixes all of the major performance regressions with tail duplication from LLVM 1.1. For example, this loop: --- int popcount(int x) { int result = 0; while (x != 0) { result = result + (x & 0x1); x = x >> 1; } return result; } --- Used to be compiled into: int %popcount(int %X) { entry: br label %loopentry loopentry: ; preds = %entry, %no_exit %x.0 = phi int [ %X, %entry ], [ %tmp.9, %no_exit ] ; <int> [#uses=3] %result.1.0 = phi int [ 0, %entry ], [ %tmp.6, %no_exit ] ; <int> [#uses=2] %tmp.1 = seteq int %x.0, 0 ; <bool> [#uses=1] br bool %tmp.1, label %loopexit, label %no_exit no_exit: ; preds = %loopentry %tmp.4 = and int %x.0, 1 ; <int> [#uses=1] %tmp.6 = add int %tmp.4, %result.1.0 ; <int> [#uses=1] %tmp.9 = shr int %x.0, ubyte 1 ; <int> [#uses=1] br label %loopentry loopexit: ; preds = %loopentry ret int %result.1.0 } And is now compiled into: int %popcount(int %X) { entry: br label %no_exit no_exit: ; preds = %entry, %no_exit %x.0.0 = phi int [ %X, %entry ], [ %tmp.9, %no_exit ] ; <int> [#uses=2] %result.1.0.0 = phi int [ 0, %entry ], [ %tmp.6, %no_exit ] ; <int> [#uses=1] %tmp.4 = and int %x.0.0, 1 ; <int> [#uses=1] %tmp.6 = add int %tmp.4, %result.1.0.0 ; <int> [#uses=2] %tmp.9 = shr int %x.0.0, ubyte 1 ; <int> [#uses=2] %tmp.1 = seteq int %tmp.9, 0 ; <bool> [#uses=1] br bool %tmp.1, label %loopexit, label %no_exit loopexit: ; preds = %no_exit ret int %tmp.6 } llvm-svn: 12457
* This code was both incredibly complex and incredibly broken. Fix it.Chris Lattner2004-03-161-137/+57
| | | | llvm-svn: 12456
* The .type directive on Solaris uses the # character instead of @.Brian Gaeke2004-03-161-2/+2
| | | | llvm-svn: 12454
* Fix bug in zero-extending of shorts.Brian Gaeke2004-03-161-2/+2
| | | | llvm-svn: 12453
* Add UMULrr and SMULrr instructions.Brian Gaeke2004-03-161-0/+4
| | | | llvm-svn: 12452
* Use ! for comment char; it works in both Solaris as and GAS.Brian Gaeke2004-03-161-7/+7
| | | | llvm-svn: 12451
* Make getClass more robust by adding cLong.Brian Gaeke2004-03-161-1/+7
| | | | | | Add handling for Mul instruction. llvm-svn: 12450
* Punt if we see gigantic PHI nodes. This improves a huge interpreter loopChris Lattner2004-03-161-0/+6
| | | | | | testcase from 32.5s in -raise to take .3s llvm-svn: 12443
* Do not try to optimize PHI nodes with incredibly high degree. This reduces SCCPChris Lattner2004-03-161-0/+7
| | | | | | | time from 615s to 1.49s on a large testcase that has a gigantic switch statement that all of the blocks in the function go to (an intepreter). llvm-svn: 12442
* Do not copy gigantic switch instructionsChris Lattner2004-03-162-2/+19
| | | | llvm-svn: 12441
* Fix PR296: [execution engines] Unhandled cast constant expressionChris Lattner2004-03-161-6/+17
| | | | llvm-svn: 12435
OpenPOWER on IntegriCloud