- Jun 08, 2007
-
-
Evan Cheng authored
llvm-svn: 37524
-
Evan Cheng authored
llvm-svn: 37523
-
David Greene authored
simultaneously. Move that pass to SimpleRegisterCoalescing. This makes it easier to implement alternative register allocation and coalescing strategies while maintaining reuse of the existing live interval analysis. llvm-svn: 37520
-
Evan Cheng authored
llvm-svn: 37518
-
Duncan Sands authored
how much will be used. llvm-svn: 37515
-
Dale Johannesen authored
llvm-svn: 37511
-
Dale Johannesen authored
is too slow. llvm-svn: 37509
-
Evan Cheng authored
llvm-svn: 37503
-
- Jun 07, 2007
-
-
Dale Johannesen authored
llvm-svn: 37496
-
Evan Cheng authored
ifcvt a triangle: don't merge ifcvt block with rejoin block if it can fall through to it. If merged, the resulting block is not a candidate for iterative ifcvting since it contains both predicated and non-predicated code. llvm-svn: 37487
-
Evan Cheng authored
llvm-svn: 37485
-
- Jun 06, 2007
-
-
Owen Anderson authored
Evan, please check that this is in fact correct. llvm-svn: 37471
-
Duncan Sands authored
same, only output one copy of the common part. llvm-svn: 37470
-
Evan Cheng authored
llvm-svn: 37467
-
Duncan Sands authored
correct machine basic block - do not rely on the eh.exception intrinsic being in the landing pad: the loop optimizers can move it out. llvm-svn: 37463
-
Evan Cheng authored
If a unconditional branch is added to branch to the false path during ifcvt, the predicated block cannot be iteratively ifcvted. llvm-svn: 37456
-
Evan Cheng authored
llvm-svn: 37451
-
Evan Cheng authored
llvm-svn: 37449
-
Evan Cheng authored
llvm-svn: 37444
-
Evan Cheng authored
llvm-svn: 37441
-
- Jun 05, 2007
-
-
Evan Cheng authored
llvm-svn: 37440
-
Evan Cheng authored
llvm-svn: 37433
-
Evan Cheng authored
If the predicated block requires an early exit, end the block there and add a unconditional branch to false block. AnalyzeBranch() does not understand early exits. llvm-svn: 37430
-
Evan Cheng authored
llvm-svn: 37429
-
Dale Johannesen authored
llvm-svn: 37427
-
- Jun 04, 2007
-
-
Evan Cheng authored
llvm-svn: 37421
-
Evan Cheng authored
llvm-svn: 37420
-
Dan Gohman authored
llvm-svn: 37413
-
Dan Gohman authored
that the CSE map always contains explicit alignment information. This allows more loads to be CSE'd when there is a mix of explicit-alignment loads and implicit-alignment loads. Also, in SelectionDAG::FindModifiedNodeSlot, add the operands to the FoldingSetNodeID before the load/store information instead of after, so that it matches what is done elsewhere. llvm-svn: 37411
-
Evan Cheng authored
Let IfConverter loose. Allow more aggressive subsumptions; reorder basic blocks to expose more ifcvt opportunities; code clean up and fixes. llvm-svn: 37409
-
Evan Cheng authored
llvm-svn: 37408
-
- Jun 02, 2007
-
-
Duncan Sands authored
(landing pad) when an exception unwinds through the call. This doesn't quite match the way the dwarf unwinder works: by default it only jumps to the landing pad if the catch or filter specification matches, and otherwise it keeps on unwinding. There are two ways of specifying to the unwinder that it should "always" (more on why there are quotes here later) jump to the landing pad: follow the specification by a 0 typeid, or follow it by the typeid for the NULL typeinfo. GCC does the first, and this patch makes LLVM do the same as gcc. However there is a problem: the unwinder performs optimizations based on C++ semantics (it only expects destructors to be run if the 0 typeid fires - known as "cleanups"), meaning it assumes that no exceptions will be raised and that the raised exception will be reraised at the end of the cleanup code. So if someone writes their own LLVM code using the exception intrinsics they will get a nasty surprise if they don't follow these rules. The other possibility of using the typeid corresponding to NULL (catch-all) causes the unwinder to make no assumptions, so this is probably what we should use in the long-run. However since we are still having trouble getting exception handling working properly, for the moment it seems best to closely imitate GCC. llvm-svn: 37399
-
Duncan Sands authored
simplifies the code in DwarfWriter, allows for multiple filters and makes it trivial to specify filters accompanied by cleanups or catch-all specifications (see next patch). What a deal! Patch blessed by Anton. llvm-svn: 37398
-
Zhou Sheng authored
llvm-svn: 37397
-
Dale Johannesen authored
llvm-svn: 37394
-
Dale Johannesen authored
llvm-svn: 37393
-
Dale Johannesen authored
See test/CodeGen/X86/test-pic-jtbl.ll for a case where it works well; shaves another 10K off our favorite benchmark. I was hesitant about this because of compile speed, but seems to do OK on a bootstrap. llvm-svn: 37392
-
- Jun 01, 2007
-
-
Evan Cheng authored
llvm-svn: 37387
-
Duncan Sands authored
as a null i8 pointer not as a 0 i32. llvm-svn: 37383
-
Evan Cheng authored
Ifcvt triangle: don't ifcvt 'true' BB if it has other predecessors; don't merge 'false' BB if it has other predecessors. llvm-svn: 37382
-