| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
optimally negated
If an immediate is only used in an AND node, it is possible that the immediate can be more optimally materialized when negated. If this is the case, we can negate the immediate and use a BIC instead;
int i(int a) {
return a & 0xfffffeec;
}
Used to produce:
ldr r1, [CONSTPOOL]
ands r0, r1
CONSTPOOL: 0xfffffeec
And now produces:
movs r1, #255
adds r1, #20 ; Less costly immediate generation
bics r0, r1
llvm-svn: 272251
|
|
|
|
| |
llvm-svn: 272250
|
|
|
|
|
|
| |
instructions. Then add shuffle decode printing for the EVEX forms which is made easier by having the naming structure more similar to other instructions.
llvm-svn: 272249
|
|
|
|
| |
llvm-svn: 272248
|
|
|
|
|
|
|
|
|
|
|
| |
It is possible for a field and a class to have the same name. In such
cases, performing lookup for the field might return a result set with
more than one entry. An overzealous assertion fired, causing us to
crash instead of using the non-class lookup result.
This fixes PR28060.
llvm-svn: 272247
|
|
|
|
|
|
| |
directly in the header file instead of in CGBuiltin.cpp. Simplify the sse2 equivalents as well.
llvm-svn: 272246
|
|
|
|
|
|
| |
palignr too.
llvm-svn: 272245
|
|
|
|
|
|
| |
since empty argument list mean something else in C.
llvm-svn: 272244
|
|
|
|
| |
llvm-svn: 272243
|
|
|
|
| |
llvm-svn: 272242
|
|
|
|
|
|
|
|
|
|
| |
Add support to the AArch64 IAS for the `.arch` directive. This allows the
assembly input to use architectural functionality in part of a file. This is
used in existing code like BoringSSL.
Resolves PR26016!
llvm-svn: 272241
|
|
|
|
| |
llvm-svn: 272240
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Enable existing summary-based importing support in the gold-plugin.
Reviewers: mehdi_amini
Subscribers: llvm-commits, mehdi_amini
Differential Revision: http://reviews.llvm.org/D21080
llvm-svn: 272239
|
|
|
|
| |
llvm-svn: 272238
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We can safely rely on a NoWrap add recurrence causing UB down the road
only if we know the loop does not have a exit expressed in a way that is
opaque to ScalarEvolution (e.g. by a function call that conditionally
calls exit(0)).
I believe with this change PR28012 is fixed.
Note: I had to change some llvm-lit tests in LoopReroll, since it looks
like they were depending on this incorrect behavior.
llvm-svn: 272237
|
|
|
|
| |
llvm-svn: 272236
|
|
|
|
| |
llvm-svn: 272235
|
|
|
|
| |
llvm-svn: 272234
|
|
|
|
| |
llvm-svn: 272233
|
|
|
|
|
|
|
| |
looking for it along $PATH. This allows installs of LLVM tools outside of
$PATH to find the symbolizer and produce pretty backtraces if they crash.
llvm-svn: 272232
|
|
|
|
|
|
| |
They have probably been discarded during optimization.
llvm-svn: 272231
|
|
|
|
| |
llvm-svn: 272230
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TPI hash table contains a parallel array for the type records.
For each type record R, a hash value is calculated by `H(R) % NumBuckets`
where H is a hash function, and the result is stored to a bucket element.
H is TPI1::hashPrec function in microsoft-pdb repository.
Our hash function does not support all type record types yet.
Currently it supports only records for line number.
I'll extend it in a follow up patch.
The aim of verify the hash table is not only detect corrupted files.
It ensures that our understanding of how the hash values are calculated
is correct.
llvm-svn: 272229
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Break on all switch cases for outer and inner switches.
No functionality changed.
Reviewers: llvm-commits, sanjoy
Differential Revision: http://reviews.llvm.org/D21158
llvm-svn: 272228
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D21056
llvm-svn: 272227
|
|
|
|
|
|
|
|
| |
Without that check it was possible to write test cases where the size
was not specified and we ended up with weird asserts down the road,
because the default value (1) would not make sense.
llvm-svn: 272226
|
|
|
|
| |
llvm-svn: 272225
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This fixes PR26682. Also add LCSSA as a preserved pass to LoopSimplify,
that looks correct to me and allows to write a test for the issue.
Reviewers: chandlerc, bogner, sanjoy
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D21112
llvm-svn: 272224
|
|
|
|
|
|
|
|
| |
We are going to use the hash functions from TPI streams.
Differential Revision: http://reviews.llvm.org/D21142
llvm-svn: 272223
|
|
|
|
| |
llvm-svn: 272221
|
|
|
|
|
|
| |
We are always greater than CMake 2.8.11, so we don't need this check.
llvm-svn: 272220
|
|
|
|
|
|
| |
Since we're always greater than 2.8.12, we don't need this check anymore.
llvm-svn: 272219
|
|
|
|
|
|
| |
This just removes some redundant checks and updates warning text.
llvm-svn: 272218
|
|
|
|
|
|
|
| |
cmake 3.4 introduced LIST_DIRECTORIES to glob recurse, which can be
used to simplify this code greatly.
llvm-svn: 272217
|
|
|
|
| |
llvm-svn: 272216
|
|
|
|
| |
llvm-svn: 272215
|
|
|
|
| |
llvm-svn: 272214
|
|
|
|
|
|
|
|
| |
Now that we are on CMake 3.4.3 we no longer need a version check around this.
This is the clang side of r272211.
llvm-svn: 272213
|
|
|
|
|
|
|
|
| |
Now that we are on CMake 3.4.3 we no longer need a version check around this.
This is the libcxx side of r272211.
llvm-svn: 272212
|
|
|
|
|
|
| |
Now that we are on CMake 3.4.3 we no longer need a version check around this.
llvm-svn: 272211
|
|
|
|
|
|
| |
This improves the debuggability of the pass.
llvm-svn: 272210
|
|
|
|
|
|
|
|
| |
For complex rewrittings, which do not occur currently, the related
machine instruction may have been deleted in the process. Therefore, do
not try to print it after the mapping is applied.
llvm-svn: 272209
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
computation of the end of range.
Refactor the code so that we do not compute in two different places the
end iterator for the range of new virtual registers for a given operand.
Although this refactoring was intended as NFC, this is not the case
because it actually fixes a bug where we were returning a range off by 1
(too long). Right now, this could not result in an actual bug because we
were accessing this range via the BreakDown size of the related operand.
llvm-svn: 272208
|
|
|
|
|
|
| |
Improve debuggability of the OperandsMapper helper class.
llvm-svn: 272207
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This fixes PR27617.
Bug description: The SLPVectorizer asserts on encountering GEPs with different index types, such as i8 and i64.
The patch includes a simple relaxation of the assert to allow constants being of different types, along with a regression test that will provoke the unrelaxed assert.
Reviewers: nadav, mzolotukhin
Subscribers: JesperAntonsson, llvm-commits, mzolotukhin
Differential Revision: http://reviews.llvm.org/D20685
Patch by Jesper Antonsson!
llvm-svn: 272206
|
|
|
|
|
|
|
|
|
| |
If the symbol is local we don't need to create a R_X86_64_DTPOFF64, we
can just write the correct value in the got.
Should fix pr28018.
llvm-svn: 272205
|
|
|
|
| |
llvm-svn: 272204
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
backward-hot-prob consistently.
Summary:
Consider the following diamond CFG:
A
/ \
B C
\/
D
Suppose A->B and A->C have probabilities 81% and 19%. In block-placement, A->B is called a hot edge and the final placement should be ABDC. However, the current implementation outputs ABCD. This is because when choosing the next block of B, it checks if Freq(C->D) > Freq(B->D) * 20%, which is true (if Freq(A) = 100, then Freq(B->D) = 81, Freq(C->D) = 19, and 19 > 81*20%=16.2). Actually, we should use 25% instead of 20% as the probability here, so that we have 19 < 81*25%=20.25, and the desired ABDC layout will be generated.
Reviewers: djasper, davidxl
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20989
llvm-svn: 272203
|
|
|
|
| |
llvm-svn: 272202
|
|
|
|
|
|
| |
This was called out on the list a long time ago and just got pointed out to me again. Need to fix it before I forget.
llvm-svn: 272201
|