summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* add a testcase Chris Lattner2008-01-092-10/+20
| | | | llvm-svn: 45768
* add a noteChris Lattner2008-01-091-0/+21
| | | | llvm-svn: 45766
* 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
* Use size_t to store Pos, avoid truncating valueDuncan Sands2008-01-082-2/+2
| | | | | | | | on 64-bit builds. Analysis and original patch by Török Edwin. Code audit found another place with the same problem, also fixed here. llvm-svn: 45746
* Implement PR1795, an instcombine hack for forming GEPs with integer pointer ↵Chris Lattner2008-01-081-3/+53
| | | | | | arithmetic. llvm-svn: 45745
* Finally implement correct ordered comparisons for PPC, even thoughChris Lattner2008-01-082-24/+72
| | | | | | | | the code generated is not wonderful. This turns a miscompilation into a code quality bug (noted in the ppc readme). This fixes PR642, which is over 2 years old (!). Nate, please review this. llvm-svn: 45742
* Actually insert copies now!Owen Anderson2008-01-081-6/+29
| | | | llvm-svn: 45738
* Minor fix to enable x86-64 pic jit (still fails for other reasons).Evan Cheng2008-01-081-2/+3
| | | | llvm-svn: 45734
* Fix a x86-64 static codegen bug. This fixes a lot of x86-64 jit failures.Evan Cheng2008-01-081-1/+4
| | | | llvm-svn: 45733
* Silence warning about loss of precision.Bill Wendling2008-01-081-1/+1
| | | | llvm-svn: 45731
* Only mark instructions that load a single value without extension as ↵Evan Cheng2008-01-074-14/+12
| | | | | | isSimpleLoad = 1. llvm-svn: 45727
* add a new bit.Chris Lattner2008-01-071-1/+2
| | | | llvm-svn: 45726
* Unbreak x86-64.Evan Cheng2008-01-071-4/+3
| | | | llvm-svn: 45725
* add a note that is important for some fp apps.Chris Lattner2008-01-071-0/+21
| | | | llvm-svn: 45723
* possible switch lowering improvement.Chris Lattner2008-01-071-0/+5
| | | | llvm-svn: 45720
* 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
* I doubt the address of the Error string was intendedDuncan Sands2008-01-071-1/+2
| | | | | | | to be used for the force_interpreter parameter... Spotted by gcc-4.2. llvm-svn: 45714
* Add missing newline at EOF.Duncan Sands2008-01-071-1/+1
| | | | llvm-svn: 45712
* Small cleanup for handling of type/parameter attributeDuncan Sands2008-01-074-21/+26
| | | | | | incompatibility. llvm-svn: 45704
* Unbreak x86-32 darwin long double!Duncan Sands2008-01-071-3/+2
| | | | llvm-svn: 45703
* Fix long double support on x86-32 linux.Duncan Sands2008-01-071-1/+1
| | | | llvm-svn: 45701
* Pruning includes.Gordon Henriksen2008-01-072-14/+0
| | | | llvm-svn: 45700
* Operand 1 should be a register. We don't care if it's a preg, vreg, or 0.Bill Wendling2008-01-071-13/+9
| | | | llvm-svn: 45699
* add a noteChris Lattner2008-01-071-0/+7
| | | | llvm-svn: 45698
* remove #includageChris Lattner2008-01-073-5/+2
| | | | llvm-svn: 45697
* rename TargetInstrDescriptor -> TargetInstrDesc.Chris Lattner2008-01-0736-195/+193
| | | | | | | 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-074-4/+4
| | | | | | | | 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
* use predicate.Chris Lattner2008-01-071-1/+1
| | | | llvm-svn: 45691
* 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-073-7/+5
| | | | | | | Evan, please review the comments I added to getNumDefs to make sure that they are accurate, thx. llvm-svn: 45687
* remove a dead field.Chris Lattner2008-01-071-1/+0
| | | | llvm-svn: 45685
* no need to explicitly clear these fields.Chris Lattner2008-01-072-2/+0
| | | | llvm-svn: 45683
* Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptorChris Lattner2008-01-0717-67/+66
| | | | llvm-svn: 45680
* remove MachineOpCode typedef.Chris Lattner2008-01-077-8/+8
| | | | llvm-svn: 45679
* 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-074-11/+11
| | | | | | | 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
* Deleting an empty file. Thanks, /usr/bin/patch!Gordon Henriksen2008-01-071-0/+0
| | | | llvm-svn: 45675
* Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflectsChris Lattner2008-01-0729-178/+105
| | | | | | | | | | | | | | | 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
* Move even more functionality from MRegisterInfo into TargetInstrInfo.Owen Anderson2008-01-0728-1578/+1545
| | | | | | Some day I'll get it all moved over... llvm-svn: 45672
* Ammending r45669 with a missing file.Gordon Henriksen2008-01-071-4/+23
| | | | llvm-svn: 45671
* With this patch, the LowerGC transformation becomes theGordon Henriksen2008-01-072-350/+441
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ShadowStackCollector, which additionally has reduced overhead with no sacrifice in portability. Considering a function @fun with 8 loop-local roots, ShadowStackCollector introduces the following overhead (x86): ; shadowstack prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl $___gc_fun, 20(%esp) movl $0, 24(%esp) movl $0, 28(%esp) movl $0, 32(%esp) movl $0, 36(%esp) movl $0, 40(%esp) movl $0, 44(%esp) movl $0, 48(%esp) movl $0, 52(%esp) movl %ecx, 16(%esp) leal 16(%esp), %ecx movl %ecx, (%eax) ; shadowstack loop overhead (none) ; shadowstack epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; shadowstack metadata .align 3 ___gc_fun: # __gc_fun .long 8 .space 4 In comparison to LowerGC: ; lowergc prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl %ecx, 48(%esp) movl $8, 52(%esp) movl $0, 60(%esp) movl $0, 56(%esp) movl $0, 68(%esp) movl $0, 64(%esp) movl $0, 76(%esp) movl $0, 72(%esp) movl $0, 84(%esp) movl $0, 80(%esp) movl $0, 92(%esp) movl $0, 88(%esp) movl $0, 100(%esp) movl $0, 96(%esp) movl $0, 108(%esp) movl $0, 104(%esp) movl $0, 116(%esp) movl $0, 112(%esp) ; lowergc loop overhead leal 44(%esp), %eax movl %eax, 56(%esp) leal 40(%esp), %eax movl %eax, 64(%esp) leal 36(%esp), %eax movl %eax, 72(%esp) leal 32(%esp), %eax movl %eax, 80(%esp) leal 28(%esp), %eax movl %eax, 88(%esp) leal 24(%esp), %eax movl %eax, 96(%esp) leal 20(%esp), %eax movl %eax, 104(%esp) leal 16(%esp), %eax movl %eax, 112(%esp) ; lowergc epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; lowergc metadata (none) llvm-svn: 45670
* Enabling the target-independent garbage collection infrastructure by hooking itGordon Henriksen2008-01-075-10/+64
| | | | | | | | | up to the various compiler pipelines. This doesn't actually add support for any GC algorithms, which means it temporarily breaks a few tests. To be fixed shortly. llvm-svn: 45669
OpenPOWER on IntegriCloud