- Mar 05, 2010
-
-
Jakob Stoklund Olesen authored
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
-
Jakob Stoklund Olesen authored
post-ra scheduler has run. Disable the verifier checks that late in the game. llvm-svn: 97837
-
Jakob Stoklund Olesen authored
llvm-svn: 97836
-
Dale Johannesen authored
llvm-svn: 97830
-
Evan Cheng authored
Safely turn memset_chk etc. to non-chk variant if the known object size is >= memset / memcpy / memmove size. llvm-svn: 97828
-
Evan Cheng authored
llvm-svn: 97827
-
Evan Cheng authored
llvm-svn: 97818
-
Chris Lattner authored
llvm-svn: 97814
-
Chris Lattner authored
from different addr spaces. llvm-svn: 97813
-
Wesley Peck authored
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
-
Chris Lattner authored
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
-
Evan Cheng authored
Fix an oops in x86 sibcall optimization. If the ByVal callee argument is itself passed as a pointer, then it's obviously not safe to do a tail call. llvm-svn: 97797
-
Chris Lattner authored
compares, noticed by inspection. llvm-svn: 97795
-
Chris Lattner authored
in a very specific use pattern embodied in the carefully reduced testcase. llvm-svn: 97794
-
Eric Christopher authored
No functionality change. llvm-svn: 97793
-
Jeffrey Yasskin authored
llvm-svn: 97792
-
Chris Lattner authored
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
-
Chris Lattner authored
llvm-svn: 97789
-
Jeffrey Yasskin authored
llvm-svn: 97788
-
Mikhail Glushenkov authored
Allows us to find executables that are in the same directory. llvm-svn: 97786
-
Evan Cheng authored
llvm-svn: 97782
-
Dan Gohman authored
llvm-svn: 97781
-
Dan Gohman authored
llvm-svn: 97779
-
Dan Gohman authored
rounding correctly. This implementation is a generalization of the x86_64 code in compiler-rt. This fixes rdar://7683708. llvm-svn: 97778
-
Johnny Chen authored
llvm-svn: 97776
-
Evan Cheng authored
Add missing break for Intrinsic::objectsize case. It was falling through to the following Intrinsic::bswap code. I have no idea why it wasn't breaking stuff. llvm-svn: 97774
-
Chris Lattner authored
llvm-svn: 97769
-
Bill Wendling authored
llvm-svn: 97768
-
Bill Wendling authored
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
-
Dale Johannesen authored
llvm-svn: 97765
-
Jeffrey Yasskin authored
llvm-svn: 97763
-
- Mar 04, 2010
-
-
Johnny Chen authored
of either sxtb16 or uxtb16, and the unified syntax does not specify ".w". llvm-svn: 97760
-
Jeffrey Yasskin authored
positive where pointers would be leaked on llvm_shutdown. llvm-svn: 97759
-
Jim Grosbach authored
as nounwind are marked with a -1 call-site value. This is necessary to, for example, correctly process exceptions thrown from within an "unexpected" execption handler (see SingleSource/Regression/C++/EH/expection_spec_test.cpp). llvm-svn: 97757
-
Bob Wilson authored
frame pointer. llvm-svn: 97755
-
Evan Cheng authored
llvm-svn: 97752
-
Evan Cheng authored
llvm-svn: 97747
-
Bob Wilson authored
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
-
Erick Tryzelaar authored
We need this so can not bake DESTDIR into the O'Caml symlinks. llvm-svn: 97743
-
Jakob Stoklund Olesen authored
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
-