- 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
-
Lang Hames authored
llvm-svn: 112807
-
Jim Grosbach authored
llvm-svn: 112787
-
Jim Grosbach authored
at them since they'd end up in the register weights list. Tell it to stop doing that. llvm-svn: 112756
-
Jakob Stoklund Olesen authored
This caused a miscompilation in WebKit where %RAX had conflicting defs when RemoveCopyByCommutingDef was commuting a %EAX use. llvm-svn: 112751
-
- Sep 01, 2010
-
-
Jim Grosbach authored
llvm-svn: 112746
-
Jim Grosbach authored
physical register in a register class. Make sure to assert if the register class is empty. llvm-svn: 112743
-
Jim Grosbach authored
llvm-svn: 112742
-
Jim Grosbach authored
r112728 did this for fast regalloc. llvm-svn: 112741
-