summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Simplify. Avoid redundant checks.Devang Patel2010-08-092-54/+38
| | | | llvm-svn: 110621
* Refactor.Devang Patel2010-08-091-9/+5
| | | | llvm-svn: 110607
* Refactoring. Update DbgVarible to handle queries itself.Devang Patel2010-08-092-82/+93
| | | | llvm-svn: 110600
* It is ok, and convenient, to pass descriptors by value.Devang Patel2010-08-092-41/+41
| | | | llvm-svn: 110590
* A REG_SEQUENCE instruction may use the same register twice.Jakob Stoklund Olesen2010-08-091-1/+11
| | | | | | | | | If we are emitting COPY instructions for the REG_SEQUENCE, make sure the kill flag goes on the last COPY. Otherwise we may be using a killed register. <rdar://problem/8287792> llvm-svn: 110589
* Rename a method.Devang Patel2010-08-091-3/+3
| | | | llvm-svn: 110586
* Use the "isCompare" machine instruction attribute instead of calling theBill Wendling2010-08-081-5/+5
| | | | | | | | | relatively expensive comparison analyzer on each instruction. Also rename the comparison analyzer method to something more in line with what it actually does. This pass is will eventually be folded into the Machine CSE pass. llvm-svn: 110539
* Tidy some #includes and forward-declarations, and move the C binding codeDan Gohman2010-08-071-0/+1
| | | | | | out of PassManager.cpp and into Core.cpp with the rest of the C binding code. llvm-svn: 110494
* Lazily defer duplicating the live interval we are splitting until we know it isJakob Stoklund Olesen2010-08-063-53/+70
| | | | | | | | | | necessary. Sometimes, live range splitting doesn't shrink the current interval, but simply changes some instructions to use a new interval. That makes the original more suitable for spilling. In this case, we don't need to duplicate the original. llvm-svn: 110481
* Cleanup comment wordingJim Grosbach2010-08-061-3/+3
| | | | llvm-svn: 110466
* Keep the MachiuneFunctionPass pointer around. It is useful for verification.Jakob Stoklund Olesen2010-08-061-1/+3
| | | | llvm-svn: 110464
* Add LiveInterval::RenumberValues - Garbage collection for VNInfos.Jakob Stoklund Olesen2010-08-062-1/+18
| | | | | | | After heavy editing of a live interval, it is much easier to simply renumber the live values instead of trying to keep track of the unused ones. llvm-svn: 110463
* Reapply r110396, with fixes to appease the Linux buildbot gods.Owen Anderson2010-08-0643-58/+58
| | | | llvm-svn: 110460
* Add more verification of LiveIntervals.Jakob Stoklund Olesen2010-08-061-4/+58
| | | | llvm-svn: 110454
* Fix swapped COPY operands.Jakob Stoklund Olesen2010-08-061-2/+2
| | | | llvm-svn: 110453
* Don't try to verify LiveIntervals for physical registers.Jakob Stoklund Olesen2010-08-061-8/+4
| | | | | | | | | When a physical register is in use, some alias of that register has a live interval with a relevant live range. That is the sad state of intervals after physreg coalescing of subregs, and it is good enough for correct register allocation. llvm-svn: 110452
* Update CMake build.Ted Kremenek2010-08-061-0/+1
| | | | llvm-svn: 110429
* Add the Optimize Compares pass (disabled by default).Bill Wendling2010-08-062-0/+113
| | | | | | | | | | | | | | | | This pass tries to remove comparison instructions when possible. For instance, if you have this code: sub r1, 1 cmp r1, 0 bz L1 and "sub" either sets the same flag as the "cmp" instruction or could be converted to set the same flag, then we can eliminate the "cmp" instruction all together. This is a important for ARM where the ALU instructions could set the CPSR flag, but need a special suffix ('s') to do so. llvm-svn: 110423
* While emitting DBG_VALUE for registers spilled at the end of a block do not ↵Devang Patel2010-08-061-1/+8
| | | | | | use location of MBB->end(). If a block does not have terminator then incoming iterator points to end(). llvm-svn: 110411
* Revert r110396 to fix buildbots.Owen Anderson2010-08-0642-57/+57
| | | | llvm-svn: 110410
* Be more aggressive about removing joined physreg copies.Jakob Stoklund Olesen2010-08-051-3/+10
| | | | | | | When a joined COPY changes subreg liveness, we keep it around as a KILL, otherwise it is safe to delete. llvm-svn: 110403
* Don't verify LiveVariables if LiveIntervals is available.Jakob Stoklund Olesen2010-08-051-12/+13
| | | | | | | | LiveVariables becomes horribly wrong while the coalescer is running, but the analysis is not zapped until after the coalescer pass has run. This causes tons of false reports when calling verify form the coalescer. llvm-svn: 110402
* Don't use PassInfo* as a type identifier for passes. Instead, use the ↵Owen Anderson2010-08-0542-57/+57
| | | | | | | | address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
* Add basic verification of LiveIntervals.Jakob Stoklund Olesen2010-08-051-0/+59
| | | | | | | | | | | | | | We verify that the LiveInterval is live at uses and defs, and that all instructions have a SlotIndex. Stuff we don't check yet: - Is the LiveInterval minimal? - Do all defs correspond to instructions or phis? - Do all defs dominate all their live ranges? - Are all live ranges continually reachable from their def? llvm-svn: 110386
* Remove double-def checking from MachineVerifier, so a register does not have toJakob Stoklund Olesen2010-08-052-89/+18
| | | | | | | | | | be killed before being redefined. These checks are usually disabled, and usually fail when enabled. We de facto allow live registers to be redefined without a kill, the corresponding assertions in RegScavenger were removed long ago. llvm-svn: 110362
* Avoid using a live std::multimap iterator while editing the map. It looks likeJakob Stoklund Olesen2010-08-051-7/+13
| | | | | | | we sometimes compare singular iterators, reported by ENABLE_EXPENSIVE_CHECKS. This fixes PR7825. llvm-svn: 110355
* The lower invoke pass needs to have unreachable code elimination run after itBill Wendling2010-08-041-2/+4
| | | | | | because it could create such things. This fixes a MingW buildbot test failure. llvm-svn: 110279
* Coalesce stack slot accesses that arise when spilling both sides of a COPY.Jakob Stoklund Olesen2010-08-041-0/+23
| | | | | | | | | This helps avoid silly code: %R0<def = LOAD <fi#5> STORE <fi#5>, %R0<kill> llvm-svn: 110266
* Checkpoint SplitKit progress.Jakob Stoklund Olesen2010-08-043-86/+223
| | | | | | | We are now at a point where we can split around simple single-entry, single-exit loops, although still with some bugs. llvm-svn: 110257
* Use location entry only of the location described by DBG_VALUE is valid.Devang Patel2010-08-041-3/+6
| | | | llvm-svn: 110255
* The EH prepare passes really want to be the last passes run before code-gen.Bill Wendling2010-08-041-5/+5
| | | | llvm-svn: 110248
* Fix typo in comment.Devang Patel2010-08-041-1/+1
| | | | llvm-svn: 110244
* Change this llvm_unreachable to report_fatal_error, since it canDan Gohman2010-08-041-4/+11
| | | | | | be triggered by valid, if dubious, IR. llvm-svn: 110240
* While spilling live registers at the end of block check whether they are ↵Devang Patel2010-08-041-1/+24
| | | | | | used by DBG_VALUE machine instructions or not. If a spilled register is used by DBG_VALUE machine instruction then insert a new DBG_VALUE machine instruction to encode variable's new location on stack. llvm-svn: 110235
* If a variable is spilled by code generator then use DW_OP_fbreg to describe ↵Devang Patel2010-08-041-10/+35
| | | | | | its location on stack. llvm-svn: 110234
* Eliminate unnecessary empty string literals.Dan Gohman2010-08-041-1/+1
| | | | llvm-svn: 110183
* Oops. Don't normalize spill weights twice.Jakob Stoklund Olesen2010-08-031-1/+0
| | | | | | | | | When the normalizeSpillWeights function was introduced, I forgot to remove this normalization. This change could affect register allocation. Hopefully for the better. llvm-svn: 110119
* Early exit and reduce indentation. No functionality change.Bill Wendling2010-08-021-105/+106
| | | | llvm-svn: 110069
* Free DbgScope created for dead functions.Devang Patel2010-08-021-0/+4
| | | | llvm-svn: 110045
* Prefix `next' iterator operation with `llvm::'.Oscar Fuentes2010-08-023-7/+7
| | | | | | | | Fixes potential ambiguity problems on VS 2010. Patch by nobled! llvm-svn: 110029
* PR7586: Make sure we don't claim that unknown bits are actually known in theEli Friedman2010-08-021-3/+2
| | | | | | ISD::AND case of TargetLowering::SimplifyDemandedBits. llvm-svn: 110019
* Reference the personalities. Don't copy them into a new vector.Bill Wendling2010-08-011-1/+1
| | | | llvm-svn: 109966
* Fix for bug reported by Evzen Muller on llvm-commits: make sure to correctlyEli Friedman2010-07-301-6/+3
| | | | | | | check the range of the constant when optimizing a comparison between a constant and a sign_extend_inreg node. llvm-svn: 109854
* Plug the remaining MC leaks by giving MCObjectStreamer/MCAsmStreamer ↵Benjamin Kramer2010-07-291-4/+0
| | | | | | ownership of the TargetAsmBackend and the MCCodeEmitter. llvm-svn: 109767
* Comment typo.Dale Johannesen2010-07-291-1/+1
| | | | llvm-svn: 109765
* Fix a bug in the -regalloc=fast handling of exotic two-address instruction withJakob Stoklund Olesen2010-07-291-3/+11
| | | | | | | | | | | | | | | | | multiple defs, like t2LDRSB_POST. The first def could accidentally steal the physreg that the second, tied def was required to be allocated to. Now, the tied use-def is treated more like an early clobber, and the physreg is reserved before allocating the other defs. This would never be a problem when the tied def was the only def which is the usual case. This fixes MallocBench/gs for thumb2 -O0. llvm-svn: 109715
* Print out the regclass of any virtual registers used by a machine instruction.Jakob Stoklund Olesen2010-07-281-0/+31
| | | | llvm-svn: 109608
* It is FE's responsibility to emit proper directory name.Devang Patel2010-07-271-4/+1
| | | | llvm-svn: 109538
* GrammarJim Grosbach2010-07-271-3/+3
| | | | llvm-svn: 109525
* Fix a crash in the dag combiner caused by ↵Nate Begeman2010-07-271-2/+10
| | | | | | | | ConstantFoldBIT_CONVERTofBUILD_VECTOR calling itself recursively and returning a SCALAR_TO_VECTOR node, but assuming the input was always a BUILD_VECTOR. llvm-svn: 109519
OpenPOWER on IntegriCloud