- Jan 09, 2012
-
-
Craig Topper authored
llvm-svn: 147758
-
- Jan 08, 2012
-
-
Benjamin Kramer authored
We still save an instruction when just the "and" part is replaced. Also change the code to match comments more closely. llvm-svn: 147753
-
Evan Cheng authored
llvm-svn: 147752
-
Evan Cheng authored
safely proven not to have been clobbered. No small test case possible. llvm-svn: 147751
-
Benjamin Kramer authored
InstCombine: If we have a bit test and a sign test anded/ored together, merge the sign bit into the bit test. This is common in bit field code, e.g. checking if the first or the last bit of a bit field is set. llvm-svn: 147749
-
Victor Umansky authored
llvm-svn: 147748
-
Rafael Espindola authored
llvm-svn: 147745
-
- Jan 07, 2012
-
-
Rafael Espindola authored
the produce assembly when using CFI just a bit more readable. llvm-svn: 147743
-
Benjamin Kramer authored
-8 bytes on x86_64, no change on x86. llvm-svn: 147742
-
Jakob Stoklund Olesen authored
Darwin doesn't do static, and ELF targets only support static. llvm-svn: 147740
-
Craig Topper authored
llvm-svn: 147739
-
Benjamin Kramer authored
llvm-svn: 147738
-
Craig Topper authored
llvm-svn: 147734
-
Craig Topper authored
llvm-svn: 147733
-
Benjamin Kramer authored
This should fix the odd behavior that find() is slower than lookup(). llvm-svn: 147731
-
Craig Topper authored
Add some DAG combines for SUBC/SUBE. If nothing uses the carry/borrow out of subc, turn it into a sub. Turn (subc x, x) into 0 with no borrow. Turn (subc x, 0) into x with no borrow. Turn (subc -1, x) into (xor x, -1) with no borrow. Turn sube with no borrow in into subc. llvm-svn: 147728
-
Cameron Zwarich authored
/// FastEmit_f - This method is called by target-independent code /// to request that an instruction with the given type, opcode, and /// floating-point immediate operand be emitted. virtual unsigned FastEmit_f(MVT VT, MVT RetVT, unsigned Opcode, const ConstantFP *FPImm); Currently, it emits an accidentally overloaded version without the const on the ConstantFP*. This doesn't affect anything in the tree, since nothing causes that method to be autogenerated, but I have been playing with some ARM TableGen refactorings that hit this problem. llvm-svn: 147727
-
Jakob Stoklund Olesen authored
Reserved registers don't have proper live ranges, their LiveInterval simply has a snippet of liveness for each def. Virtual registers with a single value that is a copy of a reserved register (typically %esp) can be coalesced with the reserved register if the live range doesn't overlap any reserved register defs. When coalescing with a reserved register, don't modify the reserved register live range. Just leave it as a bunch of dead defs. This eliminates quadratic coalescer behavior in i386 functions with many function calls. PR11699 llvm-svn: 147726
-
Jakob Stoklund Olesen authored
llvm-svn: 147725
-
Andrew Trick authored
This will be more important as we extend the LSR pass in ways that don't rely on the formula solver. In particular, we need it for constructing IV chains. llvm-svn: 147724
-
Eli Bendersky authored
llvm-svn: 147721
-
Jakob Stoklund Olesen authored
This enables basic local CSE, giving us 20% smaller code for consumer-typeset in -O0 builds. <rdar://problem/10658692> llvm-svn: 147720
-
Evan Cheng authored
up so branch folding pass can't use the scavenger. :-( This doesn't breaks anything currently. It just means targets which do not carefully update kill markers cannot run post-ra scheduler (not new, it has always been the case). We should fix this at some point since it's really hacky. llvm-svn: 147719
-
Andrew Trick authored
LoopSimplify may not run on some outer loops, e.g. because of indirect branches. SCEVExpander simply cannot handle outer loops with no preheaders. Fixes rdar://10655343 SCEVExpander segfault. llvm-svn: 147718
-
Rafael Espindola authored
file error checking. Use that to error on an unfinished cfi_startproc. The error is not nice, but is already better than a segmentation fault. llvm-svn: 147717
-
Evan Cheng authored
opportunities that only present themselves after late optimizations such as tail duplication .e.g. ## BB#1: movl %eax, %ecx movl %ecx, %eax ret The register allocator also leaves some of them around (due to false dep between copies from phi-elimination, etc.) This required some changes in codegen passes. Post-ra scheduler and the pseudo-instruction expansion passes have been moved after branch folding and tail merging. They were before branch folding before because it did not always update block livein's. That's fixed now. The pass change makes independently since we want to properly schedule instructions after branch folding / tail duplication. rdar://10428165 rdar://10640363 llvm-svn: 147716
-
Evan Cheng authored
exposed with an upcoming change will would delete the copy to return register because there is no use! It's amazing anything works. llvm-svn: 147715
-
Jakob Stoklund Olesen authored
This eliminates a lot of constant pool entries for -O0 builds of code with many global variable accesses. This speeds up -O0 codegen of consumer-typeset by 2x because the constant island pass no longer has to look at thousands of constant pool entries. <rdar://problem/10629774> llvm-svn: 147712
-
Andrew Trick authored
llvm-svn: 147711
-
Devang Patel authored
Store AsmParser info locally. A small step towards emitting match entries for multiple asm variants. llvm-svn: 147710
-
Andrew Trick authored
llvm-svn: 147709
-
Devang Patel authored
llvm-svn: 147708
-
Andrew Trick authored
llvm-svn: 147707
-
Eric Christopher authored
Fixes rdar://10614894 llvm-svn: 147704
-
Andrew Trick authored
llvm-svn: 147703
-
Andrew Trick authored
llvm-svn: 147701
-
Andrew Trick authored
llvm-svn: 147700
-
Chad Rosier authored
llvm-svn: 147696
-
Eric Christopher authored
to bleed from the eyes. llvm-svn: 147695
-
Eric Christopher authored
llvm-svn: 147694
-