| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
with a size, like byval.
llvm-svn: 46207
|
|
|
|
|
|
| |
check the callee also if it is known.
llvm-svn: 46206
|
|
|
|
| |
llvm-svn: 46204
|
|
|
|
|
|
| |
Fixes PR1935.
llvm-svn: 46203
|
|
|
|
| |
llvm-svn: 46200
|
|
|
|
| |
llvm-svn: 46199
|
|
|
|
| |
llvm-svn: 46198
|
|
|
|
|
|
| |
to complain on x86-64 (gcc 4.1). Use ~0U instead.
llvm-svn: 46197
|
|
|
|
| |
llvm-svn: 46195
|
|
|
|
|
|
|
|
|
| |
parameters, since otherwise it won't be passed in
the right register. With this change trampolines
work on x86-64 (thanks to Luke Guest for providing
access to an x86-64 box).
llvm-svn: 46192
|
|
|
|
| |
llvm-svn: 46189
|
|
|
|
| |
llvm-svn: 46188
|
|
|
|
|
|
|
|
|
|
| |
'FoldingSetNodeImpl' (previously 'FoldingSetNodeID' was a typedef of
'FoldingSetNodeImpl::NodeID').
Why? Clients can now easily forward declare 'FoldingSetNodeID' without having
to include FoldingSet.h.
llvm-svn: 46187
|
|
|
|
| |
llvm-svn: 46174
|
|
|
|
| |
llvm-svn: 46171
|
|
|
|
| |
llvm-svn: 46165
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
_test:
fctiwz f0, f1
stfiwx f0, 0, r4
blr
instead of:
_test:
fctiwz f0, f1
stfd f0, -8(r1)
nop
nop
lwz r2, -4(r1)
stb r2, 0(r4)
blr
The former is not correct (stores 4 bytes, not 1).
llvm-svn: 46161
|
|
|
|
| |
llvm-svn: 46159
|
|
|
|
|
|
|
|
| |
as weak globals rather than commons. While not wrong,
this change tickled a latent bug in Darwin's strip,
so revert it for now as a workaround.
llvm-svn: 46147
|
|
|
|
|
|
|
|
| |
as weak globals rather than commons. While not wrong,
this change tickled a latent bug in Darwin's strip,
so revert it for now as a workaround.
llvm-svn: 46144
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixed CellSPU's A-form (local store) address mode, so that all globals,
externals, constant pool and jump table symbols are now wrapped within
a SPUISD::AFormAddr pseudo-instruction. This now identifies all local
store memory addresses, although it requires a bit of legerdemain during
instruction selection to properly select loads to and stores from local
store, properly generating "LQA" instructions.
Also added mul_ops.ll test harness for exercising integer multiplication.
llvm-svn: 46142
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Legalize now always promotes truncstore of i1 to i8.
2. Remove patterns and gunk related to truncstore i1 from targets.
3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
X86 currently doesn't support truncstore of any of its integer types.
6. Add legalize support for truncstores with invalid value input types.
7. Add a dag combine transform to turn store(truncate) into truncstore when
safe.
The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:
_foo:
fldt 20(%esp)
fldt 4(%esp)
faddp %st(1)
movl 36(%esp), %eax
fstps (%eax)
ret
instead of:
_foo:
subl $4, %esp
fldt 24(%esp)
fldt 8(%esp)
faddp %st(1)
fstps (%esp)
movl 40(%esp), %eax
movss (%esp), %xmm0
movss %xmm0, (%eax)
addl $4, %esp
ret
llvm-svn: 46140
|
|
|
|
| |
llvm-svn: 46126
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and switch various codegen pieces and the X86 backend over
to using it.
* Add some comments to SelectionDAGNodes.h
* Introduce a second argument to FP_ROUND, which indicates
whether the FP_ROUND changes the value of its input. If
not it is safe to xform things like fp_extend(fp_round(x)) -> x.
llvm-svn: 46125
|
|
|
|
| |
llvm-svn: 46113
|
|
|
|
|
|
|
|
|
|
|
| |
spilled
and the spill is its kill. However, if the local allocator has determined the
register has not been modified (possible when its value was reloaded), it would
not issue a restore. In that case, mark the last use of the virtual register as
kill.
llvm-svn: 46111
|
|
|
|
|
|
|
| |
promoted functions. This is important for varargs calls in
particular. Thanks to duncan for providing a great testcase.
llvm-svn: 46108
|
|
|
|
| |
llvm-svn: 46104
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's not safe to use the two value CombineTo variant to combine away a dead load.
e.g.
v1, chain2 = load chain1, loc
v2, chain3 = load chain2, loc
v3 = add v2, c
Now we replace use of v1 with undef, use of chain2 with chain1.
ReplaceAllUsesWith() will iterate through uses of the first load and update operands:
v1, chain2 = load chain1, loc
v2, chain3 = load chain1, loc
v3 = add v2, c
Now the second load is the same as the first load, SelectionDAG cse will ensure
the use of second load is replaced with the first load.
v1, chain2 = load chain1, loc
v3 = add v1, c
Then v1 is replaced with undef and bad things happen.
llvm-svn: 46099
|
|
|
|
|
|
|
|
|
| |
it should work, but I have no machine to test
it on. Committed because it will at least
cause no harm, and maybe someone can test it
for me!
llvm-svn: 46098
|
|
|
|
| |
llvm-svn: 46090
|
|
|
|
|
|
| |
associated function is so marked.
llvm-svn: 46088
|
|
|
|
|
|
| |
simplification. This fixes automotive-basicmath on PPC.
llvm-svn: 46072
|
|
|
|
|
|
| |
pattern to use EmitStackConvert now.
llvm-svn: 46066
|
|
|
|
|
|
| |
it to allow it to emit different load and store kinds.
llvm-svn: 46065
|
|
|
|
|
|
| |
instead of inlining its body.
llvm-svn: 46062
|
|
|
|
|
|
|
|
|
| |
into the ANY_EXTEND/ZERO_EXTEND/SIGN_EXTEND code to simplify it.
Unmerge the code for FP_ROUND and FP_EXTEND from each other to
make each one simpler.
llvm-svn: 46061
|
|
|
|
| |
llvm-svn: 46058
|
|
|
|
|
|
| |
some code. No functionality change.
llvm-svn: 46055
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
make the 'fp return in ST(0)' optimization smart enough to
look through token factor nodes. THis allows us to compile
testcases like CodeGen/X86/fp-stack-retcopy.ll into:
_carg:
subl $12, %esp
call L_foo$stub
fstpl (%esp)
fldl (%esp)
addl $12, %esp
ret
instead of:
_carg:
subl $28, %esp
call L_foo$stub
fstpl 16(%esp)
movsd 16(%esp), %xmm0
movsd %xmm0, 8(%esp)
fldl 8(%esp)
addl $28, %esp
ret
Still not optimal, but much better and this is a trivial patch. Fixing
the rest requires invasive surgery that is is not llvm 2.2 material.
llvm-svn: 46054
|
|
|
|
|
|
| |
look through token factor
llvm-svn: 46053
|
|
|
|
| |
llvm-svn: 46052
|
|
|
|
|
|
|
| |
a public SDOperand::reachesChainWithoutSideEffects method. No
functionality change.
llvm-svn: 46050
|
|
|
|
| |
llvm-svn: 46045
|
|
|
|
| |
llvm-svn: 46030
|
|
|
|
|
|
|
|
|
| |
ShortenEHDataFor64Bits as a not-very-accurate
abstraction to cover all the changes in DwarfWriter.
Some cosmetic changes to Darwin assembly code for
gcc testsuite compatibility.
llvm-svn: 46029
|
|
|
|
|
|
| |
executed as frequently in performance sensitive code.
llvm-svn: 46027
|
|
|
|
| |
llvm-svn: 46026
|
|
|
|
| |
llvm-svn: 46019
|
|
|
|
|
|
|
| |
it's a function pointer) not MVT::Other. This fixes builtin_trap
lowering on ppc, alpha, ia64
llvm-svn: 46018
|