summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Do not change the size of function arguments. PR 1489.Dale Johannesen2007-06-071-1/+9
| | | | llvm-svn: 37496
* ifcvt a triangle: don't merge ifcvt block with rejoin block if it can fall ↵Evan Cheng2007-06-071-17/+29
| | | | | | 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
* Lots of bug fixes. Now finally in a reasonable state.Evan Cheng2007-06-071-78/+104
| | | | llvm-svn: 37485
* Quick patch to fix the build, based on what it appears Evan meant to write.Owen Anderson2007-06-061-1/+1
| | | | | | Evan, please check that this is in fact correct. llvm-svn: 37471
* Fold the exception actions table harder: if two typeid lists start theDuncan Sands2007-06-061-57/+69
| | | | | | same, only output one copy of the common part. llvm-svn: 37470
* Lots of bug fixes.Evan Cheng2007-06-061-40/+76
| | | | llvm-svn: 37467
* Additional fix for PR1422: make sure the landing pad label is placed in theDuncan Sands2007-06-061-15/+26
| | | | | | | 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
* If a unconditional branch is added to branch to the false path during ifcvt, ↵Evan Cheng2007-06-061-6/+33
| | | | | | the predicated block cannot be iteratively ifcvted. llvm-svn: 37456
* Minor statistics counting bug.Evan Cheng2007-06-061-3/+5
| | | | llvm-svn: 37451
* Fix a couple of typos and be smarter about order of blocks when ifcvt a diamond.Evan Cheng2007-06-061-17/+30
| | | | llvm-svn: 37449
* Fix diamond shape ifcvt bugs.Evan Cheng2007-06-051-61/+41
| | | | llvm-svn: 37444
* ReplaceUsesOfBlockWith() can modify the predecessors list.Evan Cheng2007-06-051-3/+4
| | | | llvm-svn: 37441
* Do not ifcvt if either true / false path is a backedge. Not profitable in ↵Evan Cheng2007-06-051-0/+3
| | | | | | almost all cases. llvm-svn: 37440
* I had a senior moment.Evan Cheng2007-06-051-3/+4
| | | | llvm-svn: 37433
* If the predicated block requires an early exit, end the block there and add ↵Evan Cheng2007-06-051-2/+3
| | | | | | a unconditional branch to false block. AnalyzeBranch() does not understand early exits. llvm-svn: 37430
* Fix some subtle bugs: bug during succeessor copying; incorrectly updating ↵Evan Cheng2007-06-051-20/+19
| | | | | | states of ifcvted blocks. llvm-svn: 37429
* Tail merging wasn't working for predecessors of landing pads. PR 1496.Dale Johannesen2007-06-041-0/+22
| | | | llvm-svn: 37427
* Global ctors / dtors alignment shouldn't be hard-coded at 4. e.g. It could ↵Evan Cheng2007-06-041-2/+4
| | | | | | be 8 for 64-bit targets. llvm-svn: 37421
* Forgot to check for if iterator reached the end.Evan Cheng2007-06-041-1/+2
| | | | llvm-svn: 37420
* Pass the DAG to SDNode::dump to let it do more detailed dumps in some cases.Dan Gohman2007-06-041-5/+5
| | | | llvm-svn: 37413
* Resolve implicit alignment before computing the FoldingSet information soDan Gohman2007-06-041-50/+49
| | | | | | | | | | | | 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
* Let IfConverter loose. Allow more aggressive subsumptions; reorder basic ↵Evan Cheng2007-06-041-196/+264
| | | | | | blocks to expose more ifcvt opportunities; code clean up and fixes. llvm-svn: 37409
* Move ReplaceUsesOfBlockWith() out of BranchFolding into a MachineBasicBlock ↵Evan Cheng2007-06-042-40/+29
| | | | | | general facility. llvm-svn: 37408
* The semantics of invoke require that we always jump to the unwind blockDuncan Sands2007-06-021-0/+4
| | | | | | | | | | | | | | | | | | | | | | | (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
* Integrate exception filter support and exception catch support. ThisDuncan Sands2007-06-023-60/+48
| | | | | | | | 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
* Make LowerCTPOP() support arbitrary bitwidth integer type.Zhou Sheng2007-06-021-10/+23
| | | | llvm-svn: 37397
* Fix CorrectExtraCFGEdges to allow for multiple LandingPad targets.Dale Johannesen2007-06-021-9/+6
| | | | llvm-svn: 37394
* Fancier algorithm in tail-merge comment implemented, so remove comment.Dale Johannesen2007-06-011-18/+0
| | | | llvm-svn: 37393
* Implement smarter algorithm for choosing which blocks to tail-merge.Dale Johannesen2007-06-011-28/+43
| | | | | | | | 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
* Correctly mark early-exit on the false path.Evan Cheng2007-06-011-8/+9
| | | | llvm-svn: 37387
* Since TypeInfos are passed as i8 pointers, a NULL TypeInfo should be passedDuncan Sands2007-06-011-4/+2
| | | | | | as a null i8 pointer not as a 0 i32. llvm-svn: 37383
* Ifcvt triangle: don't ifcvt 'true' BB if it has other predecessors; don't ↵Evan Cheng2007-06-011-3/+18
| | | | | | merge 'false' BB if it has other predecessors. llvm-svn: 37382
* Remove a bogus check. Even terminators in a ifcvt need to be predicated. ↵Evan Cheng2007-06-011-3/+1
| | | | | | Unconditional branches can usually be converted to conditional ones. llvm-svn: 37380
* Allow multiple ifcvt candidates to share children blocks; add some debugging ↵Evan Cheng2007-06-011-7/+20
| | | | | | code. llvm-svn: 37379
* Arrange for only 1 of multiple branches to landing pad to be kept.Dale Johannesen2007-05-311-4/+13
| | | | | | Do not remove empty landing pads (EH table needs to be updated) llvm-svn: 37375
* Fix a typo.Evan Cheng2007-05-311-1/+1
| | | | llvm-svn: 37374
* Fix the asmprinter so that a globalvalue can specify an explicit alignmentChris Lattner2007-05-311-5/+18
| | | | | | | | smaller than the preferred alignment, but so that the target can actually specify a minimum alignment if needed. This fixes some objc protocol failures Devang tracked down. llvm-svn: 37373
* Fix PR1424.Lauro Ramos Venancio2007-05-311-1/+1
| | | | | | | When a function has FP, the register scavenging spill slot offset already was calculated. llvm-svn: 37371
* Change traversal order to bottom up in preparation for more aggressive ↵Evan Cheng2007-05-301-23/+69
| | | | | | if-conversion. llvm-svn: 37365
* Fix CodeGen/PowerPC/2007-05-30-dagcombine-miscomp.ll, and PR1473.Chris Lattner2007-05-301-1/+1
| | | | llvm-svn: 37362
* Changed per review comment.Dale Johannesen2007-05-301-3/+2
| | | | llvm-svn: 37355
* Make stable_sort in tail merging actually be stable (it never was, but didn'tDale Johannesen2007-05-291-1/+16
| | | | | | matter until my last change). Reenable tail merging by default. llvm-svn: 37354
* Don't merge in tail block of a diamond if it has more than one predecessors ↵Evan Cheng2007-05-291-2/+4
| | | | | | after if-conversion. llvm-svn: 37353
* If there is an empty block between a source and its successor block, it ↵Evan Cheng2007-05-291-30/+37
| | | | | | still requires a unconditional branch. llvm-svn: 37344
* Add missing const qualifiers.Evan Cheng2007-05-291-7/+8
| | | | llvm-svn: 37341
* Correct the logic in LowerPartSet which cleared the bits from 0 to low-1.Zhou Sheng2007-05-261-5/+7
| | | | llvm-svn: 37331
* tighten up recursion depth againChris Lattner2007-05-251-11/+13
| | | | llvm-svn: 37330
* Silly boog.Evan Cheng2007-05-251-9/+9
| | | | llvm-svn: 37328
* Blocks that cond-br and uncond-br/fallthrough to same block should haveDale Johannesen2007-05-241-1/+4
| | | | | | only one successor. llvm-svn: 37324
* Fix for PR1444: do not create two successors to the same block.Dale Johannesen2007-05-241-2/+10
| | | | | | | Temporarily, this breaks CodeGen/Generic/2006-02-12-InsertLibraryCall.ll by exposing an unrelated latent problem; working on that. llvm-svn: 37323
OpenPOWER on IntegriCloud