summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Fix PHIElimination optimization that uses MBB->getBasicBlock.Jakob Stoklund Olesen2009-11-132-34/+23
| | | | | | | | | | | The BasicBlock associated with a MachineBasicBlock does not necessarily correspond to the code in the MBB. Don't insert a new IR BasicBlock when splitting critical edges. We are not supposed to modify the IR during codegen, and we should be able to do just fine with a NULL BB. llvm-svn: 88707
* Add MachineFunction::verify() to call the machine code verifier directly.Jakob Stoklund Olesen2009-11-131-0/+4
| | | | llvm-svn: 88706
* Fix polarity of a CFG check in machine verifier.Jakob Stoklund Olesen2009-11-131-5/+14
| | | | llvm-svn: 88704
* Use .data() instead of .c_str() when nul-termination is not needed.Dan Gohman2009-11-131-1/+1
| | | | llvm-svn: 88703
* Move DebugInfo checks into EmitComments and remove them fromDavid Greene2009-11-131-15/+23
| | | | | | | | target-specific AsmPrinters. Not all comments need DebugInfo. Re-enable the line numbers comment test. llvm-svn: 88697
* When optimizing for size, don't tail-merge unless it's likely to be aDan Gohman2009-11-131-9/+12
| | | | | | | | | | code-size win, and not when it's only likely to be code-size neutral, such as when only a single instruction would be eliminated and a new branch would be required. This fixes rdar://7392894. llvm-svn: 88692
* Fix PR5410: LiveVariables lost subreg def:Evan Cheng2009-11-131-1/+7
| | | | | | | | | | | | | | D0<def,dead> = ... ... = S0<use, kill> S0<def> = ... ... D0<def> = The first D0 def is correctly marked dead, however, livevariables should have added an implicit def of S0 or we end up with a use without a def. llvm-svn: 88690
* Allow target to specify regclass for which antideps will only be broken ↵David Goodwin2009-11-133-32/+109
| | | | | | along the critical path. llvm-svn: 88682
* Don't let a noalias difference disrupt the tailcall optimization.Dan Gohman2009-11-131-3/+4
| | | | llvm-svn: 88672
* Ignore nameless variables.Devang Patel2009-11-131-1/+3
| | | | llvm-svn: 87069
* Adjust isConstantSplat to allow for big-endian targets.Dale Johannesen2009-11-131-4/+7
| | | | | | PPC is such a target; make it work. llvm-svn: 87060
* Simplify code a bitBill Wendling2009-11-121-4/+3
| | | | llvm-svn: 87040
* Refactor code that checks if it's a call to a "nounwind" function.Bill Wendling2009-11-122-31/+40
| | | | llvm-svn: 87036
* Do some cleanups suggested by Chris.David Greene2009-11-121-0/+4
| | | | llvm-svn: 87034
* Set the ReloadReuse AsmPrinter flag where appropriate.David Greene2009-11-121-0/+3
| | | | llvm-svn: 87030
* Fix -Asserts warning.Daniel Dunbar2009-11-121-2/+1
| | | | llvm-svn: 87024
* If there's more than one function operand to a call instruction, be conservativeBill Wendling2009-11-121-1/+12
| | | | | | | | | and don't assume that the call doesn't throw. It would be nice if there were a way to determine which is the callee and which is a parameter. In practice, the architecture we care about normally only have one operand for a call instruction (x86 and arm). llvm-svn: 87023
* Add a bool flag to StackObjects telling whether they reference spillDavid Greene2009-11-127-16/+18
| | | | | | | | | | | | | slots. The AsmPrinter will use this information to determine whether to print a spill/reload comment. Remove default argument values. It's too easy to pass a wrong argument value when multiple arguments have default values. Make everything explicit to trap bugs early. Update all targets to adhere to the new interfaces.. llvm-svn: 87022
* Add compare_lower and equals_lower methods to StringRef. Switch all users ofBenjamin Kramer2009-11-121-3/+2
| | | | | | StringsEqualNoCase (from StringExtras.h) to it. llvm-svn: 87020
* Make FixedStackPseudoSourceValue a first-class PseudoSourceValue byDavid Greene2009-11-121-23/+2
| | | | | | | | making it visible to clients and adding LLVM-style cast capability. This will be used by AsmPrinter to determine when to emit spill comments for an instruction. llvm-svn: 87019
* Rename registers to break output dependencies in addition to anti-dependencies.David Goodwin2009-11-124-10/+30
| | | | llvm-svn: 87015
* "Attach debug info with llvm instructions" mode was enabled a month ago. Now ↵Devang Patel2009-11-126-393/+14
| | | | | | make it permanent and remove old way of inserting intrinsics to encode debug info for line number and scopes. llvm-svn: 87014
* RegScavenger::enterBasicBlock should always reset register state.Evan Cheng2009-11-121-5/+2
| | | | llvm-svn: 86972
* Move the utility function UpdateTerminator() from CodePlacementOpt() intoJim Grosbach2009-11-122-61/+56
| | | | | | MachineBasicBlock so other passes can utilize it. llvm-svn: 86947
* Make the BranchFolderPass class local to BranchFolding.cpp.Dan Gohman2009-11-122-14/+15
| | | | llvm-svn: 86928
* Minor code cleanups.Dan Gohman2009-11-121-9/+9
| | | | llvm-svn: 86926
* Fixed an iteration condition in PreAllocSplitting. This should fix some ↵Lang Hames2009-11-121-1/+1
| | | | | | miscompilations casued by PreAllocSplitting. llvm-svn: 86919
* Tail merge at any size when there are two potentials blocks and oneDan Gohman2009-11-121-10/+34
| | | | | | can be made to fall through into the other. llvm-svn: 86909
* Don't mark a call as potentially throwing if the function it's calling has theBill Wendling2009-11-111-1/+21
| | | | | | "nounwind" attribute. llvm-svn: 86897
* Promote MergePotentialsElt and SameTailElt to be regular classesDan Gohman2009-11-112-58/+107
| | | | | | | instead of typedefs for std::pair. This simplifies the type of SameTails, which previously was std::vector<std::pair<std::vector<std::pair<unsigned, MachineBasicBlock *> >::iterator, MachineBasicBlock::iterator> llvm-svn: 86885
* x86 users can now return arbitrary sized structs. Structs too large to fit ↵Kenneth Uildriks2009-11-112-67/+211
| | | | | | in return registers will be returned through a hidden sret parameter introduced during SelectionDAG construction. llvm-svn: 86876
* Revert this line of 86871.Dan Gohman2009-11-111-1/+1
| | | | llvm-svn: 86875
* If doesSupportDebugInformation() is false then do not try to emit dwarf ↵Devang Patel2009-11-111-0/+3
| | | | | | debug info. llvm-svn: 86874
* Check in the changes to this file too.Dan Gohman2009-11-111-3/+9
| | | | llvm-svn: 86873
* Add support for tail duplication to BranchFolding, and extendDan Gohman2009-11-112-53/+296
| | | | | | | | | | | 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
* Fix liveness calculation when splitting critical edges during PHI elimination.Jakob Stoklund Olesen2009-11-113-52/+78
| | | | | | | | | | | | | | - Edges are split before any phis are eliminated, so the code is SSA. - Create a proper IR BasicBlock for the split edges. - LiveVariables::addNewBlock now has same syntax as MachineDominatorTree::addNewBlock. Algorithm calculates predecessor live-out set rather than successor live-in set. This feature still causes some miscompilations. llvm-svn: 86867
* Fix indentation level.Dan Gohman2009-11-111-8/+8
| | | | llvm-svn: 86856
* Whitespace cleanups.Dan Gohman2009-11-111-93/+92
| | | | llvm-svn: 86855
* Prefix MBB numbers with "BB#" in debug output to make it clear whatDan Gohman2009-11-111-3/+3
| | | | | | the numbers mean. llvm-svn: 86854
* Minor code simplification.Dan Gohman2009-11-111-9/+8
| | | | llvm-svn: 86853
* Fix -Asserts warning.Daniel Dunbar2009-11-111-0/+1
| | | | llvm-svn: 86794
* Make sure that the exception handling data has the same visibility as theBill Wendling2009-11-111-2/+7
| | | | | | function it's generated for. llvm-svn: 86779
* Do not assume first function scope seen represents current function. Devang Patel2009-11-111-2/+3
| | | | llvm-svn: 86771
* While creating DbgScopes, do not forget parent scope. Devang Patel2009-11-111-0/+2
| | | | llvm-svn: 86763
* Ignore variable if scope info is not available.Devang Patel2009-11-101-2/+5
| | | | llvm-svn: 86753
* Emit correct code when making a ConstantPool entry for a vectorDale Johannesen2009-11-101-2/+11
| | | | | | | | | constant whose component type is not a legal type for the target. (If the target ConstantPool cannot handle this type either, it has an opportunity to merge elements. In practice any target with 8-bit bytes must support i8 *as data*). 7320806 (partial). llvm-svn: 86751
* Implement support to debug inlined functions.Devang Patel2009-11-107-548/+600
| | | | llvm-svn: 86748
* Teach PHIElimination to split critical edges when -split-phi-edges is enabled.Jakob Stoklund Olesen2009-11-103-4/+125
| | | | | | | | Critical edges leading to a PHI node are split when the PHI source variable is live out from the predecessor block. This help the coalescer eliminate more PHI joins. llvm-svn: 86725
* Refactoring: Extract method PHIElimination::isLiveOut().Jakob Stoklund Olesen2009-11-102-69/+65
| | | | | | | Clean up some whitespace. No functional changes. llvm-svn: 86724
* Codegen support for the llvm.invariant/lifetime.start/end intrinsics:Duncan Sands2009-11-102-0/+19
| | | | | | just throw them away. llvm-svn: 86678
OpenPOWER on IntegriCloud