| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
Make it so. (This patch is in LowerCall_Darwin, which seems
to be used by SVR4 code as well; since that doesn't belong here,
I haven't worried about this case.)
llvm-svn: 98077
|
| |
|
|
|
|
| |
to an add or a sub.
llvm-svn: 98059
|
| |
|
|
| |
llvm-svn: 98057
|
| |
|
|
|
|
| |
as LCSSA no longer transforms such uses.
llvm-svn: 98033
|
| |
|
|
|
|
|
|
|
| |
This patch updates LLVMDebugVersion to 8.
Debug info descriptors encoded using LLVMDebugVersion 7 is supported.
Corresponding llvmgcc and clang FE commits are required.
llvm-svn: 98020
|
| |
|
|
|
|
| |
MCize it.
llvm-svn: 98010
|
| |
|
|
|
|
|
|
|
| |
available, the only thing this affects is that we produce
.set in one case we didn't before, which shouldn't harm
anything. Make EmitSectionOffset call EmitDifference
instead of duplicating it.
llvm-svn: 98005
|
| |
|
|
|
|
|
|
| |
immediate instructions cannot set the condition codes, so they do not have
the extra cc_out operand. We hit an assertion during tail duplication
because the instruction being duplicated had more operands that expected.
llvm-svn: 98001
|
| |
|
|
| |
llvm-svn: 98000
|
| |
|
|
|
|
| |
for the encoding and is not the same as vmptrld.
llvm-svn: 97992
|
| |
|
|
| |
llvm-svn: 97991
|
| |
|
|
| |
llvm-svn: 97984
|
| |
|
|
| |
llvm-svn: 97982
|
| |
|
|
|
|
| |
sibcall.ll.
llvm-svn: 97980
|
| |
|
|
|
|
| |
some other way when it comes to be necessary.
llvm-svn: 97972
|
| |
|
|
| |
llvm-svn: 97891
|
| |
|
|
|
|
| |
Patch by John Tytgat!
llvm-svn: 97886
|
| |
|
|
|
|
|
|
| |
otherwise msp430-as will silently miscompile the code (TI's assembler report an error though).
This fixes PR6349
llvm-svn: 97877
|
| |
|
|
|
|
|
|
| |
out the remainder of the calls that we should lower in some way and
move the tests to the new correct directory. Fix up tests that are now
optimized more than they were before by -instcombine.
llvm-svn: 97875
|
| |
|
|
| |
llvm-svn: 97869
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Log:
Transform @llvm.objectsize to integer if the argument is a result of malloc of known size.
Modified:
llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
llvm/trunk/test/Transforms/InstCombine/objsize.ll
It appears to be causing swb and nightly test failures.
llvm-svn: 97866
|
| |
|
|
|
|
| |
of known size.
llvm-svn: 97860
|
| |
|
|
| |
llvm-svn: 97858
|
| |
|
|
| |
llvm-svn: 97852
|
| |
|
|
|
|
|
|
|
| |
is a workaround for <rdar://problem/7672401/> (which I filed).
This let's us build Wine on Darwin, and it gets the Qt build there a little bit
further (so Doug says).
llvm-svn: 97845
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CALL ... %RAX<imp-def>
... [not using %RAX]
%EAX = ..., %RAX<imp-use, kill>
RET %EAX<imp-use,kill>
Now we do this:
CALL ... %RAX<imp-def, dead>
... [not using %RAX]
%EAX = ...
RET %EAX<imp-use,kill>
By not artificially keeping %RAX alive, we lower register pressure a bit.
The correct number of instructions for 2008-08-05-SpillerBug.ll is obviously
55, anybody can see that. Sheesh.
llvm-svn: 97838
|
| |
|
|
|
|
| |
post-ra scheduler has run. Disable the verifier checks that late in the game.
llvm-svn: 97837
|
| |
|
|
| |
llvm-svn: 97836
|
| |
|
|
|
|
| |
>= memset / memcpy / memmove size.
llvm-svn: 97828
|
| |
|
|
|
|
| |
integer.
llvm-svn: 97827
|
| |
|
|
| |
llvm-svn: 97814
|
| |
|
|
|
|
| |
from different addr spaces.
llvm-svn: 97813
|
| |
|
|
|
|
|
|
|
|
|
| |
The MicroBlaze backend was generating stack layouts that did not
conform correctly to the ABI. This update generates stack layouts
which are closer to what GCC does.
Variable arguments support was added as well but the stack layout
for varargs has not been finalized.
llvm-svn: 97807
|
| |
|
|
|
|
|
|
|
|
|
| |
parts of the cmp|cmp and cmp&cmp folding logic wasn't prepared for vectors
(unrelated to the bug but noticed while in the code) and the code was
*definitely* not safe to use by the (cast icmp)|(cast icmp) handling logic
that I added in r95855. Fix all this up by changing the various routines
to more consistently use IRBuilder and not pass in the I which had the wrong
type.
llvm-svn: 97801
|
| |
|
|
| |
llvm-svn: 97799
|
| |
|
|
|
|
| |
by or.ll
llvm-svn: 97798
|
| |
|
|
|
|
| |
itself passed as a pointer, then it's obviously not safe to do a tail call.
llvm-svn: 97797
|
| |
|
|
|
|
|
| |
in a very specific use pattern embodied in the carefully
reduced testcase.
llvm-svn: 97794
|
| |
|
|
|
|
|
|
|
|
|
| |
node which has a flag. That flag in turn was used by an
already-selected adde which turned into an ADC32ri8 which
used a selected load which was chained to the load we
folded. This flag use caused us to form a cycle. Fix
this by not ignoring chains in IsLegalToFold even in
cases where the isel thinks it can.
llvm-svn: 97791
|
| |
|
|
| |
llvm-svn: 97790
|
| |
|
|
|
|
| |
fully understand.
llvm-svn: 97782
|
| |
|
|
| |
llvm-svn: 97768
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This code:
float floatingPointComparison(float x, float y) {
double product = (double)x * y;
if (product == 0.0)
return product;
return product - 1.0;
}
produces this:
_floatingPointComparison:
0000000000000000 cvtss2sd %xmm1,%xmm1
0000000000000004 cvtss2sd %xmm0,%xmm0
0000000000000008 mulsd %xmm1,%xmm0
000000000000000c pxor %xmm1,%xmm1
0000000000000010 ucomisd %xmm1,%xmm0
0000000000000014 jne 0x00000004
0000000000000016 jp 0x00000002
0000000000000018 jmp 0x00000008
000000000000001a addsd 0x00000006(%rip),%xmm0
0000000000000022 cvtsd2ss %xmm0,%xmm0
0000000000000026 ret
The "jne/jp/jmp" sequence can be reduced to this instead:
_floatingPointComparison:
0000000000000000 cvtss2sd %xmm1,%xmm1
0000000000000004 cvtss2sd %xmm0,%xmm0
0000000000000008 mulsd %xmm1,%xmm0
000000000000000c pxor %xmm1,%xmm1
0000000000000010 ucomisd %xmm1,%xmm0
0000000000000014 jp 0x00000002
0000000000000016 je 0x00000008
0000000000000018 addsd 0x00000006(%rip),%xmm0
0000000000000020 cvtsd2ss %xmm0,%xmm0
0000000000000024 ret
for a savings of 2 bytes.
This xform can happen when we recognize that jne and jp jump to the same "true"
MBB, the unconditional jump would jump to the "false" MBB, and the "true" branch
is the fall-through MBB.
llvm-svn: 97766
|
| |
|
|
|
|
| |
of either sxtb16 or uxtb16, and the unified syntax does not specify ".w".
llvm-svn: 97760
|
| |
|
|
|
|
| |
frame pointer.
llvm-svn: 97755
|
| |
|
|
|
|
|
|
| |
an undef value. This is only going to come up for bugpoint-reduced tests --
correct programs will not access memory at undefined addresses -- so it's not
worth the effort of doing anything more aggressive.
llvm-svn: 97745
|
| |
|
|
|
|
|
|
|
| |
These instructions technically define AL,AH, but a trick in X86ISelDAGToDAG
reads AX in order to avoid reading AH with a REX instruction.
Fix PR6489.
llvm-svn: 97742
|
| |
|
|
|
|
| |
clobber registers in a different order.
llvm-svn: 97741
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
IF(condition(value)):
If the value satisfies the condition, the line is processed by lit; otherwise
it is skipped. A test with no unignored directives is resolved as Unsupported.
The test suite is responsible for defining conditions; conditions are unary
functions over strings. I've defined two conditions in the LLVM test suite,
TARGET (with values like those in TARGETS_TO_BUILD) and BINDING (with values
like those in llvm_bindings). So for example you can write:
IF(BINDING(ocaml)): RUN: %blah %s -o -
and the RUN line will only execute if LLVM was configured with the ocaml
bindings.
llvm-svn: 97726
|
| |
|
|
|
|
|
|
|
|
| |
transformation much more careful. Truncating binary '01' to '1' sounds like it's
safe until you realize that it switched from positive to negative under a signed
interpretation, and that depends on the icmp predicate.
Also a few miscellaneous cleanups.
llvm-svn: 97721
|