| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Makes it possible to lower with floating point loads and stores.
2. Avoid unaligned loads / stores unless it's fast.
3. Fix some memcpy lowering logic bug related to when to optimize a
load from constant string into a constant.
4. Adjust x86 memcpy lowering threshold to make it more sane.
5. Fix x86 target hook so it uses vector and floating point memory
ops more effectively.
rdar://7774704
llvm-svn: 100090
|
|
|
|
| |
llvm-svn: 100065
|
|
|
|
| |
llvm-svn: 100062
|
|
|
|
| |
llvm-svn: 100058
|
|
|
|
|
|
|
|
|
|
| |
* Set the "DestA" and "DestB" according to how they're understood by the
method. I.e., if one or both of them should point to the "fall through" block,
then point to the fall through block.
* Improve the loop that removes superfluous edges to be more understandable.
llvm-svn: 100056
|
|
|
|
|
|
| |
functions. Partial fix for Radar 7424645.
llvm-svn: 100048
|
|
|
|
| |
llvm-svn: 100038
|
|
|
|
|
|
|
|
|
| |
POD-like anyway, so we don't even care about calling their d'tors (DIEBlock
being the exception).
~6% less mallocs and ~1% compile time improvement on clang -O0 -g oggenc.c
llvm-svn: 100035
|
|
|
|
| |
llvm-svn: 99999
|
|
|
|
| |
llvm-svn: 99998
|
|
|
|
| |
llvm-svn: 99995
|
|
|
|
| |
llvm-svn: 99993
|
|
|
|
| |
llvm-svn: 99992
|
|
|
|
| |
llvm-svn: 99989
|
|
|
|
| |
llvm-svn: 99986
|
|
|
|
|
|
|
|
|
| |
instructions. In addition to being a convenience,
they are faster than the old apis, particularly when
not going from an MDKindID like people should be
doing.
llvm-svn: 99982
|
|
|
|
| |
llvm-svn: 99948
|
|
|
|
| |
llvm-svn: 99938
|
|
|
|
|
|
|
|
|
| |
memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
A update of langref will occur in a subsequent checkin.
llvm-svn: 99928
|
|
|
|
|
|
|
| |
only a single type of object to be allocated. Use it to make VNInfo destruction
typesafe.
llvm-svn: 99919
|
|
|
|
|
|
|
|
|
| |
create symbols. It is extremely error prone and a source of a lot
of the remaining integrated assembler bugs on x86-64.
This fixes rdar://7807601.
llvm-svn: 99902
|
|
|
|
| |
llvm-svn: 99901
|
|
|
|
| |
llvm-svn: 99899
|
|
|
|
| |
llvm-svn: 99895
|
|
|
|
| |
llvm-svn: 99883
|
|
|
|
| |
llvm-svn: 99882
|
|
|
|
|
|
|
|
|
|
| |
on all objects it has allocated, if they are all of the same size and alignment.
Use this to destruct all VNInfos allocated in LiveIntervalAnalysis (PR6653).
valnos is not reliable for this purpose, as seen in r99400
(which still leaked, and sometimes caused double frees).
llvm-svn: 99881
|
|
|
|
| |
llvm-svn: 99879
|
|
|
|
|
|
|
| |
catch-all. The "dominates" way won't catch all of the selectors which must be
changed.
llvm-svn: 99850
|
|
|
|
|
|
|
|
|
|
|
| |
transform. I.e., if a clean-up eh.selector call dominates the invoke of an
_Unwind_Resume_or_Rethrow, then we convert the eh.selector into a
catch-all. This patch, however, uses the DominatorTree information, and doesn't
go through the whole rigmarole of starting at the eh.exception call, finding the
corresponding URoR and eh.selector calls, and trying to trace through any number
of instruction types to get to them.
llvm-svn: 99846
|
|
|
|
|
|
| |
instruction, in a variable's DIE.
llvm-svn: 99845
|
|
|
|
| |
llvm-svn: 99840
|
|
|
|
| |
llvm-svn: 99836
|
|
|
|
| |
llvm-svn: 99833
|
|
|
|
|
|
| |
not stop it by using RAII.
llvm-svn: 99832
|
|
|
|
|
|
|
|
| |
AsmPrinter.cpp.
This is same as r99772 (which was reverted) with just one meaningful difference where two source lines exchanged their positions.
llvm-svn: 99816
|
|
|
|
| |
llvm-svn: 99778
|
|
|
|
| |
llvm-svn: 99774
|
|
|
|
| |
llvm-svn: 99772
|
|
|
|
|
|
|
|
|
|
| |
and those derived from them. These are obnoxious because
they were written as: PatLeaf<(bitconvert). Not having an
argument was foiling adding better type checking for operand
count matching up with what was required (in this case,
bitconvert always requires an operand!)
llvm-svn: 99759
|
|
|
|
| |
llvm-svn: 99742
|
|
|
|
|
|
| |
are cleaned up, we can remove an old fixme.
llvm-svn: 99741
|
|
|
|
|
|
|
| |
1, 1 cases which are by-far the most frequent. This shrinks the X86
isel table from 77014 -> 74657 bytes.
llvm-svn: 99740
|
|
|
|
|
|
|
| |
can cause a crash on crazy situations in msp430 when morph-node-to
is disabled.
llvm-svn: 99739
|
|
|
|
|
|
| |
list multiple times when MorphNodeTo can't be applied.
llvm-svn: 99735
|
|
|
|
|
|
| |
scope due to obviously false predicate.
llvm-svn: 99723
|
|
|
|
| |
llvm-svn: 99697
|
|
|
|
| |
llvm-svn: 99695
|
|
|
|
|
|
| |
converted, then use the initializer, since using the name itself won't work.
llvm-svn: 99692
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'invoke' instruction. You will get a situation like this:
bb:
%ehptr = eh.exception()
%sel = eh.selector(%ehptr, @per, 0);
...
bb2:
invoke _Unwind_Resume_or_Rethrow(%ehptr) %normal unwind to %lpad
lpad:
...
The unwinder will see the %sel call as a clean-up and, if it doesn't have a
catch further up the call stack, it will skip running it. But there *is* another
catch up the stack -- the catch for the %lpad. However, we can't see that. This
is fixed in code-gen, where we detect this situation, and convert the "clean-up"
selector call into a "catch-all" selector call. This gives us the correct
semantics.
llvm-svn: 99671
|