| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
Specifically, it doesn't handle many cases involving undef correctly, and it is missing other checks which
lead to it trying to re-mark a value marked as a constant with a different value. It also appears to trigger very rarely.
Fixes PR11357.
llvm-svn: 144352
|
| |
|
|
|
|
|
|
| |
Size of data being pointed to wasn't always being checked so some small writes were killing big writes
Fixes <rdar://problem/10426753>
llvm-svn: 144312
|
| |
|
|
|
|
|
|
|
|
|
| |
store is dead.
Currently checks alignment and killing stores on a power of 2 boundary as this is likely
to trim the size of the earlier store without breaking large vector stores into scalar ones.
Fixes <rdar://problem/10140300>
llvm-svn: 144239
|
| |
|
|
|
|
| |
yet so it will currently never get used in real tests
llvm-svn: 144107
|
| |
|
|
|
|
| |
Fixes r8429
llvm-svn: 144036
|
| |
|
|
|
|
| |
<rdar://problem/10405911>
llvm-svn: 144000
|
| |
|
|
| |
llvm-svn: 143808
|
| |
|
|
|
|
| |
the end of it is dead.", which appears to break bootstrapping LLVM.
llvm-svn: 143668
|
| |
|
|
| |
llvm-svn: 143634
|
| |
|
|
|
|
|
|
|
|
| |
Only currently done if the later store is writing to a power of 2 address or
has the same alignment as the earlier store as then its likely to not break up
large stores into smaller ones
Fixes <rdar://problem/10140300>
llvm-svn: 143630
|
| |
|
|
|
|
|
|
| |
We've been hitting asserts in this code due to the many supported
combintions of modes (iv-rewrite/no-iv-rewrite) and IV types. This
second rewrite of the code attempts to deal with these cases systematically.
llvm-svn: 143546
|
| |
|
|
|
|
| |
silence -Wparentheses.
llvm-svn: 143534
|
| |
|
|
|
|
| |
Narrowest possible fix for PR11279.
llvm-svn: 143522
|
| |
|
|
|
|
| |
with another instruction. (Specifically, don't insert an arbitrary instruction before a PHI.) Fixes PR11275.
llvm-svn: 143437
|
| |
|
|
|
|
| |
Patch by Kostya Serebryany.
llvm-svn: 143405
|
| |
|
|
|
|
|
|
| |
for printf->puts, which correctly sets the unnamed_addr bit on the resulting GlobalVariable.
Fixes PR11264.
llvm-svn: 143289
|
| |
|
|
|
|
| |
Fixes rdar://10359193 Indvar LinearFunctionTestReplace assertion
llvm-svn: 143183
|
| |
|
|
|
|
| |
don't do that. <rdar://problem/10352360>
llvm-svn: 143093
|
| |
|
|
|
|
|
|
|
|
| |
instructions.
This doesn't introduce any optimizations we weren't doing before (except
potentially due to pass ordering issues), now passes will eliminate them sooner
as part of their own cleanups.
llvm-svn: 142787
|
| |
|
|
|
|
|
| |
element types, even though the element extraction code does. It is surprising
that this bug has been here for so long. Fixes <rdar://problem/10318778>.
llvm-svn: 142740
|
| |
|
|
|
|
| |
elimination on them too.
llvm-svn: 142735
|
| |
|
|
| |
llvm-svn: 142684
|
| |
|
|
|
|
| |
expensive helper.
llvm-svn: 142672
|
| |
|
|
|
|
| |
the input and output vectors have different sizes. Patch by Xiaoyi Guo.
llvm-svn: 142671
|
| |
|
|
|
|
| |
definition is unused, and enhance it so it can tell that functions which are only used by a blockaddress are in fact dead. This probably doesn't happen much on most code, but the Linux kernel's _THIS_IP_ can trigger this issue with blockaddress. (GlobalDCE can also handle the given tescase, but we only run that at -O3.) Found while looking at PR11180.
llvm-svn: 142572
|
| |
|
|
|
|
| |
Patch by Pranav Bhandarkar!
llvm-svn: 142556
|
| |
|
|
|
|
|
| |
tag on objc_retainBlock calls, which indicates that they may be
optimized away. rdar://10211286.
llvm-svn: 142298
|
| |
|
|
|
|
|
|
| |
combining of the landingpad instruction. The ObjC personality function acts
almost identically to the C++ personality function. In particular, it uses
"null" as a "catch-all" value.
llvm-svn: 142256
|
| |
|
|
|
|
|
| |
possibility that it will span multiple CFG diamonds/triangles which
could have different controlling predicates. rdar://10282956
llvm-svn: 142222
|
| |
|
|
|
|
|
| |
Some code want to check that *any* call within a function has the 'returns
twice' attribute, not just that the current function has one.
llvm-svn: 142221
|
| |
|
|
|
|
|
| |
obsolete. Check the attribute instead.
<rdar://problem/8031714>
llvm-svn: 142212
|
| |
|
|
| |
llvm-svn: 142204
|
| |
|
|
|
|
| |
There is no reason to have simple IR level pass in lib/Target.
llvm-svn: 142200
|
| |
|
|
|
|
|
|
|
|
|
|
| |
profile metadata at the same time. Use it to preserve metadata attached
to a branch when re-writing it in InstCombine.
Add metadata to the canonicalize_branch InstCombine test, and check that
it is tranformed correctly.
Reviewed by Nick Lewycky!
llvm-svn: 142168
|
| |
|
|
| |
llvm-svn: 142162
|
| |
|
|
|
|
| |
on the memcpy call will pull up other unrelated stuff. Fixes PR11142.
llvm-svn: 142150
|
| |
|
|
|
|
| |
use can't be dominated, saving one domtree lookup.
llvm-svn: 142066
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
I rewrote the algorithm a while back so it doesn't require map lookup,
but neglected to change the data structure. This was caught by
llvm-gcc self host, not because there's anything special about
llvm-gcc, but because it is the only test for nondeterminism we
currently have. Unit tests don't work well for everything; we should
always try to have a nondeterminism stress test running.
Fixes PR11133: llvm-gcc self host .o mismatch after enable-iv-rewrite=false
llvm-svn: 142036
|
| |
|
|
|
|
| |
Someone more familiar with LSR should double-check that the extra cast is actually doing the right thing in the overflow cases; I'm not completely confident that's that case.
llvm-svn: 141916
|
| |
|
|
|
|
|
|
| |
dependency which cannot be calculated and a path reaching the entry point of the function. This patch introduces isNonFuncLocal, which replaces isUnknown in some cases.
Patch by Xiaoyi Guo.
llvm-svn: 141896
|
| |
|
|
|
|
| |
Based on patch by Ahmed Charles.
llvm-svn: 141820
|
| |
|
|
| |
llvm-svn: 141750
|
| |
|
|
|
|
|
|
| |
would have never worked, since the element type of a vector type is never a
vector type. Also fix the conditional to be more direct in checking whether
EltTy is a vector type.
llvm-svn: 141713
|
| |
|
|
|
|
|
| |
lowering of NEON code. It provides little-to-no benefit now and only introduces
additional complexity.
llvm-svn: 141646
|
| |
|
|
|
|
|
| |
I'm not sure we will need it in the long run, but the option is
currently useful for checking if the output of LSR is "clean".
llvm-svn: 141634
|
| |
|
|
|
|
|
|
|
|
|
| |
IVs.
Indvars previously chose randomly between congruent IVs. Now it will
bias the decision toward IVs that SCEVExpander likes to create. This
was not done to fix any problem, it's just a welcome side effect of
factoring code.
llvm-svn: 141633
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
promoting allocas to preferred alignments that exceed the natural
alignment. This avoids some potentially expensive dynamic stack realignments.
The natural stack alignment is set in target data strings via the "S<size>"
option. Size is in bits and must be a multiple of 8. The natural stack alignment
defaults to "unspecified" (represented by a zero value), and the "unspecified"
value does not prevent any alignment promotions. Target maintainers that care
about avoiding promotions should explicitly add the "S<size>" option to their
target data strings.
llvm-svn: 141599
|
| |
|
|
|
|
| |
Fixes rdar://problem/5064068
llvm-svn: 141442
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
switch (n) {
case 27:
do_something(x);
...
}
the call do_something(x) will be replaced with do_something(27). In
gcc-as-one-big-file this results in the removal of about 500 lines of
bitcode (about 0.02%), so has about 1/10 of the effect of propagating
branch conditions.
llvm-svn: 141360
|
| |
|
|
|
|
| |
with this patch.
llvm-svn: 141333
|