| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 274406
|
|
|
|
|
|
|
|
|
|
|
| |
Fix incorrect calculation of the type size for __msan_maybe_warning_N
call that resulted in an invalid (narrowing) zext instruction and
"Assertion `castIsValid(op, S, Ty) && "Invalid cast!"' failed."
Only happens in very large functions (with more than 3500 MSan
checks) operating on integer types that are not power-of-two.
llvm-svn: 274395
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
GetBoundryInstruction returns the last instruction as the instruction which follows or end(). Otherwise the last instruction in the boundry set is not being tested by isVectorizable().
Partially solve reordering of instructions. More extensive solution to follow.
Reviewers: tstellarAMD, llvm-commits, jlebar
Subscribers: escha, arsenm, mzolotukhin
Differential Revision: http://reviews.llvm.org/D21934
llvm-svn: 274389
|
|
|
|
| |
llvm-svn: 274362
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D21636
llvm-svn: 274334
|
|
|
|
|
|
|
|
|
| |
If OpB has an ADD NSW/NUW, we can use that to prove that adding 1
to OpA won't wrap if OpA + 1 == OpB.
Patch by Fiona Glaser
llvm-svn: 274324
|
|
|
|
|
|
|
| |
If no alignment was set on the load/stores, it would vectorize
to the new type even though this increases the default alignment.
llvm-svn: 274323
|
|
|
|
| |
llvm-svn: 274322
|
|
|
|
|
|
|
| |
This needs to use inttoptr/ptrtoint if combining an int and pointer
load. If a pointer is used always do an integer load.
llvm-svn: 274321
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r274305, since it breaks self-hosting:
http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_build/22349/
http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/17232
Note that the blamelist on lab.llvm.org:8011 is incorrect. The previous
build was r274299, but somehow r274305 wasn't included in the blamelist:
http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules
llvm-svn: 274320
|
|
|
|
|
|
|
| |
This was not passing the full instruction with metadata
to the alias query.
llvm-svn: 274318
|
|
|
|
|
|
|
|
|
|
|
|
| |
integer.
Fixes issues on some architectures where we use arithmetic ops to build
vectors, which can cause bad things to happen for loads/stores of mixed
types.
Patch by Fiona Glaser
llvm-svn: 274307
|
|
|
|
| |
llvm-svn: 274306
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This pass hoists duplicated computations in the program. The primary goal of
gvn-hoist is to reduce the size of functions before inline heuristics to reduce
the total cost of function inlining.
Pass written by Sebastian Pop, Aditya Kumar, Xiaoyu Hu, and Brian Rzycki.
Important algorithmic contributions by Daniel Berlin under the form of reviews.
Differential Revision: http://reviews.llvm.org/D19338
llvm-svn: 274305
|
|
|
|
|
|
| |
Also add test I forgot to add to r274296.
llvm-svn: 274299
|
|
|
|
| |
llvm-svn: 274296
|
|
|
|
|
|
|
| |
This was contributed by Apple, and I've been working on
minimal cleanups and generalizing it.
llvm-svn: 274293
|
|
|
|
| |
llvm-svn: 274282
|
|
|
|
|
|
|
|
| |
This will be re-used by the LoadStoreVectorizer.
Fix handling of range metadata and testcase by Justin Lebar.
llvm-svn: 274281
|
|
|
|
|
|
|
|
|
|
| |
Except the seed uniform instructions (conditional branch and consecutive ptr
instructions), dependencies to be added into uniform set should only be used
by existing uniform instructions or intructions outside of current loop.
Differential Revision: http://reviews.llvm.org/D21755
llvm-svn: 274262
|
|
|
|
| |
llvm-svn: 274238
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Found cases where DSE incorrectly add partially-overwritten intervals.
Please see the test case for details.
Reviewers: mcrosier, eeckstein, hfinkel
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D21859
llvm-svn: 274237
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
https://llvm.org/bugs/show_bug.cgi?id=24766#c2
This removes a hack that was added for the benefit of x86 codegen.
It prevented shrinking the switch condition even to smaller legal (DataLayout) types.
We have a safety mechanism in CGP after:
http://reviews.llvm.org/rL251857
...so we're free to use the optimal (smallest) IR type now.
Differential Revision: http://reviews.llvm.org/D12965
llvm-svn: 274233
|
|
|
|
|
|
| |
instruction
llvm-svn: 274229
|
|
|
|
|
|
|
|
| |
If the incoming types are i1, then we don't have to pattern match any sext ops.
Differential Revision: http://reviews.llvm.org/D21740
llvm-svn: 274228
|
|
|
|
| |
llvm-svn: 274182
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Take advantage of FCmpInst::Predicate's bit pattern and handle (fcmp *, x, y) | (fcmp *, x, y) and (fcmp *, x, y) & (fcmp *, x, y) more consistently. Also fold more FCmpInst::FCMP_FALSE and FCmpInst::FCMP_TRUE to constants.
Currently InstCombine wrongly folds (fcmp ogt, x, y) | (fcmp ord, x, y) to (fcmp ogt, x, y); this patch also fixes that.
Reviewers: spatel
Subscribers: llvm-commits, iteratee, echristo
Differential Revision: http://reviews.llvm.org/D21775
llvm-svn: 274156
|
|
|
|
|
|
|
|
| |
instructions
This removes some noise for D21775's test changes.
llvm-svn: 274155
|
|
|
|
| |
llvm-svn: 274115
|
|
|
|
|
|
|
|
|
|
| |
For the new hotness attribute, the API will take the pass rather than
the pass name so we can no longer play the trick of AlwaysPrint being a
special pass name. This adds a getter to help the transition.
There is also a corresponding clang patch.
llvm-svn: 274100
|
|
|
|
|
|
|
|
|
|
|
|
| |
both address and result of load instructions"
Revert "[InstCombine] Combine A->B->A BitCast"
as this appears to cause PR27996 and as discussed in http://reviews.llvm.org/D20847
This reverts commits r270135 and r263734.
llvm-svn: 274094
|
|
|
|
|
|
|
|
| |
If the load is conditional we can't hoist its 0-iteration instance to
the preheader because that would make it unconditional. Thus we would
access a memory location that the original loop did not access.
llvm-svn: 273991
|
|
|
|
| |
llvm-svn: 273974
|
|
|
|
|
|
|
|
|
|
|
| |
is small enough (PR28153)
This should fix PR28153:
https://llvm.org/bugs/show_bug.cgi?id=28153
Differential Revision: http://reviews.llvm.org/D21769
llvm-svn: 273951
|
|
|
|
|
|
|
| |
The bug is connected to vector GEPs.
https://llvm.org/bugs/show_bug.cgi?id=28313
llvm-svn: 273919
|
|
|
|
|
|
|
| |
There's at least one more fold to do here:
https://llvm.org/bugs/show_bug.cgi?id=28153
llvm-svn: 273904
|
|
|
|
|
|
| |
NFC.
llvm-svn: 273901
|
|
|
|
|
|
| |
The APInt matcher works with splat vectors, so we get this fold for vectors too.
llvm-svn: 273897
|
|
|
|
|
|
| |
Differential revision: http://reviews.llvm.org/D21699
llvm-svn: 273894
|
|
|
|
|
|
|
|
|
|
| |
dynamic allocas, LLVM part
See the bug report at https://github.com/google/sanitizers/issues/691. When a dynamic alloca has a constant size, ASan instrumentation will treat it as a regular dynamic alloca (insert calls to poison and unpoison), but the backend will turn it into a regular stack variable. The poisoning/unpoisoning is then broken. This patch will treat such allocas as static.
Differential Revision: http://reviews.llvm.org/D21509
llvm-svn: 273888
|
|
|
|
| |
llvm-svn: 273866
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It did not handle correctly cases without GEP.
The following loop wasn't vectorized:
for (int i=0; i<len; i++)
*to++ = *from++;
I use getPtrStride() to find Stride for memory access and return 0 is the Stride is not 1 or -1.
Re-commit rL273257 - revision: http://reviews.llvm.org/D20789
llvm-svn: 273864
|
|
|
|
|
|
|
|
|
| |
build.
There's a known bug in msvc 2013 that fails to compile do-while loops
inside of ranged for loops.
llvm-svn: 273811
|
|
|
|
|
|
| |
Only minor manual fixes. No functionality change intended.
llvm-svn: 273808
|
|
|
|
| |
llvm-svn: 273805
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This is a straightforward extension of what LoopUnswitch does to
branches to guards. That is, we unswitch
```
for (;;) {
...
guard(loop_invariant_cond);
...
}
```
into
```
if (loop_invariant_cond) {
for (;;) {
...
// There is no need to emit guard(true)
...
}
} else {
for (;;) {
...
guard(false);
// SimplifyCFG will clean this up by adding an
// unreachable after the guard(false)
...
}
}
```
Reviewers: majnemer
Subscribers: mcrosier, llvm-commits, mzolotukhin
Differential Revision: http://reviews.llvm.org/D21725
llvm-svn: 273801
|
|
|
|
| |
llvm-svn: 273800
|
|
|
|
| |
llvm-svn: 273799
|
|
|
|
| |
llvm-svn: 273798
|
|
|
|
| |
llvm-svn: 273797
|