summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/BranchFolding.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* rename TargetInstrDescriptor -> TargetInstrDesc.Chris Lattner2008-01-071-5/+5
| | | | | | | Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695
* Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflectsChris Lattner2008-01-071-14/+11
| | | | | | | | | | | | | | | that it is cheap and efficient to get. Move a variety of predicates from TargetInstrInfo into TargetInstrDescriptor, which makes it much easier to query a predicate when you don't have TII around. Now you can use MI->getDesc()->isBranch() instead of going through TII, and this is much more efficient anyway. Not all of the predicates have been moved over yet. Update old code that used MI->getInstrDescriptor()->Flags to use the new predicates in many places. llvm-svn: 45674
* rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.Chris Lattner2008-01-061-1/+1
| | | | llvm-svn: 45667
* rename isStore -> mayStore to more accurately reflect what it captures.Chris Lattner2008-01-061-1/+1
| | | | llvm-svn: 45656
* 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
OpenPOWER on IntegriCloud