| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
into Analysis as a standalone function, since there's no need for
it to be in VMCore. Also, update it to use isKnownNonZero and
other goodies available in Analysis, making it more precise,
enabling more aggressive optimization.
llvm-svn: 146610
|
| |
|
|
|
|
| |
size heuristics.
llvm-svn: 146578
|
| |
|
|
|
|
| |
point to ARC-managed pointers sometimes. This fixes rdar://10551239.
llvm-svn: 146577
|
| |
|
|
| |
llvm-svn: 146459
|
| |
|
|
|
|
|
|
| |
This should always be done as a matter of principal. I don't have a
case that exposes the problem. I just noticed this recently while
scanning the code and realized I meant to fix it long ago.
llvm-svn: 146438
|
| |
|
|
| |
llvm-svn: 146411
|
| |
|
|
| |
llvm-svn: 146409
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
detected in the forward-CFG DFS. This prevents the reverse-CFG from
visiting blocks inside loops after blocks that dominate them in the
case where loops have multiple exits.
No testcase, because this fixes a bug which in practice only shows
up in a full optimizer run, due to the use-list order.
This fixes rdar://10422791 and others.
llvm-svn: 146408
|
| |
|
|
| |
llvm-svn: 146389
|
| |
|
|
| |
llvm-svn: 146385
|
| |
|
|
| |
llvm-svn: 146384
|
| |
|
|
| |
llvm-svn: 146383
|
| |
|
|
| |
llvm-svn: 146380
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
indicates whether the intrinsic has a defined result for a first
argument equal to zero. This will eventually allow these intrinsics to
accurately model the semantics of GCC's __builtin_ctz and __builtin_clz
and the X86 instructions (prior to AVX) which implement them.
This patch merely sets the stage by extending the signature of these
intrinsics and establishing auto-upgrade logic so that the old spelling
still works both in IR and in bitcode. The upgrade logic preserves the
existing (inefficient) semantics. This patch should not change any
behavior. CodeGen isn't updated because it can use the existing
semantics regardless of the flag's value.
Note that this will be followed by API updates to Clang and DragonEgg.
Reviewed by Nick Lewycky!
llvm-svn: 146357
|
| |
|
|
|
|
|
|
| |
Since we're not rewriting IVs in other loops, there's not much reason
to consider their stride when generating formulae.
This should reduce the number of useless formulas considered by LSR.
llvm-svn: 146302
|
| |
|
|
| |
llvm-svn: 146277
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Patch by Brendon Cahoon!
This extends the existing LoopUnroll and LoopUnrollPass. Brendon
measured no regressions in the llvm test suite with -unroll-runtime
enabled. This implementation works by using the existing loop
unrolling code to unroll the loop by a power-of-two (default 8). It
generates an if-then-else sequence of code prior to the loop to
execute the extra iterations before entering the unrolled loop.
llvm-svn: 146245
|
| |
|
|
|
|
| |
trivially infinite.
llvm-svn: 146197
|
| |
|
|
| |
llvm-svn: 145934
|
| |
|
|
|
|
|
|
|
| |
It's always good to prune early, but formulae that are unsatisfactory
in their own right need to be removed before running any other pruning
heuristics. We easily avoid generating such formulae, but we need them
as an intermediate basis for forming other good formulae.
llvm-svn: 145906
|
| |
|
|
| |
llvm-svn: 145866
|
| |
|
|
|
|
|
|
| |
where this would be bad as the backend shouldn't have a problem inlining small
memcpys.
rdar://10510150
llvm-svn: 145865
|
| |
|
|
| |
llvm-svn: 145801
|
| |
|
|
|
|
|
|
|
|
| |
causing the optimisation to occur
Turns out long long + unsigned long long is unsigned. Doh!
Fixes http://llvm.org/bugs/show_bug.cgi?id=11455
llvm-svn: 145731
|
| |
|
|
|
|
| |
Add FIXMEs to places that are non-trivial to fix.
llvm-svn: 145661
|
| |
|
|
|
|
|
| |
where it appeared beneficial to pass.
More of rdar://10500969
llvm-svn: 145630
|
| |
|
|
|
|
|
| |
InstructionSimplify.cpp. Other fixups as needed.
Part of rdar://10500969
llvm-svn: 145559
|
| |
|
|
|
|
|
|
| |
explicitly specified alignment.
<rdar://problem/10497732>.
llvm-svn: 145523
|
| |
|
|
|
|
| |
not be changed inside the uses enumeration loop.
llvm-svn: 145432
|
| |
|
|
| |
llvm-svn: 145420
|
| |
|
|
|
|
|
| |
This reverts r139450, fixes r139453, and adds much needed comments and a
unit test.
llvm-svn: 145367
|
| |
|
|
|
|
| |
SCEV should now be used for trip count analysis, not LoopInfo.
llvm-svn: 145262
|
| |
|
|
| |
llvm-svn: 145154
|
| |
|
|
|
|
|
|
| |
Suggested in code review by Eli.
That code in InstCombine looks kinda suspicious.
llvm-svn: 145013
|
| |
|
|
|
|
|
|
|
|
| |
Add a custom name for fwrite and fputs on x86-32 OSX. Make SimplifyLibCalls honor the custom
names for fwrite and fputs.
Fixes <rdar://problem/9815881>.
llvm-svn: 144876
|
| |
|
|
|
|
| |
looking at the size of the pointee. Fixes PR11390!
llvm-svn: 144773
|
| |
|
|
| |
llvm-svn: 144721
|
| |
|
|
| |
llvm-svn: 144675
|
| |
|
|
|
|
| |
Fixes PR11353.
llvm-svn: 144442
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
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
|