summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* must not peephole away side effectsGabor Greif2010-09-141-1/+2
| | | | llvm-svn: 113848
* Use frame index, if available for byval argument while lowering dbg_declare. ↵Devang Patel2010-09-141-16/+20
| | | | | | Otherwise let getRegForValue() find register for this argument. llvm-svn: 113843
* Revert "CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally."Michael J. Spencer2010-09-133-23/+3
| | | | | | | | | | This reverts commit r113632 Conflicts: cmake/modules/AddLLVM.cmake llvm-svn: 113819
* Mechanically replace LiveInterval* with LiveIntervalMap for intervals beingJakob Stoklund Olesen2010-09-132-73/+77
| | | | | | edited without actually using LiveIntervalMap functionality. llvm-svn: 113816
* Allow LiveIntervalMap to be reused by resetting the current live interval.Jakob Stoklund Olesen2010-09-132-18/+33
| | | | llvm-svn: 113815
* Let's just declare that it is impossible to construct a std::pair from a nullJakob Stoklund Olesen2010-09-131-22/+11
| | | | | | pointer and work around that. llvm-svn: 113788
* Fix linux/msvc build, move include.Benjamin Kramer2010-09-131-0/+1
| | | | llvm-svn: 113776
* Silence more warnings. Two more unused variables.Eric Christopher2010-09-131-2/+0
| | | | llvm-svn: 113771
* Added skeleton for inline asm multiple alternative constraint support.John Thompson2010-09-132-45/+252
| | | | llvm-svn: 113766
* Rename ConvertToSetZeroFlag to something more general.Bill Wendling2010-09-111-2/+2
| | | | llvm-svn: 113670
* No need to recompute the SrcReg and CmpValue.Bill Wendling2010-09-101-1/+1
| | | | llvm-svn: 113666
* Move some of the decision logic for converting an instruction into one that setsBill Wendling2010-09-101-7/+2
| | | | | | | the 'zero' bit down into the back-end. There are other cases where this logic isn't sufficient, so they should be handled separately. llvm-svn: 113665
* Fix a comment typo.Bob Wilson2010-09-101-1/+1
| | | | llvm-svn: 113653
* Modify the comparison optimizations in the peephole optimizer to update theBill Wendling2010-09-101-6/+10
| | | | | | | iterator when an optimization took place. This allows us to do more insane things with the code than just remove an instruction or two. llvm-svn: 113640
* CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally.Michael J. Spencer2010-09-103-3/+23
| | | | llvm-svn: 113632
* Add DEBUG message.Devang Patel2010-09-102-4/+16
| | | | llvm-svn: 113614
* Teach if-converter to be more careful with predicating instructions that wouldEvan Cheng2010-09-108-41/+45
| | | | | | | | | | | take multiple cycles to decode. For the current if-converter clients (actually only ARM), the instructions that are predicated on false are not nops. They would still take machine cycles to decode. Micro-coded instructions such as LDM / STM can potentially take multiple cycles to decode. If-converter should take treat them as non-micro-coded simple instructions. llvm-svn: 113570
* Remove dead code.Jakob Stoklund Olesen2010-09-081-11/+0
| | | | llvm-svn: 113386
* Don't add <imp-def> operands during register rewriting.Jakob Stoklund Olesen2010-09-071-16/+9
| | | | | | | | | | | | | | LiveIntervals already adds <imp-def> operands for super-registers when a subreg def defines the whole register. Thus, it is not necessary to do it again when rewriting. In fact, the super-register imp-defs caused miscompilations because the late scheduler couldn't see that the super-register was read. We still add super-reg <imp-use,kill> operands when rewriting virtuals to physicals. llvm-svn: 113299
* add a comment about where this should eventually move.Chris Lattner2010-09-051-0/+7
| | | | llvm-svn: 113117
* Added initialisers for reduction rule counters.Lang Hames2010-09-051-0/+4
| | | | llvm-svn: 113108
* implement rdar://6653118 - fastisel should fold loads where possible.Chris Lattner2010-09-051-1/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since mem2reg isn't run at -O0, we get a ton of reloads from the stack, for example, before, this code: int foo(int x, int y, int z) { return x+y+z; } used to compile into: _foo: ## @foo subq $12, %rsp movl %edi, 8(%rsp) movl %esi, 4(%rsp) movl %edx, (%rsp) movl 8(%rsp), %edx movl 4(%rsp), %esi addl %edx, %esi movl (%rsp), %edx addl %esi, %edx movl %edx, %eax addq $12, %rsp ret Now we produce: _foo: ## @foo subq $12, %rsp movl %edi, 8(%rsp) movl %esi, 4(%rsp) movl %edx, (%rsp) movl 8(%rsp), %edx addl 4(%rsp), %edx ## Folded load addl (%rsp), %edx ## Folded load movl %edx, %eax addq $12, %rsp ret Fewer instructions and less register use = faster compiles. llvm-svn: 113102
* Remove dead code.Jakob Stoklund Olesen2010-09-041-97/+0
| | | | | | | Clobber ranges are no longer used when joining physical registers. Instead, all aliases are checked for interference. llvm-svn: 113084
* zap dead code.Chris Lattner2010-09-042-18/+0
| | | | llvm-svn: 113073
* previous patch was a little too tricky for its own good. Don't try toJim Grosbach2010-09-031-8/+7
| | | | | | | | overload UserInInstr. Explicitly check Allocatable. The early exit in the condition will mean the performance impact of the extra test should be minimal. llvm-svn: 113016
* Add a missing check when legalizing a vector extending load. This doesn'tBob Wilson2010-09-031-3/+5
| | | | | | | solve the root problem, but it corrects the bug in the code I added to support legalizing in the case where the non-extended type is also legal. llvm-svn: 112997
* VirtRegRewriter checks for early clobbers before it reuses an available stackJakob Stoklund Olesen2010-09-031-5/+7
| | | | | | | | | | | | slot. Teach it to also check for early clobbered aliases, and early clobber operands following the current operand. This fixes the miscompilation in PR8044 where EC registers eax and ecx were being used for inputs. llvm-svn: 112988
* Reapply commit 112702 which was speculatively reverted by echristo.Duncan Sands2010-09-031-82/+80
| | | | | | | | | | Original commit message: Use the SSAUpdator to turn calls to eh.exception that are not in a landing pad into uses of registers rather than loads from a stack slot. Doesn't touch the 'orrible hack code - Bill needs to persuade me harder :) llvm-svn: 112952
* There is no need to use .set here.Devang Patel2010-09-021-8/+1
| | | | | | Thanks Chris! llvm-svn: 112900
* Detect undef value early and save unnecessary NodeMap query.Devang Patel2010-09-021-0/+11
| | | | llvm-svn: 112864
* Don't narrow the load and store in a load+twiddle+store sequence unlessDan Gohman2010-09-021-1/+2
| | | | | | | | | | there are clearly no stores between the load and the store. This fixes this miscompile reported as PR7833. This breaks the test/CodeGen/X86/narrow_op-2.ll optimization, which is safe, but awkward to prove safe. Move it to X86's README.txt. llvm-svn: 112861
* Tidy up.Devang Patel2010-09-021-11/+9
| | | | llvm-svn: 112858
* The scavenger should just use getAllocatableSet() rather than reinventing itJim Grosbach2010-09-021-13/+3
| | | | | | locally. llvm-svn: 112845
* Anti-dependency breaking needs to be careful not to use reserved regsJim Grosbach2010-09-022-0/+4
| | | | llvm-svn: 112832
* Fix .debug_range for linux. Patch by Krister Wombell.Devang Patel2010-09-022-4/+34
| | | | llvm-svn: 112830
* Added support for register allocators to record which intervals are spill ↵Lang Hames2010-09-023-83/+193
| | | | | | | | intervals, and where the uses and defs of the original intervals were in the original code. Spill intervals can be hidden using the "-rmf-intervals=virt-nospills*" option. llvm-svn: 112811
* Silence an ambiguous else warning from GCC.Chandler Carruth2010-09-021-1/+2
| | | | llvm-svn: 112809
* Added counters for PBQP reduction rules.Lang Hames2010-09-023-1/+44
| | | | llvm-svn: 112807
* Add a bit of debug output for register scavengingJim Grosbach2010-09-021-2/+12
| | | | llvm-svn: 112787
* Tweak to ignoring reserved regs. The allocator was occasionally still lookingJim Grosbach2010-09-011-2/+4
| | | | | | | at them since they'd end up in the register weights list. Tell it to stop doing that. llvm-svn: 112756
* Teach RemoveCopyByCommutingDef to check all aliases, not just subregisters.Jakob Stoklund Olesen2010-09-011-16/+14
| | | | | | | This caused a miscompilation in WebKit where %RAX had conflicting defs when RemoveCopyByCommutingDef was commuting a %EAX use. llvm-svn: 112751
* tidy up trailing whitespace and an 80 column violation.Jim Grosbach2010-09-011-24/+25
| | | | llvm-svn: 112746
* cleanup per feedback. use a helper function for getting the first non-reservedJim Grosbach2010-09-011-17/+14
| | | | | | | physical register in a register class. Make sure to assert if the register class is empty. llvm-svn: 112743
* The register allocator shouldn't consider allocating reserved registers. ↵Jim Grosbach2010-09-011-2/+8
| | | | | | PBQP version. llvm-svn: 112742
* The register allocator shouldn't consider allocating reserved registers.Jim Grosbach2010-09-011-5/+30
| | | | | | r112728 did this for fast regalloc. llvm-svn: 112741
* The register allocator shouldn't consider allocating reserved registers.Jim Grosbach2010-09-011-3/+7
| | | | llvm-svn: 112728
* tidy up a few 80-column and trailing whitespace bits.Jim Grosbach2010-09-011-16/+19
| | | | llvm-svn: 112726
* Speculatively revert 112699 and 112702, they seem to be causingEric Christopher2010-09-011-80/+82
| | | | | | self host errors on clang-x86-64. llvm-svn: 112719
* Use the SSAUpdator to turn calls to eh.exception that are not in aDuncan Sands2010-09-011-82/+80
| | | | | | | | landing pad into uses of registers rather than loads from a stack slot. Doesn't touch the 'orrible hack code - Bill needs to persuade me harder :) llvm-svn: 112702
* Use absolute label for DW_AT_stmt_list if a target does not prefer offset here.Devang Patel2010-08-311-1/+5
| | | | | | This patch was developed on top of original patch by Artur Pietrek. llvm-svn: 112678
OpenPOWER on IntegriCloud