summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Add an option for running GVN with redundant load processing disabled.Dan Gohman2009-11-141-9/+23
| | | | llvm-svn: 88742
* Fix PR5412: Fix an inverted check and another missing sub-register check.Evan Cheng2009-11-141-9/+30
| | | | llvm-svn: 88738
* Enable the tail call optimization when the caller returns undef.Dan Gohman2009-11-141-0/+4
| | | | llvm-svn: 88737
* When expanding t2STRDi8 r, r to two stores, add kill markers correctly.Evan Cheng2009-11-141-0/+7
| | | | llvm-svn: 88734
* Fix bug in -split-phi-edges.Jakob Stoklund Olesen2009-11-141-3/+14
| | | | | | | | | | When splitting an edge after a machine basic block with fall-through, we forgot to insert a jump instruction. Fix this by calling updateTerminator() on the fall-through block when relevant. Also be more precise in PHIElimination::isLiveIn. llvm-svn: 88728
* Update MachineDominator informationJakob Stoklund Olesen2009-11-141-6/+9
| | | | llvm-svn: 88727
* Added an API to the SlotIndexes pass to allow new instructions to be ↵Lang Hames2009-11-143-89/+31
| | | | | | | | inserted into the numbering. PreAllocSplitting is now using this API to insert code. llvm-svn: 88725
* Fix PR5411. Bug in UpdateKills. A reg def partially define its super-registers.Evan Cheng2009-11-131-0/+4
| | | | llvm-svn: 88719
* Remove extraneous commit.Eric Christopher2009-11-131-5/+0
| | | | llvm-svn: 88716
* Print out something, even if it's non-parseable later when we'veEric Christopher2009-11-131-2/+7
| | | | | | got ghost linkage. It's better than aborting. llvm-svn: 88715
* 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
* The instruction pointer %RIP is a reserved register on x86_64.Jakob Stoklund Olesen2009-11-131-0/+5
| | | | llvm-svn: 88705
* 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-1313-27/+35
| | | | | | | | 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-138-41/+118
| | | | | | along the critical path. llvm-svn: 88682
* Support fp64 immediate zero, this fixes only part of PR5445 Bruno Cardoso Lopes2009-11-132-3/+22
| | | | | | because the testcase is triggering one more bug. llvm-svn: 88674
* Don't let a noalias difference disrupt the tailcall optimization.Dan Gohman2009-11-131-3/+4
| | | | llvm-svn: 88672
* Distinguish "a," from "a". The first one splits into "a" + "" and the second ↵Rafael Espindola2009-11-131-3/+5
| | | | | | | | one into "a" + 0. llvm-svn: 87084
* Revert r87059 for now. It is failing clang tests.Devang Patel2009-11-131-3/+11
| | | | llvm-svn: 87070
* Ignore nameless variables.Devang Patel2009-11-131-1/+3
| | | | llvm-svn: 87069
* Switch to smallvector. Also fix issue with using unsigend for MaxSplit.Rafael Espindola2009-11-131-3/+4
| | | | llvm-svn: 87068
* Adjust isConstantSplat to allow for big-endian targets.Dale Johannesen2009-11-132-6/+9
| | | | | | PPC is such a target; make it work. llvm-svn: 87060
* Remove unnecessary llvm.dbg.declare bitcastVictor Hernandez2009-11-131-11/+3
| | | | llvm-svn: 87059
* Add a new split method to StringRef that puts the substrings in a vector.Rafael Espindola2009-11-131-0/+19
| | | | llvm-svn: 87058
* Block renumberingJim Grosbach2009-11-131-3/+1
| | | | llvm-svn: 87056
* use lower case for readabilityJim Grosbach2009-11-131-1/+1
| | | | llvm-svn: 87054
* Fix a bootstrap failure.David Greene2009-11-132-24/+63
| | | | | | | | Provide special isLoadFromStackSlotPostFE and isStoreToStackSlotPostFE interfaces to explicitly request checking for post-frame ptr elimination operands. This uses a heuristic so it isn't reliable for correctness. llvm-svn: 87047
* Re-enable this code, since redundant PHIs are now being better nuked.Owen Anderson2009-11-121-4/+0
| | | | llvm-svn: 87042
* 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
* use isInstructionTriviallyDead, as pointed out by DuncanChris Lattner2009-11-121-3/+3
| | | | llvm-svn: 87035
* 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
* Make the MachineFunction argument of getFrameRegister const.David Greene2009-11-1217-18/+19
| | | | | | This also fixes a build error. llvm-svn: 87027
* Add hasLoadFromStackSlot and hasStoreToStackSlot to return whether aDavid Greene2009-11-122-12/+79
| | | | | | | | | | | | | | | machine instruction loads or stores from/to a stack slot. Unlike isLoadFromStackSlot and isStoreFromStackSlot, the instruction may be something other than a pure load/store (e.g. it may be an arithmetic operation with a memory operand). This helps AsmPrinter determine when to print a spill/reload comment. This is only a hint since we may not be able to figure this out in all cases. As such, it should not be relied upon for correctness. Implement for X86. Return false by default for other architectures. llvm-svn: 87026
* 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-1227-93/+127
| | | | | | | | | | | | | 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-123-5/+24
| | | | | | 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-127-430/+16
| | | | | | make it permanent and remove old way of inserting intrinsics to encode debug info for line number and scopes. llvm-svn: 87014
* Update TB[BH] layout optimization. Add support for moving the target blockJim Grosbach2009-11-121-33/+115
| | | | | | | to directly follow the jump table. Move the layout changes to prior to any constant island handling. llvm-svn: 86999
* fix crash in my previous patchNuno Lopes2009-11-121-1/+1
| | | | llvm-svn: 86987
* implement shl, ashr, and lshr methods. shl is not fully implemented as it is ↵Nuno Lopes2009-11-121-0/+37
| | | | | | quite tricky. llvm-svn: 86986
* implement a nice little efficiency hack in the inliner. Since we're nowChris Lattner2009-11-121-14/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | running IPSCCP early, and we run functionattrs interlaced with the inliner, we often (particularly for small or noop functions) completely propagate all of the information about a call to its call site in IPSSCP (making a call dead) and functionattrs is smart enough to realize that the function is readonly (because it is interlaced with inliner). To improve compile time and make the inliner threshold more accurate, realize that we don't have to inline dead readonly function calls. Instead, just delete the call. This happens all the time for C++ codes, here are some counters from opt/llvm-ld counting the number of times calls were deleted vs inlined on various apps: Tramp3d opt: 5033 inline - Number of call sites deleted, not inlined 24596 inline - Number of functions inlined llvm-ld: 667 inline - Number of functions deleted because all callers found 699 inline - Number of functions inlined 483.xalancbmk opt: 8096 inline - Number of call sites deleted, not inlined 62528 inline - Number of functions inlined llvm-ld: 217 inline - Number of allocas merged together 2158 inline - Number of functions inlined 471.omnetpp: 331 inline - Number of call sites deleted, not inlined 8981 inline - Number of functions inlined llvm-ld: 171 inline - Number of functions deleted because all callers found 629 inline - Number of functions inlined Deleting a call is much faster than inlining it, and is insensitive to the size of the callee. :) llvm-svn: 86975
OpenPOWER on IntegriCloud