summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Turns out AnalyzeBranch can modify the mbb being analyzed. This is a nastyEvan Cheng2009-02-091-6/+6
| | | | | | | | suprise to some callers, e.g. register coalescer. For now, add an parameter that tells AnalyzeBranch whether it's safe to modify the mbb. A better solution is out there, but I don't have time to deal with it right now. llvm-svn: 64124
* Fix PR3486. Fix a bug in code that manually patch physical register live ↵Evan Cheng2009-02-082-16/+34
| | | | | | interval after its sub-register is coalesced with a virtual register. llvm-svn: 64082
* Strengthen the previous check.Evan Cheng2009-02-081-4/+5
| | | | llvm-svn: 64076
* r64073 commit message is lost. Here it is:Evan Cheng2009-02-081-3/+4
| | | | | | | | | Right now if the coalesced copy def is dead and its src is a kill, and that there are now other uses within the live range, the coalescer would mark the def of the source register as dead. But it should also check if there are other kills which means the value has other uses not in the live range. llvm-svn: 64075
* (no commit message)Evan Cheng2009-02-081-3/+10
| | | | llvm-svn: 64073
* Revert r63999. It was breaking self-hosting builds.Bill Wendling2009-02-081-2/+8
| | | | llvm-svn: 64062
* Add missing break statements, fixing PR3503.Chris Lattner2009-02-071-8/+11
| | | | llvm-svn: 64040
* Use getDebugLoc forwarder instead of getNode()->getDebugLoc.Dale Johannesen2009-02-076-15/+15
| | | | | | No functional change. llvm-svn: 64026
* Constify TargetInstrInfo::EmitInstrWithCustomInserter, allowingDan Gohman2009-02-071-1/+1
| | | | | | ScheduleDAG's TLI member to use const. llvm-svn: 64018
* Make SDNode constructors take a DebugLoc always.Dale Johannesen2009-02-071-36/+4
| | | | | | | | | Adjust derived classes to pass UnknownLoc where a DebugLoc does not make sense. Pick one of DebugLoc and non-DebugLoc variants to survive for all such classes. llvm-svn: 64000
* Enable machine sinking pass in non-fast mode.Evan Cheng2009-02-071-8/+2
| | | | llvm-svn: 63999
* Remove now-unused constructors.Dale Johannesen2009-02-071-21/+0
| | | | llvm-svn: 63995
* Don't sink the instruction if TargetRegisterInfo::isSafeToMoveRegClassDefs ↵Evan Cheng2009-02-071-0/+4
| | | | | | doesn't think it's safe. This works around PR1911. llvm-svn: 63994
* Get rid of the last non-DebugLoc versions of getNode!Dale Johannesen2009-02-075-23/+13
| | | | | | | | | | | | Many targets build placeholder nodes for special operands, e.g. GlobalBaseReg on X86 and PPC for the PIC base. There's no sensible way to associate debug info with these. I've left them built with getNode calls with explicit DebugLoc::getUnknownLoc operands. I'm not too happy about this but don't see a good improvement; I considered adding a getPseudoOperand or something, but it seems to me that'll just make it harder to read. llvm-svn: 63992
* Remove more non-DebugLoc getNode variants. UseDale Johannesen2009-02-068-121/+93
| | | | | | | | getCALLSEQ_{END,START} to permit passing no DebugLoc there. UNDEF doesn't logically have DebugLoc; add getUNDEF to encapsulate this. llvm-svn: 63978
* And one more file.Dale Johannesen2009-02-061-3/+4
| | | | llvm-svn: 63971
* Remove more non-DebugLoc versions of getNode.Dale Johannesen2009-02-065-29/+9
| | | | llvm-svn: 63969
* Clear out the CurDebugLoc info when doing a 'clear' on the SDL object.Bill Wendling2009-02-061-0/+1
| | | | llvm-svn: 63967
* Eliminate remaining non-DebugLoc version of getTargetNode.Dale Johannesen2009-02-061-39/+0
| | | | llvm-svn: 63951
* Rename SelectionDAGISel::Schedule toDan Gohman2009-02-061-11/+8
| | | | | | | | | SelectionDAGISel::CreateScheduler, and make it just create the scheduler. Leave running the scheduler to the higher-level code. This makes the higher-level code a little more explicit and easier to follow, and will help enable some future refactoring. llvm-svn: 63944
* Delete an unused member function.Dan Gohman2009-02-061-2/+0
| | | | llvm-svn: 63941
* Move getPointerRegClass from TargetInstrInfo to TargetRegisterInfo.Evan Cheng2009-02-062-13/+10
| | | | llvm-svn: 63938
* Move ScheduleDAGSDNodes.h to be a private header. Front-endsDan Gohman2009-02-068-8/+169
| | | | | | | that previously included this header should include SchedulerRegistry.h instead. llvm-svn: 63937
* Add TargetInstrInfo::isSafeToMoveRegisterClassDefs. It returns true if it's ↵Evan Cheng2009-02-061-1/+4
| | | | | | safe to move an instruction which defines a value in the register class. Replace pre-splitting specific IgnoreRegisterClassBarriers with this new hook. llvm-svn: 63936
* Move ScheduleDAGInstrs.h to be a private header. Front-endsDan Gohman2009-02-063-2/+84
| | | | | | | | that used this header to select a scheduling policy should use SchedulerRegistry.h instead (llvm-gcc and clang were updated a while ago). llvm-svn: 63934
* get rid of some non-DebugLoc getTargetNode variants.Dale Johannesen2009-02-061-41/+0
| | | | llvm-svn: 63909
* Get rid of one more non-DebugLoc getNode andDale Johannesen2009-02-061-11/+5
| | | | | | | its corresponding getTargetNode. Lots of caller changes. llvm-svn: 63904
* isAsCheapAsMove instructions can have register src operands. Check if they ↵Evan Cheng2009-02-051-0/+3
| | | | | | | | are really re-materializable. This fixes sse.expandfft and sse.stepfft. llvm-svn: 63890
* Remove a non-DebugLoc version of getNode.Dale Johannesen2009-02-051-6/+0
| | | | llvm-svn: 63889
* Remove 3 non-DebugLoc variants of getNode.Dale Johannesen2009-02-051-14/+0
| | | | llvm-svn: 63886
* Machine LICM increases register pressure and it almost always increase code ↵Evan Cheng2009-02-051-0/+4
| | | | | | size. For now, disable it for optimizing for size. llvm-svn: 63856
* Turn on machine LICM in non-fast mode.Evan Cheng2009-02-051-5/+1
| | | | llvm-svn: 63855
* Teach machine licm to CSE hoisted instructions.Evan Cheng2009-02-051-23/+88
| | | | llvm-svn: 63854
* ReMaterializeTrivialDef need to trim the live interval to the last kill if ↵Evan Cheng2009-02-052-79/+108
| | | | | | the copy kills the source register. This fixes uint64tof64.ll after ARM::MOVi is marked as isAsCheapAsAMove. llvm-svn: 63853
* if we have a large GEP offset on a 32-bit or other target, makeChris Lattner2009-02-051-0/+6
| | | | | | | sure to print the value properly sext'd to the right pointer size. This fixes PR3481. llvm-svn: 63843
* Pre-alloc splitting needs to be more careful to avoid inserting spills/restoresOwen Anderson2009-02-051-22/+72
| | | | | | | between call frame setup/restore points. Unfortunately, this regresses code size a bit, but at least it's correct now! llvm-svn: 63837
* Fix a bug where we were not emitting a cvt rnd sat node for convertingMon P Wang2009-02-051-2/+4
| | | | | | between a unsigned integer and signed integer. llvm-svn: 63831
* Reapply 63765. Patches for clang and llvm-gcc to follow.Dale Johannesen2009-02-051-0/+9
| | | | llvm-svn: 63812
* Get rid of 3 non-DebugLoc getNode variants.Dale Johannesen2009-02-051-17/+0
| | | | llvm-svn: 63808
* Remove non-DebugLoc versions of getMergeValues, ZeroExtendInReg.Dale Johannesen2009-02-054-31/+17
| | | | llvm-svn: 63800
* Remove non-DebugLoc forms of CopyToReg and CopyFromReg.Dale Johannesen2009-02-041-1/+1
| | | | | | Adjust callers. llvm-svn: 63789
* Reverting 63765. This broke the build of both clangDale Johannesen2009-02-041-9/+0
| | | | | | and llvm-gcc. llvm-svn: 63786
* 80 column rule.Stuart Hastings2009-02-041-1/+2
| | | | llvm-svn: 63768
* Remove non-DebugLoc versions of getLoad and getStore.Dale Johannesen2009-02-042-87/+3
| | | | | | Adjust the many callers of those versions. llvm-svn: 63767
* New feature: add support for target intrinsics being defined in theNate Begeman2009-02-041-0/+9
| | | | | | | | | target directories themselves. This also means that VMCore no longer needs to know about every target's list of intrinsics. Future work will include converting the PowerPC target to this interface as an example implementation. llvm-svn: 63765
* Avoids generating a legalization assert for the case where a vector type is ↵Mon P Wang2009-02-041-2/+10
| | | | | | | | | | legal but when legalizing the operation, we split the vector type and generate a library call whose type needs to be promoted. For example, X86 with SSE on but MMX off, a divide v2i64 will be scalarized to 2 calls to a library using i64. llvm-svn: 63760
* Skip over zero registers.Evan Cheng2009-02-041-0/+2
| | | | llvm-svn: 63748
* Since I'm obliged to work with a development OS that currently doesn'tStuart Hastings2009-02-041-9/+56
| | | | | | | | | | support GraphViz, I've been using the foo->dump() facility. This patch is a minor rewrite to the SelectionDAG dump() stuff to make it a little more helpful. The existing foo->dump() functionality does not change; this patch adds foo->dumpr(). All of this is only useful when running LLVM under a debugger. llvm-svn: 63736
* Don't call isInvariantLoad twice.Evan Cheng2009-02-041-9/+2
| | | | llvm-svn: 63729
* Don't bother hoisting out a "cheap" instruction if all of its uses are PHIs. ↵Evan Cheng2009-02-041-10/+55
| | | | | | LICM "cheap" instructions are not particularly beneficial to start with. This will just end up making the copies harder to coalesce. llvm-svn: 63728
OpenPOWER on IntegriCloud