- Sep 16, 2010
-
-
Jakob Stoklund Olesen authored
great deal because we don't have to worry about maintaining SSA form. Unconditionally copy back to dupli when the register is live out of the split range, even if the live-out value was defined outside the range. Skipping the back-copy only makes sense when the live range is going to spill outside the split range, and we don't know that it will. Besides, this was a hack to avoid SSA update issues. Clear up some confusion about the end point of a half-open LiveRange. Methinks LiveRanges need to be closed so both start and end are included in the range. The low bits of a SlotIndex are symbolic, so a half-open range doesn't really make sense. This would be a pervasive change, though. llvm-svn: 114043
-
- Sep 15, 2010
-
-
Devang Patel authored
This fixes funcargs.exp regression reported by gdb testsuite. llvm-svn: 113992
-
Devang Patel authored
If dbg.declare from non-entry block is using alloca from entry block then use offset available in StaticAllocaMap to emit DBG_VALUE. Right now, this has no material impact because varible info also collected using offset table maintained in machine module info. llvm-svn: 113967
-
- Sep 14, 2010
-
-
Gabor Greif authored
llvm-svn: 113848
-
Devang Patel authored
Use frame index, if available for byval argument while lowering dbg_declare. Otherwise let getRegForValue() find register for this argument. llvm-svn: 113843
-
Michael J. Spencer authored
This reverts commit r113632 Conflicts: cmake/modules/AddLLVM.cmake llvm-svn: 113819
-
Jakob Stoklund Olesen authored
edited without actually using LiveIntervalMap functionality. llvm-svn: 113816
-
Jakob Stoklund Olesen authored
llvm-svn: 113815
-
- Sep 13, 2010
-
-
Jakob Stoklund Olesen authored
pointer and work around that. llvm-svn: 113788
-
Benjamin Kramer authored
llvm-svn: 113776
-
Eric Christopher authored
llvm-svn: 113771
-
John Thompson authored
llvm-svn: 113766
-
- Sep 11, 2010
-
-
Bill Wendling authored
llvm-svn: 113670
-
Bill Wendling authored
llvm-svn: 113666
-
Bill Wendling authored
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
-
Bob Wilson authored
llvm-svn: 113653
-
- Sep 10, 2010
-
-
Bill Wendling authored
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
-
Michael J. Spencer authored
llvm-svn: 113632
-
Devang Patel authored
llvm-svn: 113614
-
Evan Cheng authored
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
-
- Sep 08, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 113386
-
Jakob Stoklund Olesen authored
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
-
- Sep 05, 2010
-
-
Chris Lattner authored
llvm-svn: 113117
-
Lang Hames authored
llvm-svn: 113108
-
rdar://6653118Chris Lattner authored
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
-
- Sep 04, 2010
-
-
Jakob Stoklund Olesen authored
Clobber ranges are no longer used when joining physical registers. Instead, all aliases are checked for interference. llvm-svn: 113084
-
Chris Lattner authored
llvm-svn: 113073
-
- Sep 03, 2010
-
-
Jim Grosbach authored
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
-
Bob Wilson authored
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
-
Jakob Stoklund Olesen authored
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
-
Duncan Sands authored
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
-
Devang Patel authored
Thanks Chris! llvm-svn: 112900
-
- Sep 02, 2010
-
-
Devang Patel authored
llvm-svn: 112864
-
Dan Gohman authored
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
-
Devang Patel authored
llvm-svn: 112858
-
Jim Grosbach authored
locally. llvm-svn: 112845
-
Jim Grosbach authored
llvm-svn: 112832
-
Devang Patel authored
llvm-svn: 112830
-
Lang Hames authored
Added support for register allocators to record which intervals are spill 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
-
Chandler Carruth authored
llvm-svn: 112809
-