| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
This patch is to remove -lto-no-discard-value-names flag and
instead to use -save-temps as we discussed in the post-commit
review thread for r267020.
Differential Revision: http://reviews.llvm.org/D19437
llvm-svn: 267230
|
| |
|
|
| |
llvm-svn: 267229
|
| |
|
|
|
|
| |
Using LLVM_ENABLE_WARNINGS=ON is good idea.
llvm-svn: 267228
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
file is present
Rather than relying on the gmlt-like data emitted into the .o/executable
which only contains the simple name of any inlined functions, use the
.dwo file if present.
Test symbolication with/without a .dwo, and the old test that was
testing behavior when no gmlt-like data was present. (I haven't included
a test of non-gmlt-like data + no .dwo (that would be akin to
symbolication with no debug info) but we could add one for completeness)
The test was simplified a bit to be a little clearer (unoptimized, force
inline, using a function call as the inlined entity) and regenerated
with ToT clang. For the no-gmlt-like-data case, I modified Clang back to
its old behavior temporarily & the .dwo file is identical so it is
shared between the two executables.
llvm-svn: 267227
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: The clang assembler assumes that the discriminator remains the same when there is source line change. The correct behavior is that when there is line change, discriminator will automatically reset to 0.
Reviewers: dnovillo, davidxl, echristo
Subscribers: echristo, llvm-commits
Differential Revision: http://reviews.llvm.org/D19436
llvm-svn: 267226
|
| |
|
|
|
|
|
|
| |
I'm for some reason having a problem producing a test.
It should be the same as test/MC/X86/invalid_opcode.s,
but llvm-mc seems to ignore random bytes.
llvm-svn: 267225
|
| |
|
|
|
|
|
|
|
|
| |
Write out the PGOFuncName meta data if PGOFuncName is different from function's
raw name. This should only apply to internal linkage functions. This is to be
consumed by indirect-call promotion when called in LTO optimization pass.
Differential Revision: http://reviews.llvm.org/D18624
llvm-svn: 267224
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This intrinsic takes two arguments, ``%ptr`` and ``%offset``. It loads
a 32-bit value from the address ``%ptr + %offset``, adds ``%ptr`` to that
value and returns it. The constant folder specifically recognizes the form of
this intrinsic and the constant initializers it may load from; if a loaded
constant initializer is known to have the form ``i32 trunc(x - %ptr)``,
the intrinsic call is folded to ``x``.
LLVM provides that the calculation of such a constant initializer will
not overflow at link time under the medium code model if ``x`` is an
``unnamed_addr`` function. However, it does not provide this guarantee for
a constant initializer folded into a function body. This intrinsic can be
used to avoid the possibility of overflows when loading from such a constant.
Differential Revision: http://reviews.llvm.org/D18367
llvm-svn: 267223
|
| |
|
|
| |
llvm-svn: 267222
|
| |
|
|
| |
llvm-svn: 267221
|
| |
|
|
|
|
| |
Instead of iterating over all vectors and skipping integers.
llvm-svn: 267220
|
| |
|
|
| |
llvm-svn: 267219
|
| |
|
|
| |
llvm-svn: 267218
|
| |
|
|
|
|
| |
If the target allows the alignment, this should be OK.
llvm-svn: 267217
|
| |
|
|
|
|
|
|
|
| |
This patch changes the interface for createPGOFuncNameMetadata() where we add
another PGOFuncName argument.
Differential Revision: http://reviews.llvm.org/D19433
llvm-svn: 267216
|
| |
|
|
|
|
| |
The existing code turned out to be completely correct when auditted. Thus, only minor code changes and adding a couple of tests.
llvm-svn: 267215
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
We can fold compares to false when two distinct allocations within a
function are compared for equality.
Patch by Anna Thomas!
Reviewers: majnemer, reames, sanjoy
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D19390
llvm-svn: 267214
|
| |
|
|
|
|
| |
Now it is doable because LinkerScript is a template class.
llvm-svn: 267212
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The relative vtable ABI (PR26723) needs PLT relocations to refer to virtual
functions defined in other DSOs. The unnamed_addr attribute means that the
function's address is not significant, so we're allowed to substitute it
with the address of a PLT entry.
Also includes a bonus feature: addends for COFF image-relative references.
Differential Revision: http://reviews.llvm.org/D17938
llvm-svn: 267211
|
| |
|
|
|
|
|
|
| |
operations
Extend the type canonicalization logic to work for unordered atomic loads and stores. Note that while this change itself is fairly simple and low risk, there's a reasonable chance this will expose problems in the backends by suddenly generating IR they wouldn't have seen before. Anything of this nature will be an existing bug in the backend (you could write an atomic float load), but this will definitely change the frequency with which such cases are encountered. If you see problems, feel free to revert this change, but please make sure you collect a test case.
llvm-svn: 267210
|
| |
|
|
|
|
| |
If the target allows the alignment, this should still be OK.
llvm-svn: 267209
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch only implements support for version scripts of the form:
{ [ global: symbol1; symbol2; [...]; symbolN; ] local: *; };
No wildcards are supported, other than for the local entry. Symbol versioning
is also not supported.
It works by introducing a new Symbol flag which tracks whether a symbol
appears in the global section of a version script.
This patch also simplifies the logic in SymbolBody::isPreemptible(), and
teaches it to handle the case where symbols with default visibility in DSOs
do not appear in the dynamic symbol table because of a version script.
Fixes PR27482.
Differential Revision: http://reviews.llvm.org/D19430
llvm-svn: 267208
|
| |
|
|
|
|
| |
Sorry about the noise.
llvm-svn: 267207
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The opcode for the optimized branch does not depend on the size
of the activate bits in the AND masks, but the AND opcode itself.
Indeed, we need to use a X or W variant based on the AND variant
not based on whether the mask fits into the related variant.
Otherwise, we may end up using the W variant of the optimized branch
for 64-bit register inputs!
This fixes the last make check verifier issues for AArch64: PR27479.
llvm-svn: 267206
|
| |
|
|
| |
llvm-svn: 267204
|
| |
|
|
|
|
| |
r267094 that has been reverted
llvm-svn: 267203
|
| |
|
|
| |
llvm-svn: 267202
|
| |
|
|
| |
llvm-svn: 267201
|
| |
|
|
| |
llvm-svn: 267200
|
| |
|
|
| |
llvm-svn: 267199
|
| |
|
|
|
|
| |
This will make the port to the new PM easier to follow.
llvm-svn: 267198
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: This change will shorten memset if the beginning of memset is overwritten by later stores.
Reviewers: hfinkel, eeckstein, dberlin, mcrosier
Subscribers: mgrang, mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D18906
llvm-svn: 267197
|
| |
|
|
|
|
|
| |
Also add a very basic test, since apparently there aren't any tests
for DCE whatsoever to add the new pass version to.
llvm-svn: 267196
|
| |
|
|
| |
llvm-svn: 267195
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r267164.
Revert "Trying to fix the windows build."
This reverts commit r267168.
Debugging a bootstrap problem.
llvm-svn: 267194
|
| |
|
|
| |
llvm-svn: 267191
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
E.g. for:
!1 = {"llvm.distribute", i32 1}
it now returns the MDOperand for 1.
I will use this in LoopDistribution to check the value of the metadata.
Note that the change is backward-compatible with its current use in
LoopVersioningLICM. An Optional implicitly converts to a bool depending
whether it contains a value or not.
llvm-svn: 267190
|
| |
|
|
|
|
|
|
|
| |
Avoid quadratic complexity in unusually large basic blocks by limiting
the size of the ready lists.
Differential Revision: http://reviews.llvm.org/D19349
llvm-svn: 267189
|
| |
|
|
|
|
|
|
| |
before LTO.
This ensures that these features work correctly with bitcode files.
llvm-svn: 267188
|
| |
|
|
| |
llvm-svn: 267187
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For various reasons, involving dllexport and class linkage compuations,
we have to wait until after the semicolon after a class declaration to
emit inline methods. These are "deferred" decls. Before this change,
finishing the tag decl would trigger us to deserialize some PCH so that
we could make a "pretty" IR-level type. Deserializing the PCH triggered
calls to HandleTopLevelDecl, which, when done, checked the deferred decl
list, and emitted some dllexported decls that weren't ready.
Avoid this re-entrancy. Deferred decls should not get emitted when a tag
is finished, they should only be emitted after a real top level decl in
the main file.
llvm-svn: 267186
|
| |
|
|
|
|
|
|
| |
declared as a definition.
This fixes the machine verifier error for CodeGen/AArch64/nzcv-save.ll.
llvm-svn: 267185
|
| |
|
|
| |
llvm-svn: 267184
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
These are properties of a symbol name, rather than a particular instance
of a symbol in an object file. We can simplify the code by collecting these
properties in Symbol.
The MustBeInDynSym flag has been renamed ExportDynamic, as its semantics
have been changed to be the same as those of --dynamic-list and
--export-dynamic-symbol, which do not cause hidden symbols to be exported.
Differential Revision: http://reviews.llvm.org/D19400
llvm-svn: 267183
|
| |
|
|
|
|
|
|
| |
In the next change, I am generalizing the function
findStringMetadataForLoop and I want to make sure I don't break this.
Looks like there was no coverage for this so far.
llvm-svn: 267182
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19389
llvm-svn: 267181
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We used to simply set the kill flags to true when transforming a scalar
instruction to a vector one.
SrcScalar1 = copy SrcVector1
... = opScalar SrcScalar1
=>
SrcScalar1 = copy SrcVector1
... = opVector SrcVector1<kill>
This is obviously wrong. The proper update consists in:
1. Propagate the kill status from the copy to the new opVector
2. Reset the kill status on the copy, since the live-range of
SrcVector1 got extended.
This fixes some of the machine verifier errors for AArch64 with make check.
llvm-svn: 267180
|
| |
|
|
|
|
|
|
|
|
| |
Rather than checking both stdout and stderr simultaneously, split it into two
tests. This apparently breaks on Windows where MSVCRT does not buffer output
correctly. NFC.
Thanks to chapuni for bringing the issue to my attention!
llvm-svn: 267179
|
| |
|
|
| |
llvm-svn: 267178
|
| |
|
|
|
|
|
|
|
| |
Summary: eq imply [u|s]ge and [u|s]le are true.
Remove redundant logic by implementing isImpliedFalseByMatchingCmp(Pred1, Pred2)
as isImpliedTrueByMatchingCmp(Pred1, getInversePredicate(Pred2)).
llvm-svn: 267177
|