"git@repo.hca.bsc.es:rferrer/llvm-epi.git" did not exist on "8a534b03c16605ec26d0d11c250e7a47978846a8"
- Mar 24, 2011
-
-
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 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 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 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 02, 2011
-
-
Cameron Zwarich authored
llvm-svn: 126826
-
Cameron Zwarich authored
llvm-svn: 126825
-
- Mar 01, 2011
-
-
Cameron Zwarich authored
addressing code. On 403.gcc this almost halves CodeGenPrepare time and reduces total llc time by 9.5%. Unfortunately, getNumUses() is still the hottest function in llc. llvm-svn: 126782
-
- Jan 18, 2011
-
-
- Jan 15, 2011
-
-
Chris Lattner authored
realize that ConstantFoldTerminator doesn't preserve dominfo. llvm-svn: 123527
-
rdar://8785296Chris Lattner authored
The basic issue is that isel (very reasonably!) expects conditional branches to be folded, so CGP leaving around a bunch dead computation feeding conditional branches isn't such a good idea. Just fold branches on constants into unconditional branches. llvm-svn: 123526
-
Chris Lattner authored
llvm-svn: 123525
-
Chris Lattner authored
have objectsize folding recursively simplify away their result when it folds. It is important to catch this here, because otherwise we won't eliminate the cross-block values at isel and other times. llvm-svn: 123524
-
Chris Lattner authored
potentially invalidate it (like inline asm lowering) to be sunk into their proper place, cleaning up a ton of code. llvm-svn: 123523
-
- Jan 08, 2011
-
-
Cameron Zwarich authored
they all ready do). This removes two dominator recomputations prior to isel, which is a 1% improvement in total llc time for 403.gcc. The only potentially suspect thing is making GCStrategy recompute dominators if it used a custom lowering strategy. llvm-svn: 123064
-
- Jan 06, 2011
-
-
Cameron Zwarich authored
OptimizeInst() so that they can be used on a worklist instruction. llvm-svn: 122945
-
Cameron Zwarich authored
llvm-svn: 122944
-
Cameron Zwarich authored
into a separate function, so that it can be called from a loop using a worklist rather than a loop traversing a whole basic block. llvm-svn: 122943
-
Cameron Zwarich authored
worklist, the key will need to become std::pair<BasicBlock*, Value*>. llvm-svn: 122932
-
- Jan 05, 2011
-
-
Cameron Zwarich authored
llvm-svn: 122891
-
Cameron Zwarich authored
regressing code quality. llvm-svn: 122887
-
- Jan 04, 2011
-
-
Cameron Zwarich authored
CodeGenPrepare (which is the default behavior). llvm-svn: 122801
-
- Jan 03, 2011
-
-
Cameron Zwarich authored
capacity on the Visited SmallPtrSet. On 403.gcc, this is about a 4.5% speedup of CodeGenPrepare time (which itself is 10% of time spent in the backend). This is progress towards PR8889. llvm-svn: 122741
-
- Dec 23, 2010
-
-
Owen Anderson authored
pipeline to be caught by instcombine, and it's not feasible to catch them in SimplifyCFG because the use-lists are in an inconsistent state at the point where it could know that it need to simplify them. Instead, have CodeGenPrepare look for trivially redundant PHIs as part of its general cleanup effort. llvm-svn: 122516
-
- Dec 19, 2010
-
-
Chris Lattner authored
llvm-svn: 122168
-
Chris Lattner authored
which have trapping constant exprs in them due to PHI nodes. Eliminating them can cause the constant expr to be evalutated on new paths if the input edges are critical. llvm-svn: 122164
-
- Nov 27, 2010
-
-
Owen Anderson authored
by my recent GVN improvement. Looking through a single layer of PHI nodes when attempting to sink GEPs, we need to iteratively look through arbitrary PHI nests. llvm-svn: 120202
-
- Nov 19, 2010
-
-
Owen Anderson authored
if all the operands of the PHI are equivalent. This allows CodeGenPrepare to undo unprofitable PRE transforms. llvm-svn: 119853
-
- Oct 29, 2010
-
-
John Thompson authored
Inline asm multiple alternative constraints development phase 2 - improved basic logic, added initial platform support. llvm-svn: 117667
-
- Oct 19, 2010
-
-
Owen Anderson authored
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. llvm-svn: 116820
-
- Oct 08, 2010
-
-
Owen Anderson authored
llvm-svn: 115996
-
- Sep 30, 2010
-
-
Jakob Stoklund Olesen authored
The bug that broke i386 linux has been fixed in r115191. llvm-svn: 115204
-
- Sep 27, 2010
-
-
Jakob Stoklund Olesen authored
This reverts revision 114633. It was breaking llvm-gcc-i386-linux-selfhost. It seems there is a downstream bug that is exposed by -cgp-critical-edge-splitting=0. When that bug is fixed, this patch can go back in. Note that the changes to tailcallfp2.ll are not reverted. They were good are required. llvm-svn: 114859
-
- Sep 23, 2010
-
-
Evan Cheng authored
break critical edges on demand. llvm-svn: 114633
-
- Sep 22, 2010
-
-
Bob Wilson authored
truncates are free only in the case where the extended type is legal but the load type is not. If both types are illegal, such as when they are too big, the load may not be legalized into an extended load. llvm-svn: 114568
-