Chris Lattner
cb62477ec2
add some missing flags.
...
llvm-svn: 45859
2008-01-11 06:59:07 +00:00
Chris Lattner
08a33a998a
add some notes.
...
llvm-svn: 45854
2008-01-11 06:17:47 +00:00
Chris Lattner
bf51fecdc4
When inlining a functino with a byval argument, make an explicit
...
copy of it in case the callee modifies the struct.
llvm-svn: 45853
2008-01-11 06:09:30 +00:00
Evan Cheng
18c4155e7d
A couple of obvious off-by-one bugs.
...
llvm-svn: 45852
2008-01-11 03:07:46 +00:00
Scott Michel
1e9496e4d4
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.
llvm-svn: 45851
2008-01-11 02:53:15 +00:00
Evan Cheng
63753b7be7
Allow parameter attributes on varargs function parameters.
...
llvm-svn: 45850
2008-01-11 02:13:09 +00:00
Dale Johannesen
83852e3451
Weak zeroes don't go in bss on Darwin.
...
llvm-svn: 45849
2008-01-11 01:59:45 +00:00
Dale Johannesen
31afe330e4
Weak things initialized to 0 don't go in bss on Darwin.
...
Cosmetic changes to spacing to match gcc (some dejagnu
tests actually care).
llvm-svn: 45848
2008-01-11 00:54:37 +00:00
Chris Lattner
bfffa4f21e
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.
llvm-svn: 45843
2008-01-10 23:08:24 +00:00
Chris Lattner
e5b817779c
Clamp down on sinking of lots of instructions.
...
llvm-svn: 45841
2008-01-10 22:35:15 +00:00
Chris Lattner
48c54909dc
IMPLICIT_USE and IMPLICIT_DEF are dead, remove them.
...
llvm-svn: 45838
2008-01-10 19:27:54 +00:00
Chris Lattner
3c2a517080
add a note
...
llvm-svn: 45837
2008-01-10 18:25:41 +00:00
Duncan Sands
2c89976416
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.
llvm-svn: 45833
2008-01-10 10:28:30 +00:00
Evan Cheng
444d24972f
Only remat loads from immutable stack slots.
...
llvm-svn: 45831
2008-01-10 08:24:38 +00:00
Evan Cheng
6e03db7604
Simplify some code.
...
llvm-svn: 45830
2008-01-10 08:22:10 +00:00
Chris Lattner
9d7971791b
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.
llvm-svn: 45829
2008-01-10 07:59:24 +00:00
Chris Lattner
7ceba534ba
rename X86InstrX86-64.td -> X86Instr64bit.td
...
llvm-svn: 45826
2008-01-10 05:50:42 +00:00
Chris Lattner
dee5700386
add SDNPSideEffect node property declaration
...
llvm-svn: 45825
2008-01-10 05:48:23 +00:00
Chris Lattner
6ad01a9965
remove explicit sets of 'neverHasSideEffects' that can now be
...
inferred from the instr patterns.
llvm-svn: 45824
2008-01-10 05:45:39 +00:00
Chris Lattner
9b4f2b2316
get def use info more correct.
...
llvm-svn: 45821
2008-01-10 05:12:37 +00:00
Chris Lattner
3aa2fc1b5c
add SDNPMayLoad to the 'load' sdnode definition. This is enough to get all the x86
...
instructions (with patterns) that load memory marked, for example.
llvm-svn: 45818
2008-01-10 04:44:32 +00:00
Chris Lattner
8e486a6b25
verify that the frame index is immutable before remat'ing (still disabled)
...
or being side-effect free.
llvm-svn: 45816
2008-01-10 04:16:31 +00:00
Owen Anderson
59c3242247
Don't use LiveVariables::VarInfo::DefInst.
...
llvm-svn: 45815
2008-01-10 03:12:54 +00:00
Evan Cheng
8846740401
Mark byval parameter stack objects mutable for now.
...
llvm-svn: 45813
2008-01-10 02:24:25 +00:00
Dale Johannesen
fdd4b3846f
Emit unused EH frames for weak definitions on Darwin,
...
because assembler/linker can't cope with weak absolutes.
PR 1880.
llvm-svn: 45811
2008-01-10 02:03:30 +00:00
Owen Anderson
a8f32828c8
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.
llvm-svn: 45805
2008-01-10 01:36:43 +00:00
Owen Anderson
e2b710013f
Add more comments explaining the basics of how the decision of when to rename and when to insert
...
copies is made.
llvm-svn: 45799
2008-01-10 00:47:01 +00:00
Evan Cheng
f6fd56d085
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.
...
llvm-svn: 45798
2008-01-10 00:37:26 +00:00
Owen Anderson
a0e5b9a317
Get rid of the isKillInst predicate. LiveVariables already provides this information.
...
llvm-svn: 45797
2008-01-10 00:33:11 +00:00
Chris Lattner
b02074514e
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
llvm-svn: 45796
2008-01-10 00:30:57 +00:00
Evan Cheng
7581a2a634
Remove comments that do not correspond to anything after recent refactoring.
...
llvm-svn: 45792
2008-01-10 00:09:10 +00:00
Owen Anderson
b5be87349c
Copies need to be inserted before the first terminator, not at the end of the block.
...
llvm-svn: 45791
2008-01-10 00:01:41 +00:00
Evan Cheng
ba0214a6cb
Special copy SUnit's do not have SDNode's.
...
llvm-svn: 45787
2008-01-09 23:01:55 +00:00
Owen Anderson
62bb891e23
Clean up StrongPHIElimination a bit, and add some more comments to the internal structures. There's
...
still more work to do on this front.
llvm-svn: 45783
2008-01-09 22:40:54 +00:00
Duncan Sands
e97a9a373a
Fix compile failures with g++-4.3.
...
llvm-svn: 45781
2008-01-09 19:42:09 +00:00
Owen Anderson
9555739636
StrongPHIElim: Now with even fewer trivial bugs!
...
llvm-svn: 45775
2008-01-09 10:41:39 +00:00
Owen Anderson
c937ae34a5
Fix an infinite recursion bug in InsertCopies.
...
llvm-svn: 45774
2008-01-09 10:32:30 +00:00
Owen Anderson
01e1f23391
Fix some simple bugs. StrongPHIElimination now does not crash on 164.gzip.
...
llvm-svn: 45773
2008-01-09 06:19:05 +00:00
Chris Lattner
c465555fe6
add a testcase
...
llvm-svn: 45768
2008-01-09 00:37:18 +00:00
Chris Lattner
4253eeaeb3
add a note
...
llvm-svn: 45766
2008-01-09 00:17:57 +00:00
Chris Lattner
c93ad7d569
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
llvm-svn: 45762
2008-01-08 23:08:06 +00:00
Owen Anderson
3d5485728a
Rename registers that do not need copies.
...
llvm-svn: 45759
2008-01-08 21:54:52 +00:00
Duncan Sands
6f28b87039
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.
llvm-svn: 45746
2008-01-08 10:06:15 +00:00
Chris Lattner
67f581b344
Implement PR1795, an instcombine hack for forming GEPs with integer pointer arithmetic.
...
llvm-svn: 45745
2008-01-08 07:23:51 +00:00
Chris Lattner
cafc567fb7
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.
llvm-svn: 45742
2008-01-08 06:46:30 +00:00
Owen Anderson
23abe71f4d
Actually insert copies now!
...
llvm-svn: 45738
2008-01-08 05:16:15 +00:00
Evan Cheng
e7fd8ad117
Minor fix to enable x86-64 pic jit (still fails for other reasons).
...
llvm-svn: 45734
2008-01-08 02:07:10 +00:00
Evan Cheng
165d39b8e4
Fix a x86-64 static codegen bug. This fixes a lot of x86-64 jit failures.
...
llvm-svn: 45733
2008-01-08 02:06:11 +00:00
Bill Wendling
e859abc363
Silence warning about loss of precision.
...
llvm-svn: 45731
2008-01-08 00:52:29 +00:00
Evan Cheng
9de4f35e9f
Only mark instructions that load a single value without extension as isSimpleLoad = 1.
...
llvm-svn: 45727
2008-01-07 23:56:57 +00:00