summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* simplify a bunch of code by using SelectionDAG::CreateStackTemporary Chris Lattner2008-01-161-28/+6
| | | | | | instead of inlining its body. llvm-svn: 46062
* Change legalizeop of FP_ROUND and FP_EXTEND to not fall throughChris Lattner2008-01-161-32/+55
| | | | | | | | | into the ANY_EXTEND/ZERO_EXTEND/SIGN_EXTEND code to simplify it. Unmerge the code for FP_ROUND and FP_EXTEND from each other to make each one simpler. llvm-svn: 46061
* Factor the ReachesChainWithoutSideEffects out of dag combiner into Chris Lattner2008-01-162-28/+32
| | | | | | | a public SDOperand::reachesChainWithoutSideEffects method. No functionality change. llvm-svn: 46050
* Fix and enable EH for x86-64 Darwin. AddsDale Johannesen2008-01-151-8/+12
| | | | | | | | | ShortenEHDataFor64Bits as a not-very-accurate abstraction to cover all the changes in DwarfWriter. Some cosmetic changes to Darwin assembly code for gcc testsuite compatibility. llvm-svn: 46029
* Move some calls to getVRegDef higher in the callgraph, so they don't get ↵Owen Anderson2008-01-151-11/+11
| | | | | | executed as frequently in performance sensitive code. llvm-svn: 46027
* The type of the 'abort' node should be pointer type (becauseChris Lattner2008-01-151-1/+2
| | | | | | | it's a function pointer) not MVT::Other. This fixes builtin_trap lowering on ppc, alpha, ia64 llvm-svn: 46018
* Remove DefInst from LiveVariables::VarInfo. Use the facilities on ↵Owen Anderson2008-01-153-35/+20
| | | | | | MachineRegisterInfo instead. llvm-svn: 46016
* Add support for targets that have a legal ISD::TRAP.Chris Lattner2008-01-152-4/+12
| | | | llvm-svn: 46014
* Oops. Forgot to commit this.Evan Cheng2008-01-151-5/+12
| | | | llvm-svn: 46002
* For PR1839: add initial support for __builtin_trap. llvm-gcc part is missedAnton Korobeynikov2008-01-153-1/+26
| | | | | | as well as PPC codegen llvm-svn: 46001
* ByVal stack slot alignment should be at least as large as pointer ABI alignment.Evan Cheng2008-01-151-1/+3
| | | | llvm-svn: 45995
* don't create the post-ra scheduler unless it is enabled.Chris Lattner2008-01-142-17/+8
| | | | llvm-svn: 45972
* remove dead #includeChris Lattner2008-01-141-1/+0
| | | | llvm-svn: 45971
* Remove the assumption that byval has been applied toDuncan Sands2008-01-131-12/+12
| | | | | | a pointer to a struct. llvm-svn: 45939
* implement support for sinking a load out the bottom of a block thatChris Lattner2008-01-121-16/+23
| | | | | | | | | has no stores between the load and the end of block. This works great and sinks hundreds of stores, but we can't turn it on because machineinstrs don't have volatility information and we don't want to sink volatile stores :( llvm-svn: 45894
* Simplify the side effect stuff a bit more and make licm/sinkingChris Lattner2008-01-102-16/+35
| | | | | | | | | | | | | | | | both work right according to the new flags. This removes the TII::isReallySideEffectFree predicate, and adds TII::isInvariantLoad. It removes NeverHasSideEffects+MayHaveSideEffects and adds UnmodeledSideEffects as machine instr flags. Now the clients can decide everything they need. I think isRematerializable can be implemented in terms of the flags we have now, though I will let others tackle that. llvm-svn: 45843
* Clamp down on sinking of lots of instructions.Chris Lattner2008-01-101-0/+9
| | | | llvm-svn: 45841
* Output sinl for a long double FSIN node, not sin.Duncan Sands2008-01-102-55/+61
| | | | | | | | Likewise fix up a bunch of other libcalls. While there I remove NEG_F32 and NEG_F64 since they are not used anywhere. This fixes 9 Ada ACATS failures. llvm-svn: 45833
* Only remat loads from immutable stack slots.Evan Cheng2008-01-101-2/+2
| | | | llvm-svn: 45831
* Simplify some code.Evan Cheng2008-01-101-8/+2
| | | | llvm-svn: 45830
* Don't use LiveVariables::VarInfo::DefInst.Owen Anderson2008-01-101-1/+8
| | | | llvm-svn: 45815
* Emit unused EH frames for weak definitions on Darwin,Dale Johannesen2008-01-101-8/+15
| | | | | | | because assembler/linker can't cope with weak absolutes. PR 1880. llvm-svn: 45811
* Get rid of all uses of LiveVariables::VarInfo::DefInst in favor of the ↵Owen Anderson2008-01-101-58/+66
| | | | | | | | equivalent API from MachineRegisterInfo. Once all clients are switched over, the former will be going away. llvm-svn: 45805
* Add more comments explaining the basics of how the decision of when to ↵Owen Anderson2008-01-101-7/+37
| | | | | | | | rename and when to insert copies is made. llvm-svn: 45799
* Get rid of the isKillInst predicate. LiveVariables already provides this ↵Owen Anderson2008-01-101-14/+10
| | | | | | information. llvm-svn: 45797
* Copies need to be inserted before the first terminator, not at the end of ↵Owen Anderson2008-01-101-2/+2
| | | | | | the block. llvm-svn: 45791
* Special copy SUnit's do not have SDNode's.Evan Cheng2008-01-091-2/+2
| | | | llvm-svn: 45787
* Clean up StrongPHIElimination a bit, and add some more comments to the ↵Owen Anderson2008-01-091-6/+46
| | | | | | | | internal structures. There's still more work to do on this front. llvm-svn: 45783
* StrongPHIElim: Now with even fewer trivial bugs!Owen Anderson2008-01-091-2/+4
| | | | llvm-svn: 45775
* Fix an infinite recursion bug in InsertCopies.Owen Anderson2008-01-091-4/+9
| | | | llvm-svn: 45774
* Fix some simple bugs. StrongPHIElimination now does not crash on 164.gzip.Owen Anderson2008-01-091-3/+3
| | | | llvm-svn: 45773
* Make load->store deletion a bit smarter. This allows us to compile this:Chris Lattner2008-01-081-3/+33
| | | | | | | | | | | | | | | | | | | | | | void test(long long *P) { *P ^= 1; } into just: _test: movl 4(%esp), %eax xorl $1, (%eax) ret instead of code like this: _test: movl 4(%esp), %ecx xorl $1, (%ecx) movl 4(%ecx), %edx movl %edx, 4(%ecx) ret llvm-svn: 45762
* Rename registers that do not need copies.Owen Anderson2008-01-081-3/+19
| | | | llvm-svn: 45759
* Actually insert copies now!Owen Anderson2008-01-081-6/+29
| | | | llvm-svn: 45738
* Oops, missed one.Owen Anderson2008-01-071-1/+1
| | | | llvm-svn: 45719
* Make some predicates static.Owen Anderson2008-01-071-3/+3
| | | | llvm-svn: 45718
* Pruning includes.Gordon Henriksen2008-01-072-14/+0
| | | | llvm-svn: 45700
* remove #includageChris Lattner2008-01-073-5/+2
| | | | llvm-svn: 45697
* rename TargetInstrDescriptor -> TargetInstrDesc.Chris Lattner2008-01-0719-111/+112
| | | | | | | Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695
* simplify some code.Chris Lattner2008-01-071-10/+13
| | | | llvm-svn: 45693
* Rename all the M_* flags to be namespace qualified enums, and switch Chris Lattner2008-01-073-3/+3
| | | | | | | | all clients over to using predicates instead of these flags directly. These are now private values which are only to be used to statically initialize the tables. llvm-svn: 45692
* add more and significantly better comments to the rest of the machineinstrChris Lattner2008-01-072-2/+2
| | | | | | | flags that can be set. Add predicates for the ones lacking it, and switch some clients over to using the predicates instead of Flags directly. llvm-svn: 45690
* simplify some code using new predicatesChris Lattner2008-01-072-24/+21
| | | | llvm-svn: 45689
* rename hasVariableOperands() -> isVariadic(). Add some comments.Chris Lattner2008-01-072-5/+4
| | | | | | | Evan, please review the comments I added to getNumDefs to make sure that they are accurate, thx. llvm-svn: 45687
* Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptorChris Lattner2008-01-078-44/+44
| | | | llvm-svn: 45680
* remove some uses of MachineOpCode, move getSchedClass Chris Lattner2008-01-071-2/+3
| | | | | | into TargetInstrDescriptor from TargetInstrInfo. llvm-svn: 45678
* Add predicates methods to TargetOperandInfo, and switch all clients Chris Lattner2008-01-073-7/+7
| | | | | | | over to using them, instead of diddling Flags directly. Change the various flags from const variables to enums. llvm-svn: 45677
* Setting GlobalDirective in TargetAsmInfo by default rather thanGordon Henriksen2008-01-071-0/+177
| | | | | | | providing a misleading facility. It's used once in the MIPS backend and hardcoded as "\t.globl\t" everywhere else. llvm-svn: 45676
* Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflectsChris Lattner2008-01-0715-68/+57
| | | | | | | | | | | | | | | 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
* Update CodeGen for MRegisterInfo --> TargetInstrInfo changes.Owen Anderson2008-01-075-12/+14
| | | | llvm-svn: 45673
OpenPOWER on IntegriCloud