summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Be more clever about calculating live variables through new basic blocks.Jakob Stoklund Olesen2009-11-213-43/+31
| | | | | | | | | | | | When splitting a critical edge, the registers live through the edge are: - Used in a PHI instruction, or - Live out from the predecessor, and - Live in to the successor. This allows the coalescer to eliminate even more phi joins. llvm-svn: 89530
* Remove dead code.Devang Patel2009-11-211-15/+0
| | | | llvm-svn: 89522
* When generating a vector the really slow way, via loadsDale Johannesen2009-11-211-3/+9
| | | | | | | and stores, handle the case where the element size is not a valid target type correctly (PPC). llvm-svn: 89521
* There is no need to use FoldingSet to unique DIEs. Devang Patel2009-11-214-309/+58
| | | | | | DIEs are created from MDNode, which are already uniqued. And DwarfDebug already uses ValueMaps to find and use existing DIE for a given MDNode. llvm-svn: 89518
* Restructure code to allow renaming of multiple-register groups for anti-dep ↵David Goodwin2009-11-201-44/+73
| | | | | | breaking. llvm-svn: 89511
* Enable hoisting load from constant memories.Evan Cheng2009-11-201-21/+6
| | | | llvm-svn: 89510
* Target-independent support for TargetFlags on BlockAddress operands,Dan Gohman2009-11-204-11/+20
| | | | | | and support for blockaddresses in x86-32 PIC mode. llvm-svn: 89506
* Do not hold on to a map slot while new entries may be inserted into the map.Devang Patel2009-11-201-27/+33
| | | | | | Use ValueMap, instead of std::map. llvm-svn: 89490
* Cleanups.David Greene2009-11-201-3/+6
| | | | | | Make things a little more efficient as suggested by Evan. llvm-svn: 89489
* There is no need to emit source location info for DW_TAG_pointer_type.Devang Patel2009-11-201-1/+1
| | | | llvm-svn: 89487
* Add option -licm-const-load to hoist all loads from constant memory.Evan Cheng2009-11-201-19/+56
| | | | llvm-svn: 89477
* Remove some old experimental code that is no longer needed. Remove ↵David Goodwin2009-11-208-241/+79
| | | | | | additional, speculative scheduling pass as its cost did not translate into significant performance improvement. Minor tweaks. llvm-svn: 89471
* More consistent labelling of basic blocks in debug outputJakob Stoklund Olesen2009-11-201-1/+2
| | | | llvm-svn: 89470
* Fix PR5558, which was caused by a wrong fix for PR3393 (see commit 63048),Duncan Sands2009-11-202-35/+23
| | | | | | | | which was an expensive checks failure due to a bug in the checking. This patch in essence reverts the original fix for PR3393, and refixes it by a tweak to the way expensive checking is done. llvm-svn: 89454
* Fix fast-isel to avoid selecting the return instruction if aDan Gohman2009-11-201-3/+15
| | | | | | tail call has been encountered. llvm-svn: 89444
* Add an experimental option to run gep-splitting and no-load GVNDan Gohman2009-11-201-0/+11
| | | | | | just before codegen. llvm-svn: 89439
* Add MachineBasicBlock::getName, and use it in place of getBasicBlock()->getName.Jakob Stoklund Olesen2009-11-206-7/+14
| | | | | | Fix debug code that assumes getBasicBlock never returns NULL. llvm-svn: 89428
* Removed references to LiveStacks from Spiller.* . They're no longer needed.Lang Hames2009-11-203-15/+9
| | | | llvm-svn: 89422
* Fix a couple of problems with maintaining liveness information for antidep ↵David Goodwin2009-11-192-18/+50
| | | | | | breaking. llvm-svn: 89404
* Place new basic blocks immediately after their predecessor when splittingJakob Stoklund Olesen2009-11-191-7/+7
| | | | | | | | | critical edges in PHIElimination. This has a huge impact on regalloc performance, and we recover almost all of the 10% compile time regression that edge splitting introduced. llvm-svn: 89381
* Reverting the EH table patches.Bill Wendling2009-11-191-29/+6
| | | | | | | | | | | | | $ svn merge -c -89279 https://llvm.org/svn/llvm-project/llvm/trunk --- Reverse-merging r89279 into '.': U lib/CodeGen/AsmPrinter/DwarfException.cpp U lib/Target/TargetLoweringObjectFile.cpp $ svn merge -c -89270 https://llvm.org/svn/llvm-project/llvm/trunk --- Reverse-merging r89270 into '.': G lib/CodeGen/AsmPrinter/DwarfException.cpp G lib/Target/TargetLoweringObjectFile.cpp llvm-svn: 89379
* Fix a small bug.David Greene2009-11-191-1/+1
| | | | | | | Fix one case we missed to make sure we reserve registers from allocation. llvm-svn: 89376
* Add support for spreading register allocation.David Greene2009-11-191-7/+60
| | | | | | | | | | | | | Add a -linearscan-skip-count argument (default to 0) that tells the allocator to remember the last N registers it allocated and skip them when looking for a register candidate. This tends to spread out register usage and free up post-allocation scheduling at the cost of slightly more register pressure. The primary benefit is the ability to backschedule reloads. This is turned off by default. llvm-svn: 89356
* Added a new Spiller implementation which wraps ↵Lang Hames2009-11-193-25/+55
| | | | | | | | | | LiveIntervals::addIntervalsForSpills. All spiller calls in RegAllocLinearScan now go through the new Spiller interface. The "-new-spill-framework" command line option has been removed. To use the trivial in-place spiller you should now pass "-spiller=trivial -rewriter=trivial". (Note the trivial spiller/rewriter are only meant to serve as examples of the new in-place modification work. Enabling them will yield terrible, though hopefully functional, code). llvm-svn: 89311
* The "ReadOnlyWithRel" enum seems to apply more to what Darwin does with the EHBill Wendling2009-11-191-4/+5
| | | | | | exception table than DataRel. llvm-svn: 89279
* There should be no need to keep renumbering blocks during tail duplication.Bob Wilson2009-11-181-3/+0
| | | | llvm-svn: 89275
* Attempt #2:Bill Wendling2009-11-181-6/+28
| | | | | | Place the EH table in the __TEXT section on MachO. It saves space. llvm-svn: 89270
* Tail duplication still needs to iterate. Duplicating new instructions ontoBob Wilson2009-11-181-3/+7
| | | | | | the tail of a block may make that block a new candidate for duplication. llvm-svn: 89264
* Add another statistic to measure code size due to tail duplication.Bob Wilson2009-11-181-0/+3
| | | | llvm-svn: 89254
* Fix PR5300.Jakob Stoklund Olesen2009-11-181-12/+5
| | | | | | | | When TwoAddressInstructionPass deletes a dead instruction, make sure that all register kills are accounted for. The 2-addr register does not get special treatment. llvm-svn: 89246
* Allow the machine verifier to be run outside the PassManager.Jakob Stoklund Olesen2009-11-181-17/+160
| | | | | | Verify LiveVariables information when present. llvm-svn: 89241
* Remove the -early-coalescing optionJakob Stoklund Olesen2009-11-181-137/+0
| | | | llvm-svn: 89240
* Fixed the in-place spiller and trivial rewriter, which had been broken by ↵Lang Hames2009-11-183-221/+56
| | | | | | the recent SlotIndexes work. llvm-svn: 89238
* Add statistics for tail duplication.Bob Wilson2009-11-181-0/+4
| | | | llvm-svn: 89225
* Don't require LiveVariables for PHIElimination. Enable critical edge splittingJakob Stoklund Olesen2009-11-182-28/+9
| | | | | | | | | | | | when LiveVariables is available. The -split-phi-edges is now gone, and so is the hack to disable it when using the local register allocator. The PHIElimination pass no longer has LiveVariables as a prerequisite - that is what broke the local allocator. Instead we do critical edge splitting when possible - that is when LiveVariables is available. llvm-svn: 89213
* Add a target hook to allow changing the tail duplication limit based on theBob Wilson2009-11-181-4/+5
| | | | | | | | | contents of the block to be duplicated. Use this for ARM Cortex A8/9 to be more aggressive tail duplicating indirect branches, since it makes it much more likely that they will be predicted in the branch target buffer. Testcase coming soon. llvm-svn: 89187
* Fix inverted test and add testcase from failing self-host.Jakob Stoklund Olesen2009-11-181-9/+7
| | | | llvm-svn: 89167
* Disable -split-phi-edges to unbreak the buildbotsJakob Stoklund Olesen2009-11-171-1/+1
| | | | llvm-svn: 89142
* Never call UpdateTerminator() when AnalyzeBranch would fail.Jakob Stoklund Olesen2009-11-171-1/+13
| | | | llvm-svn: 89139
* Add a WriteAsOperand for MachineBasicBlock so MachineLoopInfo dump looks sane.Evan Cheng2009-11-171-0/+5
| | | | llvm-svn: 89130
* Fix comment.Evan Cheng2009-11-171-3/+3
| | | | llvm-svn: 89129
* Enable -split-phi-edges by default, except when -regalloc=local.Jakob Stoklund Olesen2009-11-171-3/+15
| | | | | | | The local register allocator doesn't like it when LiveVariables is run. We should also disable edge splitting under -O0, but that has to wait a bit. llvm-svn: 89125
* Remove a special case for tail merging that seems to be both broken andBob Wilson2009-11-171-33/+0
| | | | | | | | | | | unnecessary. It is broken because the "isIdenticalTo" check should be negated. If that is fixed, this code causes the CodeGen/X86/tail-opts.ll test to fail, in the dont_merge_oddly function. And, I confirmed that the regression is real -- the generated code is worse. As far as I can tell, that tail-opts.ll test is checking for what this code is supposed to handle and we're doing the right thing anyway. llvm-svn: 89121
* Set MadeChange instead of MadeChangeThisIteration.Dan Gohman2009-11-171-1/+1
| | | | llvm-svn: 89114
* Update a comment, now that tail duplication happens after other branchBob Wilson2009-11-171-2/+2
| | | | | | folding optimizations. llvm-svn: 89109
* Perform tail duplication only once, after tail merging is complete.Bob Wilson2009-11-172-33/+68
| | | | | | | It was too difficult to keep the heuristics for merging and duplication consistent. llvm-svn: 89105
* Revert 89021. It's miscompiling llvm-gcc driver driver at -O0.Evan Cheng2009-11-171-1/+1
| | | | llvm-svn: 89082
* Remove VISIBILITY_HIDDEN from the classes in this directory. Fixes bug 5507.Nick Lewycky2009-11-175-19/+18
| | | | llvm-svn: 89075
* Revert r88939.Nick Lewycky2009-11-171-2/+2
| | | | llvm-svn: 89066
* Refactor the code that creates the "dot-label" difference. This may be used inBill Wendling2009-11-172-18/+29
| | | | | | more than one place. No intended functionality change. llvm-svn: 89024
OpenPOWER on IntegriCloud