- Mar 30, 2011
-
-
Jay Foad authored
llvm-svn: 128535
-
- Mar 29, 2011
-
-
Benjamin Kramer authored
Fixes PR9569 and will hopefully make selfhost on ASLR-enabled systems more deterministic. llvm-svn: 128482
-
Cameron Zwarich authored
vector types. This helps a lot with inlined functions when using the ARM soft float ABI. Fixes <rdar://problem/9184212>. llvm-svn: 128453
-
- Mar 26, 2011
-
-
Bill Wendling authored
llvm-svn: 128333
-
Bill Wendling authored
There are two ways that a later store can comletely overlap a previous store: 1. They both start at the same offset, but the earlier store's size is <= the later's size, or 2. The earlier store's offset is > the later's offset, but it's offset + size doesn't extend past the later's offset + size. llvm-svn: 128332
-
Cameron Zwarich authored
llvm-svn: 128331
-
Bill Wendling authored
completely overlaps a previous store, thus mistakenly deleting that store. Check for this condition. llvm-svn: 128319
-
- Mar 24, 2011
-
-
Cameron Zwarich authored
affect the generated code. llvm-svn: 128217
-
Cameron Zwarich authored
void; it doesn't need to have a void type. llvm-svn: 128212
-
Devang Patel authored
llvm-svn: 128211
-
Cameron Zwarich authored
void return type. This fixes PR9487. llvm-svn: 128197
-
Cameron Zwarich authored
llvm-svn: 128196
-
Cameron Zwarich authored
use it later. I couldn't make a test that hits this with the current code. llvm-svn: 128195
-
Cameron Zwarich authored
llvm-svn: 128194
-
- Mar 23, 2011
-
-
Cameron Zwarich authored
that were hit in practice. llvm-svn: 128146
-
- Mar 21, 2011
-
-
Evan Cheng authored
Re-apply r127953 with fixes: eliminate empty return block if it has no predecessors; update dominator tree if cfg is modified. llvm-svn: 127981
-
- Mar 19, 2011
-
-
Daniel Dunbar authored
to canonicalize IR", it broke a lot of things. llvm-svn: 127954
-
Evan Cheng authored
to have single return block (at least getting there) for optimizations. This is general goodness but it would prevent some tailcall optimizations. One specific case is code like this: int f1(void); int f2(void); int f3(void); int f4(void); int f5(void); int f6(void); int foo(int x) { switch(x) { case 1: return f1(); case 2: return f2(); case 3: return f3(); case 4: return f4(); case 5: return f5(); case 6: return f6(); } } => LBB0_2: ## %sw.bb callq _f1 popq %rbp ret LBB0_3: ## %sw.bb1 callq _f2 popq %rbp ret LBB0_4: ## %sw.bb3 callq _f3 popq %rbp ret This patch teaches codegenprep to duplicate returns when the return value is a phi and where the phi operands are produced by tail calls followed by an unconditional branch: sw.bb7: ; preds = %entry %call8 = tail call i32 @f5() nounwind br label %return sw.bb9: ; preds = %entry %call10 = tail call i32 @f6() nounwind br label %return return: %retval.0 = phi i32 [ %call10, %sw.bb9 ], [ %call8, %sw.bb7 ], ... [ 0, %entry ] ret i32 %retval.0 This allows codegen to generate better code like this: LBB0_2: ## %sw.bb jmp _f1 ## TAILCALL LBB0_3: ## %sw.bb1 jmp _f2 ## TAILCALL LBB0_4: ## %sw.bb3 jmp _f3 ## TAILCALL rdar://9147433 llvm-svn: 127953
-
- Mar 18, 2011
-
-
Andrew Trick authored
llvm-svn: 127842
-
Andrew Trick authored
SCEV may generate expressions composed of multiple pointers, which can lead to invalid GEP expansion. Until we can teach SCEV to follow strict pointer rules, make sure no bad GEPs creep into IR. Fixes rdar://problem/9038671. llvm-svn: 127839
-
Andrew Trick authored
llvm-svn: 127837
-
- Mar 16, 2011
-
-
Cameron Zwarich authored
llvm-svn: 127728
-
Cameron Zwarich authored
chose is having a non-memcpy/memset use and being larger than any native integer type. Originally I chose having an access of a size smaller than the total size of the alloca, but this caused some minor issues on the spirit benchmark where SRoA runs again after some inlining. This fixes <rdar://problem/8613163>. llvm-svn: 127718
-
Cameron Zwarich authored
llvm-svn: 127716
-
Cameron Zwarich authored
llvm-svn: 127715
-
- Mar 14, 2011
-
-
Andrew Trick authored
properties. Added the self-wrap flag for SCEV::AddRecExpr. A slew of temporary FIXMEs indicate the intention of the no-self-wrap flag without changing behavior in this revision. llvm-svn: 127590
-
Andrew Trick authored
llvm-svn: 127589
-
- Mar 11, 2011
-
-
Cameron Zwarich authored
Optimize trivial branches in CodeGenPrepare, which often get created from the lowering of objectsize intrinsics. Unfortunately, a number of tests were relying on llc not optimizing trivial branches, so I had to add an option to allow them to continue to test what they originally tested. This fixes <rdar://problem/8785296> and <rdar://problem/9112893>. llvm-svn: 127498
-
Daniel Dunbar authored
created from the", it broke some GCC test suite tests. llvm-svn: 127477
-
Cameron Zwarich authored
lowering of objectsize intrinsics. Unfortunately, a number of tests were relying on llc not optimizing trivial branches, so I had to add an option to allow them to continue to test what they originally tested. This fixes <rdar://problem/8785296> and <rdar://problem/9112893>. llvm-svn: 127459
-
- Mar 10, 2011
-
-
Dan Gohman authored
Value, not an Instruction, so casting is not necessary. Also, it's theoretically possible that the Value is not an Instruction, since WeakVH follows RAUWs. llvm-svn: 127427
-
Dan Gohman authored
after it has finished all of its reassociations, because its habit of unlinking operands and holding them in a datastructure while working means that it's not easy to determine when an instruction is really dead until after all its regular work is done. rdar://9096268. llvm-svn: 127424
-
- Mar 09, 2011
-
-
Devang Patel authored
llvm-svn: 127362
-
Cameron Zwarich authored
alloca as both integer and floating-point vectors of the same size. Bugpoint is not cooperating with me, but I'll try to find a manual testcase tomorrow. llvm-svn: 127320
-
Cameron Zwarich authored
a union of a float, <2 x float>, and <4 x float>. This mostly comes up with the use of vector intrinsics, especially in NEON when programmers know the layout of the register file. This enables codegen to eliminate a lot of the subregister traffic it would otherwise generate. This commit only enables this for a small number of floating-point cases, but a lot more integer cases. I assume this is okay for all ports, but I did not do extensive testing of the quality of code involving i512 vectors and the like. If there is a use case where this generates worse code than before, let me know and we can scale it back. This fixes <rdar://problem/9036264>. llvm-svn: 127317
-
Cameron Zwarich authored
more complicated. llvm-svn: 127316
-
- Mar 08, 2011
-
-
Devang Patel authored
llvm-svn: 127214
-
- Mar 07, 2011
-
-
Devang Patel authored
Radar 9097659 llvm-svn: 127182
-
- Mar 05, 2011
-
-
Cameron Zwarich authored
the percentage of time spent in CodeGenPrepare when llcing 403.gcc from 12.6% to 1.8% of total llc time. llvm-svn: 127069
-
- Mar 03, 2011
-
-
Richard Osborne authored
llvm-svn: 126941
-