summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Target/X86: Fix whitespace.NAKAMURA Takumi2011-02-053-7/+7
| | | | llvm-svn: 124946
* Windows/Program.inc: Quote arguments when dubious characters (used by ↵NAKAMURA Takumi2011-02-051-1/+1
| | | | | | cmd.exe or MSYS shell) are included to invoke CreateProcess(). Thanks to Danil Malyshev. llvm-svn: 124945
* Fix an anti-dep breaker corner case.Andrew Trick2011-02-051-1/+0
| | | | | | | | | | | | | <rdar://problem/8959122> illegal register operands for UMULL instruction in cfrac nightly test I'm stil working on a unit test, but the case is: rx = movcc rx, r3 r2 = ldr r2, r3 = umull r2, r2 The anti-dep breaker should not convert this into an illegal instruction: r2, r2 = umull llvm-svn: 124932
* Fix cut and paste error spotted by Jakob.Eric Christopher2011-02-051-1/+1
| | | | llvm-svn: 124930
* Be more strict about the first/last interference-free use.Jakob Stoklund Olesen2011-02-051-4/+25
| | | | | | If the interference overlaps the instruction, we cannot separate it. llvm-svn: 124918
* Add assertions to verify that the new interval is clear of the interference.Jakob Stoklund Olesen2011-02-051-7/+14
| | | | | | | If these inequalities don't hold, we are creating a live range split that won't allocate. llvm-svn: 124917
* Rewrite how the indirect call bonus is handled. This now works by:Eric Christopher2011-02-051-78/+125
| | | | | | | | | | | | | | | | | a) Making it a per call site bonus for functions that we can move from indirect to direct calls. b) Reduces the bonus from 500 to 100 per call site. c) Subtracts the size of the possible newly inlineable call from the bonus to only add a bonus if we can inline a small function to devirtualize it. Also changes the bonus from a positive that's subtracted to a negative that's added. Fixes the remainder of rdar://8546196 by reducing the object file size after inlining by 84%. llvm-svn: 124916
* [AVX] Revert 124910 until clients are ready.David Greene2011-02-051-122/+0
| | | | llvm-svn: 124912
* [AVX] Add some utilities to insert and extract 128-bit subvectors.David Greene2011-02-041-0/+122
| | | | | | | | This allows us to easily support 256-bit operations that don't have native 256-bit support. This applies to integer operations, certain types of shuffles and various othher things. llvm-svn: 124910
* Apparently, it is possible for a block with a landing pad successor to have ↵Jakob Stoklund Olesen2011-02-041-1/+1
| | | | | | | | | no calls. In that case we simply ignore the landing pad and split live ranges before the first terminator. llvm-svn: 124907
* Merge .debug_loc entries whenever possible to reduce debug_loc size.Devang Patel2011-02-042-15/+32
| | | | llvm-svn: 124904
* Mark that the return is using EAX so that we don't use it for some otherNick Lewycky2011-02-041-0/+21
| | | | | | purpose. Fixes PR9080! llvm-svn: 124903
* Be more accurate about live range splitting at the end of blocks.Jakob Stoklund Olesen2011-02-041-4/+17
| | | | | | | | | | | If interference reaches the last split point, it is effectively live out and should be marked as 'MustSpill'. This can make a difference when the terminator uses a register. There is no way that register can be reused in the outgoing CFG bundle, even if it isn't live out. llvm-svn: 124900
* Teach ARM/MC/ELF about EF_ARM_EABI_VERSION. The magic number is set toJason W Kim2011-02-041-2/+15
| | | | | | | 5 to match the current doc. Added FIXME reminder Make it really configurable later. llvm-svn: 124899
* Teach ARM/MC/ELF to handle R_ARM_JUMP24 relocation type for conditional jumps.Jason W Kim2011-02-047-15/+80
| | | | | | | | | | | | | | | | (yes, this is different from R_ARM_CALL) - Adds a new method getARMBranchTargetOpValue() which handles the necessary distinction between the conditional and unconditional br/bl needed for ARM/ELF At least for ARM mode, the needed fixup for conditional versus unconditional br/bl is identical, but the ARM docs and existing ARM tools expect this reloc type... Added a few FIXME's for future naming fixups in ARMInstrInfo.td llvm-svn: 124895
* Add LiveIntervals::getLastSplitPoint().Jakob Stoklund Olesen2011-02-043-1/+33
| | | | | | | | A live range cannot be split everywhere in a basic block. A split must go before the first terminator, and if the variable is live into a landing pad, the split must happen before the call that can throw. llvm-svn: 124894
* Verify that one of the ranges produced by region splitting is allocatable.Jakob Stoklund Olesen2011-02-041-1/+15
| | | | | | | We should not be attempting a region split if it won't lead to at least one directly allocatable interval. That could cause infinite splitting loops. llvm-svn: 124893
* MC/AsmParser: Add support for allowing the conversion process to fail (viaDaniel Dunbar2011-02-043-0/+6
| | | | | | custom conversion functions). llvm-svn: 124872
* [AVX] Support VSINSERTF128 with more patterns and appropriateDavid Greene2011-02-044-0/+77
| | | | | | | infrastructure. This makes lowering 256-bit vectors to 128-bit vectors simple when 256-bit vector support is not available. llvm-svn: 124868
* Make Win32's header file name lower for cross build on case-sensitive ↵NAKAMURA Takumi2011-02-043-5/+5
| | | | | | filesystem. llvm-svn: 124864
* Introducing a new method of tracking register pressure. We can'tAndrew Trick2011-02-044-116/+169
| | | | | | | | | | | | | | | precisely track pressure on a selection DAG, but we can at least keep it balanced. This design accounts for various interesting aspects of selection DAGS: register and subregister copies, glued nodes, dead nodes, unused registers, etc. Added SUnit::NumRegDefsLeft and ScheduleDAGSDNodes::RegDefIter. Note: I disabled PrescheduleNodesWithMultipleUses when register pressure is enabled, based on no evidence other than I don't think it makes sense to have both enabled. llvm-svn: 124853
* DebugLoc associated with a machine instruction is used to emit location ↵Devang Patel2011-02-041-20/+29
| | | | | | entries. DebugLoc associated with a DBG_VALUE is used to identify lexical scope of the variable. After register allocation, while inserting DBG_VALUE remember original debug location for the first instruction and reuse it, otherwise dwarf writer may be mislead in identifying the variable's scope. llvm-svn: 124845
* Update comments.Evan Cheng2011-02-041-2/+3
| | | | llvm-svn: 124843
* Skip unused values.Jakob Stoklund Olesen2011-02-041-1/+3
| | | | llvm-svn: 124842
* Also compute interference intervals for blocks with no uses.Jakob Stoklund Olesen2011-02-041-3/+1
| | | | | | | | When the live range is live through a block that doesn't use the register, but that has interference, region splitting wants to split at the top and bottom of the basic block. llvm-svn: 124839
* Verify kill flags conservatively.Jakob Stoklund Olesen2011-02-041-18/+5
| | | | | | | | | | Allow a live range to end with a kill flag, but don't allow a kill flag that doesn't end the live range. This makes the machine code verifier more useful during register allocation when kill flag computation is deferred. llvm-svn: 124838
* Do not sign extend floating-point values in the asm parser.Bob Wilson2011-02-031-1/+1
| | | | llvm-svn: 124831
* whitespaceAndrew Trick2011-02-031-18/+18
| | | | llvm-svn: 124827
* SimplifyCFG: Also transform switches that represent a range comparison but ↵Benjamin Kramer2011-02-031-6/+17
| | | | | | | | are not sorted into sub+icmp. This transforms another 1000 switches in gcc.c. llvm-svn: 124826
* Fix 80-column violations and whitespace.Bob Wilson2011-02-032-4/+5
| | | | llvm-svn: 124819
* Ensure that the computed interference intervals actually overlap their basic ↵Jakob Stoklund Olesen2011-02-031-3/+12
| | | | | | blocks. llvm-svn: 124815
* Tweak debug output from SlotIndexes.Jakob Stoklund Olesen2011-02-031-1/+5
| | | | llvm-svn: 124814
* Add debug output and asserts to the phi-connecting code.Jakob Stoklund Olesen2011-02-031-2/+13
| | | | llvm-svn: 124813
* Fix coloring bug when mapping values in the middle of a live-through block.Jakob Stoklund Olesen2011-02-031-7/+7
| | | | | | | | | | If the found value is not live-through the block, we should only add liveness up to the requested slot index. When the value is live-through, the whole block should be colored. Bug found by SSA verification in the machine code verifier. llvm-svn: 124812
* Return live range end points from SplitEditor::enter*/leave*.Jakob Stoklund Olesen2011-02-033-62/+48
| | | | | | | These end points come from the inserted copies, and can be passed directly to useIntv. This simplifies the coloring code. llvm-svn: 124799
* Silence an MSVC warningJakob Stoklund Olesen2011-02-031-1/+1
| | | | llvm-svn: 124798
* [AVX] VEXTRACTF128 support. This commit includes patterns forDavid Greene2011-02-034-0/+76
| | | | | | | | | | matching EXTRACT_SUBVECTOR to VEXTRACTF128 along with support routines to examine and translate index values. VINSERTF128 comes next. With these two in place we can begin supporting more AVX operations as INSERT/EXTRACT can be used as a fallback when 256-bit support is not available. llvm-svn: 124797
* Add XCore intrinsics for resource instructions.Richard Osborne2011-02-031-4/+51
| | | | llvm-svn: 124794
* Improve threading of comparisons over select instructions (spotted by myDuncan Sands2011-02-031-3/+25
| | | | | | | | | | auto-simplifier). This has a big impact on Ada code, but not much else. Unfortunately the impact is mostly negative! This is due to PR9004 (aka SCCP failing to resolve conditional branch conditions in the destination blocks of the branch), in which simple correlated expressions are not resolved but complicated ones are, so simplifying has a bad effect! llvm-svn: 124788
* Reapply this.Eric Christopher2011-02-034-224/+181
| | | | llvm-svn: 124779
* Temporarily revert 124765 in an attempt to find the cycle breaking bootstrap.Eric Christopher2011-02-034-181/+224
| | | | llvm-svn: 124778
* Fix PR9127 by reversing the operands even if they have more then one use.Rafael Espindola2011-02-031-2/+2
| | | | | | | | Reversing the operands allows us to fold, but doesn't force us to. Also, at this point the DAG is still being optimized, so the check for hasOneUse is not very precise. llvm-svn: 124773
* raw_fd_ostream: Add a SetUseAtomicWrites() method (uses writev).Daniel Dunbar2011-02-031-3/+21
| | | | llvm-svn: 124771
* Defer SplitKit value mapping until all defs are available.Jakob Stoklund Olesen2011-02-034-224/+181
| | | | | | | | | | | | | | | | | | | The greedy register allocator revealed some problems with the value mapping in SplitKit. We would sometimes start mapping values before all defs were known, and that could change a value from a simple 1-1 mapping to a multi-def mapping that requires ssa update. The new approach collects all defs and register assignments first without filling in any live intervals. Only when finish() is called, do we compute liveness and mapped values. At this time we know with certainty which values map to multiple values in a split range. This also has the advantage that we can compute live ranges based on the remaining uses after rematerializing at split points. The current implementation has many opportunities for compile time optimization. llvm-svn: 124765
* Fix typo in comment.Devang Patel2011-02-031-1/+1
| | | | llvm-svn: 124759
* Add support to describe template value parameter in debug info.Devang Patel2011-02-024-0/+52
| | | | llvm-svn: 124755
* Add support to describe template parameter type in debug info.Devang Patel2011-02-024-2/+60
| | | | llvm-svn: 124752
* Reenable the transform "(X*Y)/Y->X" when the multiplication is known not toDuncan Sands2011-02-021-5/+5
| | | | | | | | overflow (nsw flag), which was disabled because it breaks 254.gap. I have informed the GAP authors of the mistake in their code, and arranged for the testsuite to use -fwrapv when compiling this benchmark. llvm-svn: 124746
* Update comment to match my recent change.Bob Wilson2011-02-021-2/+2
| | | | llvm-svn: 124725
* SimplifyCFG: Turn switches into sub+icmp+branch if possible.Benjamin Kramer2011-02-022-48/+32
| | | | | | | | | | | | | | | | | This makes the job of the later optzn passes easier, allowing the vast amount of icmp transforms to chew on it. We transform 840 switches in gcc.c, leading to a 16k byte shrink of the resulting binary on i386-linux. The testcase from README.txt now compiles into decl %edi cmpl $3, %edi sbbl %eax, %eax andl $1, %eax ret llvm-svn: 124724
OpenPOWER on IntegriCloud