summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Add support for NetBSD, patch by Krister Walfridsson!Chris Lattner2008-01-121-1/+1
| | | | llvm-svn: 45902
* Add -disable-lto optimization.Evan Cheng2008-01-121-0/+2
| | | | llvm-svn: 45900
* this actually does pass with 4.0Chris Lattner2008-01-121-1/+0
| | | | llvm-svn: 45899
* Code clean up.Evan Cheng2008-01-121-23/+20
| | | | llvm-svn: 45898
* ByVal arguments are passed on stack. Make sure to allocate a slot using size ↵Evan Cheng2008-01-121-7/+20
| | | | | | and alignment information on the parameter attribute. llvm-svn: 45897
* fix a wordo that gordon noticed :)Chris Lattner2008-01-121-1/+1
| | | | llvm-svn: 45896
* Any x86 instruction that reads from an invariant location is invariant.Chris Lattner2008-01-121-43/+24
| | | | | | | | This allows us to sink things like: cvtsi2sd 32(%esp), %xmm1 when reading from the argument area, for example. llvm-svn: 45895
* 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
* remove some incorrect classof's.Chris Lattner2008-01-111-2/+0
| | | | llvm-svn: 45893
* When DAE drops the varargs part of a function, ensure anyDuncan Sands2008-01-112-3/+19
| | | | | | attributes on the vararg call arguments are also dropped. llvm-svn: 45892
* More cbe byval fixes.Evan Cheng2008-01-111-13/+25
| | | | llvm-svn: 45891
* llvm-g++ 4.0 has completely different code for this warning,Chris Lattner2008-01-111-0/+1
| | | | | | just xfail it. llvm-svn: 45890
* new testcaseChris Lattner2008-01-111-0/+6
| | | | llvm-svn: 45888
* Do not allow attributes beyond a function's lastDuncan Sands2008-01-113-7/+38
| | | | | | | | | | | | parameter, even if it is a varargs function. Do allow attributes on the varargs part of a call, but not beyond the last argument. Only allow selected attributes to be on the varargs part of a call (currently only 'byval' is allowed). The reasoning here is that most attributes, eg inreg, simply make no sense here. llvm-svn: 45887
* Teach argpromote to ruthlessly hack small byval structs when it canChris Lattner2008-01-112-70/+174
| | | | | | | | | | | | | | | | | | | | | | get away with it, which exposes opportunities to eliminate the memory objects entirely. For example, we now compile byval.ll to: define internal void @f1(i32 %b.0, i64 %b.1) { entry: %tmp2 = add i32 %b.0, 1 ; <i32> [#uses=0] ret void } define i32 @main() nounwind { entry: call void @f1( i32 1, i64 2 ) ret i32 0 } This seems like it would trigger a lot for code that passes around small structs (e.g. SDOperand's or _Complex)... llvm-svn: 45886
* Two occurrences on one line count as one...Duncan Sands2008-01-111-2/+2
| | | | llvm-svn: 45885
* If there are attributes on the varargs part of aDuncan Sands2008-01-112-2/+26
| | | | | | call, don't discard them. llvm-svn: 45884
* More CellSPU refinements:Scott Michel2008-01-115-18/+199
| | | | | | | | | | | | - struct_2.ll: Completely unaligned load/store testing - call_indirect.ll, struct_1.ll: Add test lines to exercise X-form [$reg($reg)] addressing At this point, loads and stores should be under control (he says in an optimistic tone of voice.) llvm-svn: 45882
* Disable for now.Dale Johannesen2008-01-111-0/+3
| | | | llvm-svn: 45881
* Use smallptrset instead of std::set for efficiency.Chris Lattner2008-01-111-2/+3
| | | | llvm-svn: 45878
* a byval argument is guaranteed to be valid to load.Chris Lattner2008-01-111-4/+19
| | | | llvm-svn: 45877
* Update this code to use eraseFromParent where possible. ComputeChris Lattner2008-01-111-26/+27
| | | | | | whether an argument is byval and pass into isSafeToPromoteArgument. llvm-svn: 45876
* replace a loop with a constant time check.Chris Lattner2008-01-111-3/+2
| | | | llvm-svn: 45875
* another minor datastructure tweak.Chris Lattner2008-01-111-1/+1
| | | | llvm-svn: 45874
* start using smallvector to avoid vector heap thrashing.Chris Lattner2008-01-111-6/+7
| | | | llvm-svn: 45873
* add operator==/!= to smallvector.Chris Lattner2008-01-111-0/+10
| | | | llvm-svn: 45872
* rename MachineInstr::setInstrDescriptor -> setDescChris Lattner2008-01-1110-28/+28
| | | | llvm-svn: 45871
* remove xchg and shift-reg-by-1 instructions, which are dead.Chris Lattner2008-01-113-71/+6
| | | | llvm-svn: 45870
* add a note, remove a done deed.Chris Lattner2008-01-111-18/+3
| | | | llvm-svn: 45869
* hrm - correct spelling.Arnold Schwaighofer2008-01-111-6/+6
| | | | | | Actually were not riding any arguments. Sadly there is no semantic spell checker that is going to safe you from such a mistake. llvm-svn: 45868
* Improve tail call optimized call's argument lowering. Before thisArnold Schwaighofer2008-01-112-91/+79
| | | | | | | | | | | | | | | | commit all arguments where moved to the stack slot where they would reside on a normal function call before the lowering to the tail call stack slot. This was done to prevent arguments overwriting each other. Now only arguments sourcing from a FORMAL_ARGUMENTS node or a CopyFromReg node with virtual register (could also be a caller's argument) are lowered indirectly. --This line, and those below, will be ignored-- M X86/X86ISelLowering.cpp M X86/README.txt llvm-svn: 45867
* Correct a copy and paste error.Arnold Schwaighofer2008-01-111-1/+1
| | | | llvm-svn: 45865
* Some C backend ByVal parameter attribute support. Not yet complete.Evan Cheng2008-01-111-3/+30
| | | | llvm-svn: 45864
* Rename Int_CVTSI642SSr* to Int_CVTSI2SS64r* for naming consistency and ↵Evan Cheng2008-01-111-26/+16
| | | | | | remove unused instructions. llvm-svn: 45861
* more flags set rightChris Lattner2008-01-113-15/+24
| | | | llvm-svn: 45860
* add some missing flags.Chris Lattner2008-01-111-4/+16
| | | | llvm-svn: 45859
* don't include loopinfo.h from this file.Chris Lattner2008-01-111-1/+3
| | | | llvm-svn: 45858
* Move typedef of loop to top of the file where it is more obvious.Chris Lattner2008-01-111-2/+3
| | | | llvm-svn: 45857
* Fix 80 col violationsChris Lattner2008-01-111-29/+35
| | | | llvm-svn: 45856
* document the byval parameter attribute.Chris Lattner2008-01-111-0/+14
| | | | llvm-svn: 45855
* add some notes.Chris Lattner2008-01-111-0/+18
| | | | llvm-svn: 45854
* When inlining a functino with a byval argument, make an explicit Chris Lattner2008-01-112-6/+85
| | | | | | copy of it in case the callee modifies the struct. llvm-svn: 45853
* A couple of obvious off-by-one bugs.Evan Cheng2008-01-111-4/+7
| | | | llvm-svn: 45852
* More CellSPU refinement and progress:Scott Michel2008-01-1132-395/+901
| | | | | | | | | | | | | | | | | | | | - Cleaned up custom load/store logic, common code is now shared [see note below], cleaned up address modes - More test cases: various intrinsics, structure element access (load/store test), updated target data strings, indirect function calls. Note: This patch contains a refactoring of the LoadSDNode and StoreSDNode structures: they now share a common base class, LSBaseSDNode, that provides an interface to their common functionality. There is some hackery to access the proper operand depending on the derived class; otherwise, to do a proper job would require finding and rearranging the SDOperands sent to StoreSDNode's constructor. The current refactor errs on the side of being conservatively and backwardly compatible while providing functionality that reduces redundant code for targets where loads and stores are custom-lowered. llvm-svn: 45851
* Allow parameter attributes on varargs function parameters.Evan Cheng2008-01-111-4/+3
| | | | llvm-svn: 45850
* Weak zeroes don't go in bss on Darwin.Dale Johannesen2008-01-111-3/+4
| | | | llvm-svn: 45849
* Weak things initialized to 0 don't go in bss on Darwin.Dale Johannesen2008-01-114-19/+19
| | | | | | | Cosmetic changes to spacing to match gcc (some dejagnu tests actually care). llvm-svn: 45848
* Simplify the side effect stuff a bit more and make licm/sinkingChris Lattner2008-01-107-77/+74
| | | | | | | | | | | | | | | | 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
* IMPLICIT_USE and IMPLICIT_DEF are dead, remove them.Chris Lattner2008-01-102-7/+0
| | | | llvm-svn: 45838
OpenPOWER on IntegriCloud