summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/BranchFolding.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Add new shorter predicates for testing machine operands for various types: Chris Lattner2007-12-301-7/+5
| | | | | | | | | | | | e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on switching everything over, so new clients should just start using the shorter names. Remove old long accessors, switching everything over to use the short accessor: getMachineBasicBlock() -> getMBB(), getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc. llvm-svn: 45464
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* Improve branch folding by recgonizing that explict successor relationships ↵Christopher Lamb2007-12-101-0/+5
| | | | | | impact the value of fall-through choices. llvm-svn: 44785
* Changed XXX to FIXME, and added comment to the README fileBill Wendling2007-10-251-1/+1
| | | | llvm-svn: 43359
* Added comment explaining why we are doing this check.Bill Wendling2007-10-251-0/+5
| | | | llvm-svn: 43353
* Don't branch fold inline asm statements.Bill Wendling2007-10-191-1/+2
| | | | llvm-svn: 43191
* More explicit keywords.Dan Gohman2007-08-021-1/+1
| | | | llvm-svn: 40757
* If assertions are not enabled, we should return False here.Duncan Sands2007-07-111-5/+4
| | | | llvm-svn: 38535
* Make this work with GLIBCXX_DEBUG.David Greene2007-07-101-1/+8
| | | | llvm-svn: 38516
* Fix misue of iterator pointing to erased object. Uncovered byDavid Greene2007-06-291-4/+5
| | | | | | _GLIBCXX_DEBUG. llvm-svn: 37793
* Move CorrectExtraCFGEdges() from BranchFolding.cpp to a MachineBasicBlock ↵Evan Cheng2007-06-181-75/+4
| | | | | | method. llvm-svn: 37633
* Make throttle a hidden parameter, per review.Dale Johannesen2007-06-081-6/+11
| | | | llvm-svn: 37511
* Throttle tail merging; handling blocks with large numbers of predecessorsDale Johannesen2007-06-081-2/+6
| | | | | | is too slow. llvm-svn: 37509
* Tail merging wasn't working for predecessors of landing pads. PR 1496.Dale Johannesen2007-06-041-0/+22
| | | | llvm-svn: 37427
* Move ReplaceUsesOfBlockWith() out of BranchFolding into a MachineBasicBlock ↵Evan Cheng2007-06-041-40/+2
| | | | | | general facility. llvm-svn: 37408
* Fix CorrectExtraCFGEdges to allow for multiple LandingPad targets.Dale Johannesen2007-06-021-9/+6
| | | | llvm-svn: 37394
* 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
* 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
* 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
* 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
* Two tail merging improvements:Dale Johannesen2007-05-231-40/+44
| | | | | | | | | When considering blocks with more than 2 predecessors, merge the block with the largest number of matching insns, rather than the first block found. Considering that 1 matching insn is enough to show a win for candidates that already end with a branch. llvm-svn: 37315
* Make tail merging the default, except on powerPC. There was no prior artDale Johannesen2007-05-221-4/+13
| | | | | | | for a target-dependent default with a command-line override; this way should be generally usable. llvm-svn: 37285
* Remove some unneeded branches. (spotted by Evan, thanks)Dale Johannesen2007-05-181-0/+1
| | | | llvm-svn: 37198
* Remove extra CFG edges before doing these passes; it makes them happier.Dale Johannesen2007-05-151-1/+16
| | | | llvm-svn: 37089
* Do not generate branches to entry block. This fixes several test suiteDale Johannesen2007-05-101-4/+19
| | | | | | failures on PPC (can happen only when prologue code is null) llvm-svn: 36979
* Make tail merging handle many more cases (all it can, I think).Dale Johannesen2007-05-101-32/+91
| | | | llvm-svn: 36966
* Handle some non-exit blocks in tail merging.Dale Johannesen2007-05-071-11/+81
| | | | llvm-svn: 36907
* Drop 'const'Devang Patel2007-05-031-2/+2
| | | | llvm-svn: 36662
* Use 'static const char' instead of 'static const int'.Devang Patel2007-05-021-2/+2
| | | | | | | Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
* Do not use typeinfo to identify pass in pass manager.Devang Patel2007-05-011-0/+4
| | | | llvm-svn: 36632
* Fix PR1228 and CodeGen/Generic/2007-04-30-LandingPadBranchFolding.llChris Lattner2007-04-301-2/+8
| | | | llvm-svn: 36602
* maintain LiveIn when splitting blocks (register scavenging needs it)Dale Johannesen2007-03-201-1/+22
| | | | llvm-svn: 35226
* Remove isAccessable.Jim Laskey2007-02-221-4/+4
| | | | llvm-svn: 34497
* Make branch folding behave in the presence of landing pads.Jim Laskey2007-02-211-25/+30
| | | | llvm-svn: 34476
* Fixes PR 1200Dale Johannesen2007-02-171-13/+29
| | | | llvm-svn: 34359
* Change the MachineDebugInfo to MachineModuleInfo to better reflect usageJim Laskey2007-01-261-6/+6
| | | | | | for debugging and exception handling. llvm-svn: 33550
* Make LABEL a builtin opcode.Jim Laskey2007-01-261-6/+2
| | | | llvm-svn: 33537
* Eliminate static ctors from StatisticsChris Lattner2006-12-191-3/+3
| | | | llvm-svn: 32698
* Detemplatize the Statistic class. The only type it is instantiated withChris Lattner2006-12-061-3/+3
| | | | | | is 'unsigned'. llvm-svn: 32279
* Don't transform in another bad case: if the block is empty, it should beChris Lattner2006-11-181-1/+2
| | | | | | simplified before we do this xform so that our cost model is accurate. llvm-svn: 31864
* Fix another case we *don't* want to do this xform.Chris Lattner2006-11-181-2/+26
| | | | llvm-svn: 31861
* make the previous change more aggressive, moving any block with no fallthrough.Chris Lattner2006-11-181-9/+11
| | | | | | This speeds up yacr2 by 7% on a core2. llvm-svn: 31856
* Minor code layout tweak: if we have something like this:Chris Lattner2006-11-181-0/+50
| | | | | | | | | | | | | | | if (cond) goto BB2 BB1: ... return; BB2: ... Move BB1 to the end of the function so that the code falls through in the non-return case. This has the effect of moving assert (and other no-return call) bodies and return blocks out of loops. llvm-svn: 31855
* optimize single MBB loops better. In particular, produce:Chris Lattner2006-11-081-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | LBB1_57: #bb207.i movl 72(%esp), %ecx movb (%ecx,%eax), %cl movl 80(%esp), %edx movb %cl, 1(%edx,%eax) incl %eax cmpl $143, %eax jne LBB1_57 #bb207.i jmp LBB1_64 #cond_next255.i intead of: LBB1_57: #bb207.i movl 72(%esp), %ecx movb (%ecx,%eax), %cl movl 80(%esp), %edx movb %cl, 1(%edx,%eax) incl %eax cmpl $143, %eax je LBB1_64 #cond_next255.i jmp LBB1_57 #bb207.i This eliminates a branch per iteration of the loop. This hurted PPC particularly, because the extra branch meant another dispatch group for each iteration of the loop. llvm-svn: 31530
* Unbreak VC++ build.Jeff Cohen2006-11-051-0/+1
| | | | llvm-svn: 31464
* For PR786:Reid Spencer2006-11-021-2/+0
| | | | | | | | | | Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting fall out by removing unused variables. Remaining warnings have to do with unused functions (I didn't want to delete code without review) and unused variables in generated code. Maintainers should clean up the remaining issues when they see them. All changes pass DejaGnu tests and Olden. llvm-svn: 31380
* give branch folding a simple heuristic to decide which block to split so thatChris Lattner2006-11-011-6/+49
| | | | | | | it inserts an uncond branch where it is less likely to cause a problem. This fixes some perf issues on ppc. llvm-svn: 31354
* make tail merging more aggressive. If two blocks share a common tail, but theChris Lattner2006-11-011-16/+53
| | | | | | | tail is not an entire block for either of them, pick one, split it, then merge the common part. llvm-svn: 31336
OpenPOWER on IntegriCloud