| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
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
|
|
|
|
|
|
| |
Move definition of 'trap' sdnode up from x86 instrinfo to targetselectiondag.td.
llvm-svn: 46017
|
|
|
|
|
|
| |
MachineRegisterInfo instead.
llvm-svn: 46016
|
|
|
|
| |
llvm-svn: 46015
|
|
|
|
| |
llvm-svn: 46014
|
|
|
|
| |
llvm-svn: 46012
|
|
|
|
| |
llvm-svn: 46009
|
|
|
|
| |
llvm-svn: 46002
|
|
|
|
|
|
| |
as well as PPC codegen
llvm-svn: 46001
|
|
|
|
|
|
| |
unused parameters of CCStructAssign and add size and alignment requirement info.
llvm-svn: 45997
|
|
|
|
| |
llvm-svn: 45996
|
|
|
|
| |
llvm-svn: 45995
|
|
|
|
| |
llvm-svn: 45974
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 45972
|
|
|
|
| |
llvm-svn: 45971
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 45950
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 45948
|
|
|
|
|
|
| |
difficult to understand the invariants.
llvm-svn: 45947
|
|
|
|
|
|
| |
easier to show that its safe. No functionality change.
llvm-svn: 45946
|
|
|
|
|
|
|
|
|
|
| |
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
|