| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20788
llvm-svn: 271255
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20780
llvm-svn: 271254
|
| |
|
|
|
|
|
|
| |
store intrinsics instead.
The intrinsics will be autoupgraded to the same generic masked stores.
llvm-svn: 271245
|
| |
|
|
|
|
|
|
|
|
|
| |
This adds support to the backed to actually support SjLj EH as an exception
model. This is *NOT* the default model, and requires explicitly opting into it
from the frontend. GCC supports this model and for MinGW can still be enabled
via the `--using-sjlj-exceptions` options.
Addresses PR27749!
llvm-svn: 271244
|
| |
|
|
|
|
| |
them. Auto upgrade to native unaligned store instructions.
llvm-svn: 271236
|
| |
|
|
| |
llvm-svn: 271233
|
| |
|
|
|
|
| |
checking more prefixes instead of complete matches.
llvm-svn: 271232
|
| |
|
|
| |
llvm-svn: 271229
|
| |
|
|
|
|
|
|
|
|
|
| |
The exit-on-error flag is necessary to avoid some assertions/unreachables. We
can get past them by creating a few dummy nodes.
Fixes PR27768, PR27769.
Differential Revision: http://reviews.llvm.org/D20726
llvm-svn: 271200
|
| |
|
|
|
|
|
|
|
|
|
| |
Since we already assert that the outgoing IR is in LCSSA, it is easy to
get misled into thinking that -indvars broke LCSSA if the incoming IR is
non-LCSSA. Checking this pre-condition will make such cases break in
more obvious ways.
Inspired by (but does _not_ fix) PR26682.
llvm-svn: 271196
|
| |
|
|
|
|
| |
This will be used later to port IndVarSimplify to the new pass manager.
llvm-svn: 271190
|
| |
|
|
|
|
| |
caused a push_back in the main corpus invalidating the vector<> iterators in rare cases.
llvm-svn: 271186
|
| |
|
|
|
|
|
| |
Found by clang-tidy's misc-move-const-arg. While there drop some
obsolete c_str() calls.
llvm-svn: 271181
|
| |
|
|
| |
llvm-svn: 271180
|
| |
|
|
| |
llvm-svn: 271174
|
| |
|
|
| |
llvm-svn: 271172
|
| |
|
|
|
|
|
|
| |
ConstantDataVector.
This will be used in a follow up commit to simplify code in clang that creates a ConstantDataVector and calls the other form.
llvm-svn: 271164
|
| |
|
|
|
|
| |
It will be used in clang.
llvm-svn: 271161
|
| |
|
|
| |
llvm-svn: 271160
|
| |
|
|
|
|
| |
While here, add a FIXME for setPreserveCFG().
llvm-svn: 271159
|
| |
|
|
|
|
|
| |
Consolidate documentation by removing comments from the .cpp file where
the comments in the .cpp file were copy-pasted from the header.
llvm-svn: 271157
|
| |
|
|
| |
llvm-svn: 271156
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
If we can prove that an op.with.overflow intrinsic does not overflow, we
can get rid of the intrinsic, and replace it with non-wrapping
arithmetic.
This was first checked in at r265913 but reverted in r265950 because it
exposed some issues around how SCEV handled post-inc add recurrences.
Those issues have now been fixed.
Reviewers: atrick, regehr
Subscribers: sanjoy, mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D18685
llvm-svn: 271153
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This change teaches SCEV to see reduce `(extractvalue
0 (op.with.overflow X Y))` into `op X Y` (with a no-wrap tag if
possible).
This was first checked in at r265912 but reverted in r265950 because it
exposed some issues around how SCEV handled post-inc add recurrences.
Those issues have now been fixed.
Reviewers: atrick, regehr
Subscribers: mcrosier, mzolotukhin, llvm-commits
Differential Revision: http://reviews.llvm.org/D18684
llvm-svn: 271152
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes PR27315.
The post-inc version of an add recurrence needs to "follow the same
rules" as a normal add or subtract expression. Otherwise we miscompile
programs like
```
int main() {
int a = 0;
unsigned a_u = 0;
volatile long last_value;
do {
a_u += 3;
last_value = (long) ((int) a_u);
if (will_add_overflow(a, 3)) {
// Leave, and don't actually do the increment, so no UB.
printf("last_value = %ld\n", last_value);
exit(0);
}
a += 3;
} while (a != 46);
return 0;
}
```
This patch changes SCEV to put no-wrap flags on post-inc add recurrences
only when the poison from a potential overflow will go ahead to cause
undefined behavior.
To avoid regressing performance too much, I've assumed infinite loops
without side effects is undefined behavior to prove poison<->UB
equivalence in more cases. This isn't ideal, but is not new to LLVM as
a whole, and far better than the situation I'm trying to fix.
llvm-svn: 271151
|
| |
|
|
|
|
|
| |
This is a stripped down version of D19211, leaving out the questionable
"branching in poison is UB" bit.
llvm-svn: 271150
|
| |
|
|
| |
llvm-svn: 271149
|
| |
|
|
| |
llvm-svn: 271145
|
| |
|
|
| |
llvm-svn: 271142
|
| |
|
|
|
|
| |
This makes it easier to report errors up the stack.
llvm-svn: 271140
|
| |
|
|
|
|
|
|
|
|
|
|
| |
intrinsics with generic IR (llvm)
This patch removes the llvm intrinsics VPMOVSX and (V)PMOVZX sign/zero extension intrinsics and auto-upgrades to SEXT/ZEXT calls instead. We already did this for SSE41 PMOVSX sometime ago so much of that implementation can be reused.
Reapplied now that the the companion patch (D20684) removes/auto-upgrade the clang intrinsics has been committed.
Differential Revision: http://reviews.llvm.org/D20686
llvm-svn: 271131
|
| |
|
|
| |
llvm-svn: 271130
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
When RF_NullMapMissingGlobalValues is set, mapValue can return null
for GlobalValue. When mapping the operands of a constant that is
referenced from metadata, we need to handle this case and actually
return null instead of mapping this constant.
Reviewers: dexonsmith, rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20713
llvm-svn: 271129
|
| |
|
|
|
|
|
|
| |
We were producing R_X86_64_GOTPCRELX for invalid instructions and
sometimes producing R_X86_64_GOTPCRELX instead of
R_X86_64_REX_GOTPCRELX.
llvm-svn: 271118
|
| |
|
|
|
|
|
|
|
|
|
| |
(PR20347)
It would be better to check the valid/expected size of the immediate operand, but this is
generally better than what we print right now.
Differential Revision: http://reviews.llvm.org/D20385
llvm-svn: 271114
|
| |
|
|
|
|
|
|
| |
Otherwise we fallback to a blend of PSHUFBs later on.
Differential Revision: http://reviews.llvm.org/D19661
llvm-svn: 271113
|
| |
|
|
| |
llvm-svn: 271112
|
| |
|
|
| |
llvm-svn: 271111
|
| |
|
|
|
|
|
|
|
| |
Rather than invoking emitFill with negative size, which may trigger
an undefined behavior, return immediately after emitting the warning.
Differential Revision: http://reviews.llvm.org/D20768
llvm-svn: 271107
|
| |
|
|
| |
llvm-svn: 271105
|
| |
|
|
| |
llvm-svn: 271103
|
| |
|
|
|
|
|
|
|
| |
This matches the behavior of GNU assembler which supports symbolic
expressions in absolute expressions used in assembly directives.
Differential Revision: http://reviews.llvm.org/D20752
llvm-svn: 271102
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This converts remaining uses of ByteStream, which was still
left in the symbol stream and type stream, to using the new
StreamInterface zero-copy classes.
RecordIterator is finally deleted, so this is the only way left
now. Additionally, more error checking is added when iterating
the various streams.
With this, the transition to zero copy pdb access is complete.
llvm-svn: 271101
|
| |
|
|
|
|
|
|
| |
This reverts commit r271096, as reverting it broke even more buildbots!
But that also means I'll break on ARM again... :(
llvm-svn: 271099
|
| |
|
|
| |
llvm-svn: 271097
|
| |
|
|
|
|
| |
This reverts commit r271052, as it broke some ARM buildbots.
llvm-svn: 271096
|
| |
|
|
| |
llvm-svn: 271095
|
| |
|
|
|
|
|
| |
Centralize assertion.
Clean up max loop.
llvm-svn: 271094
|
| |
|
|
|
|
|
| |
The name was out of date at this point and it seems simple enough to
have in-line.
llvm-svn: 271093
|
| |
|
|
| |
llvm-svn: 271092
|