Duncan Sands
9e9cf0ce31
Whitespace tweak.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45940 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-13 21:20:29 +00:00
Duncan Sands
a41d719803
Remove the assumption that byval has been applied to
...
a pointer to a struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45939 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-13 21:19:59 +00:00
Duncan Sands
421d1c93cc
Allow the byval attribute for pointers to any type with
...
a size, not just structs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45938 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-13 21:19:12 +00:00
Chris Lattner
ee2b7a4530
Fix PR1907, a nasty miscompilation because instcombine didn't
...
realize that ne & sgt was a signed comparison (it was only
looking at whether the left compare was signed).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45937 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-13 20:59:02 +00:00
Duncan Sands
e3a8830c1d
Small simplification.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45932 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-13 08:12:17 +00:00
Duncan Sands
e1e520f601
When turning a call to a bitcast function into a direct call,
...
if this becomes a varargs call then deal correctly with any
parameter attributes on the newly vararg call arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45931 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-13 08:02:44 +00:00
Chris Lattner
3f732807f3
improve cygwin compatibility, patch by Sam Bishop
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45917 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 22:54:07 +00:00
Chris Lattner
65844fbd84
clarify a note
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45914 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 18:58:46 +00:00
Evan Cheng
f4a5498ab4
Add hasByValArgument() to test if a call instruction has byval argument(s).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45913 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 18:57:32 +00:00
Chris Lattner
92938b7145
we don't have to make an explicit copy of a byval argument when
...
inlining a function if we know that the function does not write
to *any* memory. This implements test/Transforms/Inline/byval2.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45912 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 18:54:29 +00:00
Evan Cheng
7723ab3a51
Indirect call with byval parameter requires a cast first.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45911 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 18:53:07 +00:00
Duncan Sands
cfad1b4f78
Be more liberal in what parameter attributes are
...
allowed on the vararg arguments of a call.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45909 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 16:42:01 +00:00
Chris Lattner
120d053e3b
Allow clients to specify the inline threshold when creating
...
the inliner pass. Patch by Robert Zeh.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45903 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 06:49:13 +00:00
Chris Lattner
d3f6a8a8f0
Add support for NetBSD, patch by Krister Walfridsson!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45902 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 06:46:09 +00:00
Evan Cheng
8e5712b8bb
Code clean up.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45898 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 01:08:07 +00:00
Chris Lattner
144ad580fd
fix a wordo that gordon noticed :)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45896 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 00:53:16 +00:00
Chris Lattner
828bb6c978
Any x86 instruction that reads from an invariant location is invariant.
...
This allows us to sink things like:
cvtsi2sd 32(%esp), %xmm1
when reading from the argument area, for example.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45895 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 00:35:08 +00:00
Chris Lattner
aad193a7e9
implement support for sinking a load out the bottom of a block that
...
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 :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45894 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 00:17:41 +00:00
Duncan Sands
bfc5ae6df0
When DAE drops the varargs part of a function, ensure any
...
attributes on the vararg call arguments are also dropped.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45892 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 23:13:45 +00:00
Evan Cheng
3d79478671
More cbe byval fixes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45891 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 23:10:11 +00:00
Duncan Sands
623a389f62
Do not allow attributes beyond a function's last
...
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45887 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 22:36:48 +00:00
Chris Lattner
10603e0c84
Teach argpromote to ruthlessly hack small byval structs when it can
...
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)...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45886 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 22:31:41 +00:00
Duncan Sands
eb824709cb
If there are attributes on the varargs part of a
...
call, don't discard them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45884 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 21:23:39 +00:00
Scott Michel
497e888daf
More CellSPU refinements:
...
- 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.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45882 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 21:01:19 +00:00
Chris Lattner
e027efa218
Use smallptrset instead of std::set for efficiency.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45878 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 19:36:30 +00:00
Chris Lattner
170b1816b2
a byval argument is guaranteed to be valid to load.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45877 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 19:34:32 +00:00
Chris Lattner
40c14be5bc
Update this code to use eraseFromParent where possible. Compute
...
whether an argument is byval and pass into isSafeToPromoteArgument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45876 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 19:20:39 +00:00
Chris Lattner
f1577014dd
replace a loop with a constant time check.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45875 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 18:55:10 +00:00
Chris Lattner
6e8410abf1
another minor datastructure tweak.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45874 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 18:47:45 +00:00
Chris Lattner
a10145fdf6
start using smallvector to avoid vector heap thrashing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45873 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 18:43:58 +00:00
Chris Lattner
5080f4d991
rename MachineInstr::setInstrDescriptor -> setDesc
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45871 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 18:10:50 +00:00
Chris Lattner
f9b3f37abc
remove xchg and shift-reg-by-1 instructions, which are dead.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45870 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 18:00:50 +00:00
Chris Lattner
047ad94fc0
add a note, remove a done deed.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45869 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 18:00:13 +00:00
Arnold Schwaighofer
a51cf0f074
hrm - correct spelling.
...
Actually were not riding any arguments. Sadly there is no semantic spell checker that is going to safe you from such a mistake.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45868 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 17:10:15 +00:00
Arnold Schwaighofer
c8ab8cde43
Improve tail call optimized call's argument lowering. Before this
...
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45867 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 16:49:42 +00:00
Arnold Schwaighofer
719eb02255
Correct a copy and paste error.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45865 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 14:34:56 +00:00
Evan Cheng
588c6f8e6c
Some C backend ByVal parameter attribute support. Not yet complete.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45864 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 09:12:49 +00:00
Evan Cheng
90e9d4e013
Rename Int_CVTSI642SSr* to Int_CVTSI2SS64r* for naming consistency and remove unused instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45861 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 07:37:44 +00:00
Chris Lattner
a731c9fac9
more flags set right
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45860 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 07:18:17 +00:00
Chris Lattner
f77e037309
add some missing flags.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45859 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 06:59:07 +00:00
Chris Lattner
497b7e97c0
add some notes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45854 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 06:17:47 +00:00
Chris Lattner
c93adca358
When inlining a functino with a byval argument, make an explicit
...
copy of it in case the callee modifies the struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45853 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 06:09:30 +00:00
Evan Cheng
681d2b8266
A couple of obvious off-by-one bugs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45852 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 03:07:46 +00:00
Scott Michel
9de5d0dd42
More CellSPU refinement and progress:
...
- 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45851 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 02:53:15 +00:00
Evan Cheng
c37ab63df7
Allow parameter attributes on varargs function parameters.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45850 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 02:13:09 +00:00
Dale Johannesen
12591d70f6
Weak zeroes don't go in bss on Darwin.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45849 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 01:59:45 +00:00
Dale Johannesen
c7406ae773
Weak things initialized to 0 don't go in bss on Darwin.
...
Cosmetic changes to spacing to match gcc (some dejagnu
tests actually care).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45848 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 00:54:37 +00:00
Chris Lattner
a22edc82ca
Simplify the side effect stuff a bit more and make licm/sinking
...
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45843 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 23:08:24 +00:00
Chris Lattner
2445888208
Clamp down on sinking of lots of instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45841 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 22:35:15 +00:00
Chris Lattner
b38bec222c
IMPLICIT_USE and IMPLICIT_DEF are dead, remove them.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45838 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 19:27:54 +00:00
Chris Lattner
8372601521
add a note
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45837 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 18:25:41 +00:00
Duncan Sands
007f9847c4
Output sinl for a long double FSIN node, not sin.
...
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45833 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 10:28:30 +00:00
Evan Cheng
8480293f41
Only remat loads from immutable stack slots.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45831 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 08:24:38 +00:00
Evan Cheng
a07cec9e24
Simplify some code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45830 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 08:22:10 +00:00
Chris Lattner
ba7e756c22
Start inferring side effect information more aggressively, and fix many bugs in the
...
x86 backend where instructions were not marked maystore/mayload, and perf issues where
instructions were not marked neverHasSideEffects. It would be really nice if we could
write patterns for copy instructions.
I have audited all the x86 instructions down to MOVDQAmr. The flags on others and on
other targets are probably not right in all cases, but no clients currently use this
info that are enabled by default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45829 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 07:59:24 +00:00
Chris Lattner
36fe6d2f80
rename X86InstrX86-64.td -> X86Instr64bit.td
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45826 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 05:50:42 +00:00
Chris Lattner
b8f217fa7e
add SDNPSideEffect node property declaration
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45825 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 05:48:23 +00:00
Chris Lattner
dd41527a7d
remove explicit sets of 'neverHasSideEffects' that can now be
...
inferred from the instr patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45824 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 05:45:39 +00:00
Chris Lattner
9b37aaf04c
get def use info more correct.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45821 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 05:12:37 +00:00
Chris Lattner
8947dd539e
add SDNPMayLoad to the 'load' sdnode definition. This is enough to get all the x86
...
instructions (with patterns) that load memory marked, for example.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45818 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 04:44:32 +00:00
Chris Lattner
8794390406
verify that the frame index is immutable before remat'ing (still disabled)
...
or being side-effect free.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45816 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 04:16:31 +00:00
Owen Anderson
c95f075c43
Don't use LiveVariables::VarInfo::DefInst.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45815 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 03:12:54 +00:00
Evan Cheng
e70bb59840
Mark byval parameter stack objects mutable for now.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45813 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 02:24:25 +00:00
Dale Johannesen
038129dd58
Emit unused EH frames for weak definitions on Darwin,
...
because assembler/linker can't cope with weak absolutes.
PR 1880.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45811 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 02:03:30 +00:00
Owen Anderson
ddd060ffcf
Get rid of all uses of LiveVariables::VarInfo::DefInst in favor of the equivalent API from
...
MachineRegisterInfo. Once all clients are switched over, the former will be going away.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45805 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 01:36:43 +00:00
Owen Anderson
dc4d6558e4
Add more comments explaining the basics of how the decision of when to rename and when to insert
...
copies is made.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45799 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 00:47:01 +00:00
Evan Cheng
27a446afaf
Do not use the stack pointer directly, issue a copyfromreg instead. Otherwise we can end up with something like ADD32ri %esp, x which two-address pass won't like.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45798 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 00:37:26 +00:00
Owen Anderson
b199cbec2e
Get rid of the isKillInst predicate. LiveVariables already provides this information.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45797 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 00:33:11 +00:00
Chris Lattner
9c4428b217
Fix PR1845 and rdar://5676945. Generic vectors smaller
...
than hardware supported type will be scalarized, so we
can infer their alignment from that info.
We now codegen pr1845 into:
_boolVectorSelect:
lbz r2, 0(r3)
stb r2, -16(r1)
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45796 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 00:30:57 +00:00
Evan Cheng
dffbd837b8
Remove comments that do not correspond to anything after recent refactoring.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45792 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 00:09:10 +00:00
Owen Anderson
9c2efa8a8f
Copies need to be inserted before the first terminator, not at the end of the block.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45791 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 00:01:41 +00:00
Evan Cheng
19107563af
Special copy SUnit's do not have SDNode's.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45787 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-09 23:01:55 +00:00
Owen Anderson
ec1213fbbb
Clean up StrongPHIElimination a bit, and add some more comments to the internal structures. There's
...
still more work to do on this front.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45783 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-09 22:40:54 +00:00
Duncan Sands
f52e32aab0
Fix compile failures with g++-4.3.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45781 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-09 19:42:09 +00:00
Owen Anderson
864e3a3762
StrongPHIElim: Now with even fewer trivial bugs!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45775 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-09 10:41:39 +00:00
Owen Anderson
719fef648d
Fix an infinite recursion bug in InsertCopies.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45774 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-09 10:32:30 +00:00
Owen Anderson
cb7d949a19
Fix some simple bugs. StrongPHIElimination now does not crash on 164.gzip.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45773 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-09 06:19:05 +00:00
Chris Lattner
269f0595d6
add a testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45768 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-09 00:37:18 +00:00
Chris Lattner
f61b63ec5b
add a note
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45766 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-09 00:17:57 +00:00
Chris Lattner
07649d9265
Make load->store deletion a bit smarter. This allows us to compile this:
...
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45762 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08 23:08:06 +00:00
Owen Anderson
0c5714bb99
Rename registers that do not need copies.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45759 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08 21:54:52 +00:00
Duncan Sands
e51775dc5e
Use size_t to store Pos, avoid truncating value
...
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45746 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08 10:06:15 +00:00
Chris Lattner
f9d9e45225
Implement PR1795, an instcombine hack for forming GEPs with integer pointer arithmetic.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45745 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08 07:23:51 +00:00
Chris Lattner
fe39edde27
Finally implement correct ordered comparisons for PPC, even though
...
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45742 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08 06:46:30 +00:00
Owen Anderson
0d893b4038
Actually insert copies now!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45738 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08 05:16:15 +00:00
Evan Cheng
b353459d68
Minor fix to enable x86-64 pic jit (still fails for other reasons).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45734 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08 02:07:10 +00:00
Evan Cheng
b1a9aec515
Fix a x86-64 static codegen bug. This fixes a lot of x86-64 jit failures.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45733 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08 02:06:11 +00:00
Bill Wendling
750ec00436
Silence warning about loss of precision.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45731 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08 00:52:29 +00:00
Evan Cheng
325474e065
Only mark instructions that load a single value without extension as isSimpleLoad = 1.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45727 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 23:56:57 +00:00
Chris Lattner
f7c8db9ab5
add a new bit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45726 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 23:16:55 +00:00
Evan Cheng
9b44944d3d
Unbreak x86-64.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45725 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 23:08:23 +00:00
Chris Lattner
84a7c41251
add a note that is important for some fp apps.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45723 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 21:59:58 +00:00
Chris Lattner
b3041948eb
possible switch lowering improvement.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45720 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 21:38:14 +00:00
Owen Anderson
0b4825c38b
Oops, missed one.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45719 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 21:32:09 +00:00
Owen Anderson
9e549202a0
Make some predicates static.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45718 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 21:30:40 +00:00
Duncan Sands
6aae7a748e
I doubt the address of the Error string was intended
...
to be used for the force_interpreter parameter...
Spotted by gcc-4.2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45714 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 19:14:42 +00:00
Duncan Sands
9c5525f4fa
Add missing newline at EOF.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45712 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 19:13:36 +00:00
Duncan Sands
6c3470efdc
Small cleanup for handling of type/parameter attribute
...
incompatibility.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45704 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 17:16:06 +00:00
Duncan Sands
30d15751c8
Unbreak x86-32 darwin long double!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45703 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 16:36:38 +00:00
Duncan Sands
004a81dcc7
Fix long double support on x86-32 linux.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45701 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 13:44:22 +00:00