summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Unbreak tailcall opt in JIT.Evan Cheng2008-01-041-1/+2
| | | | llvm-svn: 45576
* X86 PIC JIT support fixes: encoding bugs, add lazy pointer stubs support.Evan Cheng2008-01-044-30/+118
| | | | llvm-svn: 45575
* 80-column violations.Bill Wendling2008-01-041-10/+14
| | | | llvm-svn: 45574
* Add that this preserves some analyses.Bill Wendling2008-01-041-1/+3
| | | | llvm-svn: 45573
* Move option to enable machine LICM into LLVMTargetMachine.cpp.Bill Wendling2008-01-042-13/+8
| | | | llvm-svn: 45572
* Call the parent's getAnalysisUsage.Bill Wendling2008-01-041-0/+1
| | | | llvm-svn: 45571
* Add a really quick hack at a machine code sinking pass, enabled with ↵Chris Lattner2008-01-042-0/+215
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --enable-sinking. It is missing validity checks, so it is known broken. However, it is powerful enough to compile this contrived code: void test1(int C, double A, double B, double *P) { double Tmp = A*A+B*B; *P = C ? Tmp : A; } into: _test1: movsd 8(%esp), %xmm0 cmpl $0, 4(%esp) je LBB1_2 # entry LBB1_1: # entry movsd 16(%esp), %xmm1 mulsd %xmm1, %xmm1 mulsd %xmm0, %xmm0 addsd %xmm1, %xmm0 LBB1_2: # entry movl 24(%esp), %eax movsd %xmm0, (%eax) ret instead of: _test1: movsd 16(%esp), %xmm0 mulsd %xmm0, %xmm0 movsd 8(%esp), %xmm1 movapd %xmm1, %xmm2 mulsd %xmm2, %xmm2 addsd %xmm0, %xmm2 cmpl $0, 4(%esp) je LBB1_2 # entry LBB1_1: # entry movapd %xmm2, %xmm1 LBB1_2: # entry movl 24(%esp), %eax movsd %xmm1, (%eax) ret woo. llvm-svn: 45570
* remove dead #includes and reorder the rest.Chris Lattner2008-01-041-10/+6
| | | | llvm-svn: 45569
* Fix PR1896Chris Lattner2008-01-041-1/+1
| | | | llvm-svn: 45568
* Correct order of parameters.Evan Cheng2008-01-041-2/+2
| | | | llvm-svn: 45562
* Remove symbols that don't exist, remove tabs, fix comment typoChris Lattner2008-01-031-17/+15
| | | | llvm-svn: 45553
* First steps in in X86 calling convention cleanup.Gordon Henriksen2008-01-031-121/+128
| | | | llvm-svn: 45536
* don't hoist FP additions into unconditional adds + selects. This Chris Lattner2008-01-031-0/+2
| | | | | | | could theoretically introduce a trap, but is also a performance issue. This speeds up ptrdist/ks by 8%. llvm-svn: 45533
* Fix PR1873, a problem finding stat-related symbols on linux, due toChris Lattner2008-01-031-9/+20
| | | | | | "libc_nonshared.a". Patch by Edwin Török! llvm-svn: 45532
* Trying that again.Gordon Henriksen2008-01-031-1/+0
| | | | llvm-svn: 45529
* Fix a compile error on Windows.Gordon Henriksen2008-01-031-0/+2
| | | | llvm-svn: 45528
* Change MachineRelocation::DoesntNeedFnStub to NeedStub. This fields will be usedEvan Cheng2008-01-034-52/+54
| | | | | | for non-function GV relocations that require function address stubs (e.g. Mac OS X in non-static mode). llvm-svn: 45527
* Remove the function attr cache for intrinsics. This does not maintain the Chris Lattner2008-01-031-7/+1
| | | | | | | refcount on these correctly, and can end up referring to deleted attributes. This fixes PR1881. llvm-svn: 45525
* Don't create a new ParamAttrsList (which copies the vector) just to Chris Lattner2008-01-031-6/+6
| | | | | | get a profile. llvm-svn: 45524
* move some code out of line, rearrange a bit.Chris Lattner2008-01-031-6/+10
| | | | llvm-svn: 45519
* Split param attr implementation out from Function.cpp into itsChris Lattner2008-01-023-222/+326
| | | | | | | own file. Don't #include ParameterAttributes.h into any major public header files: just move methods out of line as appropriate. llvm-svn: 45517
* add missing #includeChris Lattner2008-01-021-0/+1
| | | | llvm-svn: 45516
* X86 PIC JIT bug fix: relocations for constantpool and jumptable.Evan Cheng2008-01-021-7/+6
| | | | llvm-svn: 45515
* remove blob of #if'd out code.Chris Lattner2008-01-021-37/+0
| | | | llvm-svn: 45512
* Fix a build issue on cygwinChris Lattner2008-01-021-6/+3
| | | | llvm-svn: 45506
* Use the correct MachineRegisterInfo object.Bill Wendling2008-01-021-2/+1
| | | | llvm-svn: 45499
* Machine LICM will check that operands are defined outside of the loop. AlsoBill Wendling2008-01-022-40/+1
| | | | | | check that register isn't 0 before going further. llvm-svn: 45498
* Remove dead code.Bill Wendling2008-01-021-35/+0
| | | | llvm-svn: 45496
* darwin9 and above support aligned common symbols.Chris Lattner2008-01-023-12/+36
| | | | llvm-svn: 45494
* leopard and above support alignment for common symbols.Chris Lattner2008-01-023-11/+32
| | | | llvm-svn: 45493
* Use the new architecture to get the containing machine basic block for a machineBill Wendling2008-01-021-28/+28
| | | | | | | instruction. Also, use "splice" to move the new instruction instead of remove/insert (where it was leaking memory anyway). llvm-svn: 45492
* Don't be rude, emit debugging info where asked to.Nick Lewycky2008-01-021-5/+5
| | | | llvm-svn: 45485
* Move some more instruction creation methods from RegisterInfo into InstrInfo.Owen Anderson2008-01-0138-1198/+1276
| | | | llvm-svn: 45484
* Make MachineRegisterInfo::getVRegDef more efficient by aiming the keep the ↵Chris Lattner2008-01-011-4/+10
| | | | | | def of the vreg at the start of the list, so the list doesn't need to be traversed. llvm-svn: 45483
* switch the register iterator to act more like hte LLVM value iterator: ↵Chris Lattner2008-01-012-3/+17
| | | | | | | | | | | dereferencing it now returns the machineinstr of the use. To get the operand, use I.getOperand(). Add a new MachineRegisterInfo::replaceRegWith, which is basically like Value::replaceAllUsesWith. llvm-svn: 45482
* Adding C bindings for SwitchInst::addCase.Gordon Henriksen2008-01-011-0/+5
| | | | | | Patch by Bryan O'Sullivan! llvm-svn: 45481
* Add a trivial but handy function to efficiently return the machine Chris Lattner2008-01-011-0/+15
| | | | | | instruction that defines the specified vreg. Crazy. llvm-svn: 45480
* Implement automatically updated def/use lists for all MachineInstr register Chris Lattner2008-01-013-8/+331
| | | | | | | operands. The lists are currently kept in MachineRegisterInfo, but it does not yet provide an iterator interface to them. llvm-svn: 45477
* Fix a bug in my previous patch: refer to the impl not the pure virtual ↵Chris Lattner2008-01-012-2/+2
| | | | | | version. It's unclear why gcc would ever compile this... llvm-svn: 45476
* Fix a problem where lib/Target/TargetInstrInfo.h would include and useChris Lattner2008-01-0118-60/+74
| | | | | | | | | | a header file from libcodegen. This violates a layering order: codegen depends on target, not the other way around. The fix to this is to split TII into two classes, TII and TargetInstrInfoImpl, which defines stuff that depends on libcodegen. It is defined in libcodegen, where the base is not. llvm-svn: 45475
* Fix PR1833 - eh.exception and eh.selector return twoDuncan Sands2007-12-311-6/+28
| | | | | | | | values, which means doing extra legalization work. It would be easier to get this kind of thing right if there was some documentation... llvm-svn: 45472
* Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of theOwen Anderson2007-12-3129-261/+312
| | | | | | Machine-level API cleanup instigated by Chris. llvm-svn: 45470
* properly encapsulate the parent field of MBB and MI with get/set accessors.Chris Lattner2007-12-313-31/+35
| | | | llvm-svn: 45469
* update a couple of references to SSARegMap.Chris Lattner2007-12-312-3/+3
| | | | llvm-svn: 45468
* Rename SSARegMap -> MachineRegisterInfo in keeping with the idea Chris Lattner2007-12-3145-396/+413
| | | | | | | | | | | | | | that "machine" classes are used to represent the current state of the code being compiled. Given this expanded name, we can start moving other stuff into it. For now, move the UsedPhysRegs and LiveIn/LoveOuts vectors from MachineFunction into it. Update all the clients to match. This also reduces some needless #includes, such as MachineModuleInfo from MachineFunction. llvm-svn: 45467
* Add new shorter predicates for testing machine operands for various types: Chris Lattner2007-12-3039-179/+172
| | | | | | | | | | | | e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on switching everything over, so new clients should just start using the shorter names. Remove old long accessors, switching everything over to use the short accessor: getMachineBasicBlock() -> getMBB(), getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc. llvm-svn: 45464
* More cleanups for MachineOperand:Chris Lattner2007-12-308-139/+131
| | | | | | | | | | - Eliminate the static "print" method for operands, moving it into MachineOperand::print. - Change various set* methods for register flags to take a bool for the value to set it to. Remove unset* methods. - Group methods more logically by operand flavor in MachineOperand.h llvm-svn: 45461
* MachineOperand:Chris Lattner2007-12-301-57/+38
| | | | | | | | | | | | | | | | | - Add getParent() accessors. - Move SubReg out of the AuxInfo union, to make way for future changes. - Remove the getImmedValue/setImmedValue methods. - in some MachineOperand::Create* methods, stop initializing fields that are dead. MachineInstr: - Delete one copy of the MachineInstr printing code, now there is only one dump format and one copy of the code. - Make MachineOperand use the parent field to get info about preg register names if no target info is otherwise available. - Move def/use/kill/dead flag printing to the machineoperand printer, so they are always printed for an operand. llvm-svn: 45460
* fix typo duncan noticed!Chris Lattner2007-12-301-1/+1
| | | | llvm-svn: 45459
* simpilfy some register printing code.Chris Lattner2007-12-301-16/+6
| | | | llvm-svn: 45458
OpenPOWER on IntegriCloud