summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/MachineBasicBlock.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* move target-independent opcodes out of TargetInstrInfoChris Lattner2010-02-091-2/+1
| | | | | | | | | into TargetOpcodes.h. #include the new TargetOpcodes.h into MachineInstr. Add new inline accessors (like isPHI()) to MachineInstr, and start using them throughout the codebase. llvm-svn: 95687
* add a new MachineBasicBlock::getSymbol method, replacingChris Lattner2010-01-261-1/+16
| | | | | | the AsmPrinter::GetMBBSymbol. llvm-svn: 94515
* make findDebugLoc a class methodDale Johannesen2010-01-201-9/+11
| | | | llvm-svn: 94032
* Move findDebugLoc somewhere more central. FixDale Johannesen2010-01-201-0/+17
| | | | | | | more cases where debug declarations affect debug line info. llvm-svn: 93953
* Don't make changes to the MBB in MachineBasicBlock::canFallThrough().Jakob Stoklund Olesen2010-01-151-1/+1
| | | | | | | This fixes the regression for -pre-regalloc-taildup in MultiSource/Applications/lambda-0.1.3. llvm-svn: 93541
* Change errs() to dbgs().David Greene2010-01-041-1/+2
| | | | llvm-svn: 92542
* Helpful comment added. Some code cleanup. No functional change.Bill Wendling2009-12-161-11/+27
| | | | llvm-svn: 91479
* Revert these. They may have been causing 483_xalancbmk to fail:Bill Wendling2009-12-151-29/+7
| | | | | | | | | | | | | | | | | | | | $ svn merge -c -91161 https://llvm.org/svn/llvm-project/llvm/trunk --- Reverse-merging r91161 into '.': U lib/CodeGen/BranchFolding.cpp U lib/CodeGen/MachineBasicBlock.cpp $ svn merge -c -91113 https://llvm.org/svn/llvm-project/llvm/trunk --- Reverse-merging r91113 into '.': G lib/CodeGen/MachineBasicBlock.cpp $ svn merge -c -91101 https://llvm.org/svn/llvm-project/llvm/trunk --- Reverse-merging r91101 into '.': U include/llvm/CodeGen/MachineBasicBlock.h G lib/CodeGen/MachineBasicBlock.cpp $ svn merge -c -91092 https://llvm.org/svn/llvm-project/llvm/trunk --- Reverse-merging r91092 into '.': G include/llvm/CodeGen/MachineBasicBlock.h G lib/CodeGen/MachineBasicBlock.cpp llvm-svn: 91376
* Whitespace changes, comment clarification. No functional changes.Bill Wendling2009-12-141-3/+3
| | | | llvm-svn: 91274
* Don't try to move a MBB into the fall-through position if it's a landing pad orBill Wendling2009-12-111-10/+3
| | | | | | | | | | | | | | branches only to a landing pad. Without this check, the compiler would go into an infinite loop because the branch to a landing pad is an "abnormal" edge which wasn't being taken into account. This is the meat of that fix: if (!PrevBB.canFallThrough() && !MBB->BranchesToLandingPad(MBB)) { The other stuff is simplification of the "branches to a landing pad" code. llvm-svn: 91161
* Revert part of r91101 which was causing an infinite loop in the self-hostingBill Wendling2009-12-111-3/+8
| | | | | | build bots. llvm-svn: 91113
* Address comments on last patch:Bill Wendling2009-12-111-13/+8
| | | | | | | | - Loosen the restrictions when checking of it branches to a landing pad. - Make the loop more efficient by checking the '.insert' return value. - Do cheaper checks first. llvm-svn: 91101
* A machine basic block may end in an unconditional branch, however it may haveBill Wendling2009-12-111-7/+36
| | | | | | | | | | | | | more than one successor. Normally, these extra successors are dead. However, some of them may branch to exception handling landing pads. If we remove those successors, then the landing pads could go away if all predecessors to it are removed. Before, it was checking if the direct successor was the landing pad. But it could be the result of jumping through multiple basic blocks to get to it. If we were to only check for the existence of an EH_LABEL in the basic block and not remove successors if it's in there, then it could stop actually dead basic blocks from being removed. llvm-svn: 91092
* Simplify this code: don't call AnalyzeBranch before doing simpler checks.Dan Gohman2009-12-051-13/+13
| | | | llvm-svn: 90633
* improve portability to avoid conflicting with std::next in c++'0x.Chris Lattner2009-12-031-3/+4
| | | | | | Patch by Howard Hinnant! llvm-svn: 90365
* Split tail duplication into a separate pass. This is needed to avoidBob Wilson2009-11-261-0/+45
| | | | | | | | | running tail duplication when doing branch folding for if-conversion, and we also want to be able to run tail duplication earlier to fix some reg alloc problems. Move the CanFallThrough function from BranchFolding to MachineBasicBlock so that it can be shared by TailDuplication. llvm-svn: 89904
* Teach MachineBasicBlock::updateTerminator() to handle a failing ↵Jakob Stoklund Olesen2009-11-221-2/+8
| | | | | | | | TII->ReverseBranchCondition(Cond) call. This fixes the MallocBench/cfrac test case regression. llvm-svn: 89608
* Add MachineBasicBlock::getName, and use it in place of getBasicBlock()->getName.Jakob Stoklund Olesen2009-11-201-0/+7
| | | | | | Fix debug code that assumes getBasicBlock never returns NULL. llvm-svn: 89428
* Add a WriteAsOperand for MachineBasicBlock so MachineLoopInfo dump looks sane.Evan Cheng2009-11-171-0/+5
| | | | llvm-svn: 89130
* Move the utility function UpdateTerminator() from CodePlacementOpt() intoJim Grosbach2009-11-121-0/+53
| | | | | | MachineBasicBlock so other passes can utilize it. llvm-svn: 86947
* Add support for tail duplication to BranchFolding, and extendDan Gohman2009-11-111-4/+1
| | | | | | | | | | | tail merging support to handle more cases. - Recognize several cases where tail merging is beneficial even when the tail size is smaller than the generic threshold. - Make use of MachineInstrDesc::isBarrier to help detect non-fallthrough blocks. - Check for and avoid disrupting fall-through edges in more cases. llvm-svn: 86871
* Make -print-machineinstrs more readable.Dan Gohman2009-10-311-13/+18
| | | | | | | | | | | | | | - Be consistent when referring to MachineBasicBlocks: BB#0. - Be consistent when referring to virtual registers: %reg1024. - Be consistent when referring to unknown physical registers: %physreg10. - Be consistent when referring to known physical registers: %RAX - Be consistent when referring to register 0: %reg0 - Be consistent when printing alignments: align=16 - Print jump table contents. - Don't print host addresses, in general. - and various other cleanups. llvm-svn: 85682
* Mention if a block has its address taken in debug output.Dan Gohman2009-10-301-0/+1
| | | | llvm-svn: 85571
* Initial target-independent CodeGen support for BlockAddresses.Dan Gohman2009-10-301-1/+2
| | | | llvm-svn: 85556
* remove std::ostream versions of printing stuff for MBB and MF,Chris Lattner2009-08-231-10/+1
| | | | | | upgrading a few things to use raw_ostream llvm-svn: 79811
* remove dead PrefixPrinter class.Chris Lattner2009-08-231-6/+4
| | | | llvm-svn: 79796
* random cleanups.Chris Lattner2009-08-231-25/+24
| | | | llvm-svn: 79794
* fix another bozo bugChris Lattner2009-08-181-2/+2
| | | | llvm-svn: 79313
* fix accidentally inverted conditional and add comment.Chris Lattner2009-08-181-1/+4
| | | | llvm-svn: 79312
* turn this conditional into something humans might actuallyChris Lattner2009-08-181-8/+25
| | | | | | be able to understand ;-) llvm-svn: 79311
* Re-apply LiveInterval index dumping patch, with fixes suggested by BillDavid Greene2009-08-031-4/+6
| | | | | | and others. llvm-svn: 78003
* Move more to raw_ostream, provide support for writing MachineBasicBlock,Daniel Dunbar2009-07-241-1/+11
| | | | | | LiveInterval, etc to raw_ostream. llvm-svn: 76965
* revert r76602, 76603, and r76615, pending design discussions.Chris Lattner2009-07-211-3/+1
| | | | llvm-svn: 76646
* Add PrefixPrinter arguments to the dump routines for MachineFunction andDavid Greene2009-07-211-1/+3
| | | | | | MachineBasicBlock. We'll use these shortly. llvm-svn: 76603
* If a MachineBasicBlock has multiple ways of reaching another block,Dan Gohman2009-05-051-4/+2
| | | | | | | | allow it to have multiple CFG edges to that block. This is needed to allow MachineBasicBlock::isOnlyReachableByFallthrough to work correctly. This fixes PR4126. llvm-svn: 71018
* Reapply 68073, with fixes. EH Landing-pad basic blocks are notDan Gohman2009-03-311-0/+10
| | | | | | | | entered via fall-through. Don't miss fallthroughs from blocks terminated by conditional branches. Also, move isOnlyReachableByFallthrough out of line. llvm-svn: 68129
* Constify arguments in isSuccessor and isLayoutSuccessor.Dan Gohman2009-03-301-2/+2
| | | | llvm-svn: 68054
* Delete unnecessary parens around return values.Dan Gohman2009-01-081-1/+1
| | | | llvm-svn: 61950
* Switch the MachineOperand accessors back to the short names likeDan Gohman2008-10-031-1/+1
| | | | | | isReg, etc., from isRegister, etc. llvm-svn: 57006
* Add a new MachineBasicBlock utility function, isLayoutSuccessor, thatDan Gohman2008-10-021-0/+5
| | | | | | | can be used when deciding if a block can transfer control to another via a fall-through instead of a branch. llvm-svn: 56968
* Remove isImm(), isReg(), and friends, in favor of Dan Gohman2008-09-131-1/+2
| | | | | | | | | isImmediate(), isRegister(), and friends, to avoid confusion about having two different names with the same meaning. I'm not attached to the longer names, and would be ok with changing to the shorter names if others prefer it. llvm-svn: 56189
* Fold the useful features of alist and alist_node into ilist, andDan Gohman2008-07-281-24/+12
| | | | | | | | | | | | | | | | a new ilist_node class, and remove them. Unlike alist_node, ilist_node doesn't attempt to manage storage itself, so it avoids the associated problems, including being opaque in gdb. Adjust the Recycler class so that it doesn't depend on alist_node. Also, change it to use explicit Size and Align parameters, allowing it to work when the largest-sized node doesn't have the greatest alignment requirement. Change MachineInstr's MachineMemOperand list from a pool-backed alist to a std::list for now. llvm-svn: 54146
* Re-introduce LeakDetector support for MachineInstrs and MachineBasicBlocks.Dan Gohman2008-07-171-0/+12
| | | | | | | Fix a leak that this turned up in LowerSubregs.cpp. And, comment a leak in LiveIntervalAnalysis.cpp. llvm-svn: 53746
* Pool-allocation for MachineInstrs, MachineBasicBlocks, andDan Gohman2008-07-071-53/+53
| | | | | | | | | | | MachineMemOperands. The pools are owned by MachineFunctions. This drastically reduces the number of calls to malloc/free made during the "Emit" phase of scheduling, as well as later phases in CodeGen. Combined with other changes, this speeds up the "instruction selection" phase of CodeGen by 10% in some cases. llvm-svn: 53212
* Added addition atomic instrinsics and, or, xor, min, and max.Mon P Wang2008-05-051-0/+13
| | | | llvm-svn: 50663
* - Check if a register is livein before removing it. It may have already been ↵Evan Cheng2008-04-241-0/+5
| | | | | | | | removed. - Do not iterate over SmallPtrSet, the order of iteration is not deterministic. llvm-svn: 50209
* Add a quick and dirty "loop aligner pass". x86 uses it to align its loops to ↵Evan Cheng2008-02-281-0/+1
| | | | | | 16-byte boundaries. llvm-svn: 47703
* Rename PrintableName to Name.Bill Wendling2008-02-261-1/+1
| | | | llvm-svn: 47629
* Change "Name" to "AsmName" in the target register info. Gee, a refactoring toolBill Wendling2008-02-261-1/+1
| | | | | | would have been a Godsend here! llvm-svn: 47625
* Rename MRegisterInfo to TargetRegisterInfo.Dan Gohman2008-02-101-7/+7
| | | | llvm-svn: 46930
OpenPOWER on IntegriCloud