summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* rename SDTRet -> SDTNone.Chris Lattner2008-01-157-13/+11
| | | | | | Move definition of 'trap' sdnode up from x86 instrinfo to targetselectiondag.td. llvm-svn: 46017
* Remove DefInst from LiveVariables::VarInfo. Use the facilities on ↵Owen Anderson2008-01-154-38/+20
| | | | | | MachineRegisterInfo instead. llvm-svn: 46016
* no need to expand ISD::TRAP to X86ISD::TRAP, just match ISD::TRAP.Chris Lattner2008-01-153-17/+6
| | | | llvm-svn: 46015
* Add support for targets that have a legal ISD::TRAP.Chris Lattner2008-01-152-4/+12
| | | | llvm-svn: 46014
* Fix JIT encoding of trap/ud2 instructionAnton Korobeynikov2008-01-151-2/+1
| | | | llvm-svn: 46012
* Reformatted. It was confusing the other way. No functionality change.Bill Wendling2008-01-151-2/+3
| | | | llvm-svn: 46009
* 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-156-2/+49
| | | | | | as well as PPC codegen llvm-svn: 46001
* Rename CCIfStruct to CCIfByVal and CCStructAssign to CCPassByVal. Remove ↵Evan Cheng2008-01-152-10/+11
| | | | | | unused parameters of CCStructAssign and add size and alignment requirement info. llvm-svn: 45997
* Both x86-32 and x86-64 handle byval parameter attributes.Evan Cheng2008-01-151-4/+9
| | | | llvm-svn: 45996
* ByVal stack slot alignment should be at least as large as pointer ABI alignment.Evan Cheng2008-01-151-1/+3
| | | | llvm-svn: 45995
* Simplify CallInst::hasByValArgument using a new method.Duncan Sands2008-01-141-4/+1
| | | | llvm-svn: 45974
* I noticed that the trampoline straightening transformation couldDuncan Sands2008-01-142-21/+35
| | | | | | | | | drop attributes on varargs call arguments. Also, it could generate invalid IR if the transformed call already had the 'nest' attribute somewhere (this can never happen for code coming from llvm-gcc, but it's a theoretical possibility). Fix both problems. llvm-svn: 45973
* 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
* Improve the FP stackifier to decide all on its own whether Chris Lattner2008-01-141-23/+30
| | | | | | | | | an instruction kills a register or not. This is cheap and easy to do now that instructions record this on their flags, and this eliminates the second pass of LiveVariables from the x86 backend. This speeds up a release llc by ~2.5%. llvm-svn: 45955
* Simplify code.Evan Cheng2008-01-141-4/+1
| | | | llvm-svn: 45950
* Fix the miscompilation of MiBench/consumer-lame that was exposed by Evan'sChris Lattner2008-01-141-59/+97
| | | | | | | byval work. This miscompilation is due to the program indexing an array out of range and us doing a transformation that broke this. llvm-svn: 45949
* The isNotSuitableForSRA property is now dead, don't compute it.Chris Lattner2008-01-141-45/+1
| | | | llvm-svn: 45948
* Change SRAGlobal to not depend on isNotSuitableForSRA, which makes it very Chris Lattner2008-01-141-2/+75
| | | | | | difficult to understand the invariants. llvm-svn: 45947
* Make the 'shrink global to bool' optimization more self contained, and thus Chris Lattner2008-01-141-10/+25
| | | | | | easier to show that its safe. No functionality change. llvm-svn: 45946
* Turn a memcpy from a double* into a load/store of double instead ofChris Lattner2008-01-141-9/+46
| | | | | | | | | | a load/store of i64. The later prevents promotion/scalarrepl of the source and dest in many cases. This fixes the 300% performance regression of the byval stuff on stepanov_v1p2. llvm-svn: 45945
* factor memcpy/memmove simplification out to its own SimplifyMemTransfer Chris Lattner2008-01-131-35/+42
| | | | | | method, no functionality change. llvm-svn: 45944
* simplify some code. If we can infer alignment for source and dest that are Chris Lattner2008-01-131-21/+22
| | | | | | | greater than memcpy alignment, and if we lower to load/store, use the best alignment info we have. llvm-svn: 45943
* simplify some code by adding a InsertBitCastBefore method,Chris Lattner2008-01-131-30/+25
| | | | | | make memmove->memcpy conversion a bit simpler. llvm-svn: 45942
* Whitespace tweak.Duncan Sands2008-01-131-1/+1
| | | | llvm-svn: 45940
* Remove the assumption that byval has been applied toDuncan Sands2008-01-131-12/+12
| | | | | | a pointer to a struct. llvm-svn: 45939
* Allow the byval attribute for pointers to any type withDuncan Sands2008-01-131-2/+2
| | | | | | a size, not just structs. llvm-svn: 45938
* Fix PR1907, a nasty miscompilation because instcombine didn'tChris Lattner2008-01-131-2/+8
| | | | | | | realize that ne & sgt was a signed comparison (it was only looking at whether the left compare was signed). llvm-svn: 45937
* Small simplification.Duncan Sands2008-01-131-4/+1
| | | | llvm-svn: 45932
* When turning a call to a bitcast function into a direct call,Duncan Sands2008-01-131-12/+17
| | | | | | | if this becomes a varargs call then deal correctly with any parameter attributes on the newly vararg call arguments. llvm-svn: 45931
* improve cygwin compatibility, patch by Sam BishopChris Lattner2008-01-121-1/+1
| | | | llvm-svn: 45917
* clarify a noteChris Lattner2008-01-121-1/+9
| | | | llvm-svn: 45914
* Add hasByValArgument() to test if a call instruction has byval argument(s).Evan Cheng2008-01-121-0/+11
| | | | llvm-svn: 45913
* we don't have to make an explicit copy of a byval argument when Chris Lattner2008-01-121-4/+6
| | | | | | | inlining a function if we know that the function does not write to *any* memory. This implements test/Transforms/Inline/byval2.ll llvm-svn: 45912
* Indirect call with byval parameter requires a cast first.Evan Cheng2008-01-121-6/+17
| | | | llvm-svn: 45911
* Be more liberal in what parameter attributes areDuncan Sands2008-01-121-31/+45
| | | | | | allowed on the vararg arguments of a call. llvm-svn: 45909
* Allow clients to specify the inline threshold when creatingChris Lattner2008-01-122-0/+8
| | | | | | the inliner pass. Patch by Robert Zeh. llvm-svn: 45903
* Add support for NetBSD, patch by Krister Walfridsson!Chris Lattner2008-01-121-1/+1
| | | | llvm-svn: 45902
* Code clean up.Evan Cheng2008-01-121-23/+20
| | | | llvm-svn: 45898
* 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
* When DAE drops the varargs part of a function, ensure anyDuncan Sands2008-01-111-2/+15
| | | | | | 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
* Do not allow attributes beyond a function's lastDuncan Sands2008-01-111-7/+25
| | | | | | | | | | | | 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-111-70/+150
| | | | | | | | | | | | | | | | | | | | | | 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
* If there are attributes on the varargs part of aDuncan Sands2008-01-111-2/+16
| | | | | | call, don't discard them. llvm-svn: 45884
* More CellSPU refinements:Scott Michel2008-01-112-15/+36
| | | | | | | | | | | | - 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
* Use smallptrset instead of std::set for efficiency.Chris Lattner2008-01-111-2/+3
| | | | llvm-svn: 45878
OpenPOWER on IntegriCloud