| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
the output file.
llvm-svn: 268184
|
| |
|
|
|
|
| |
with an AddedComplexity that made this unreachable.
llvm-svn: 268183
|
| |
|
|
|
|
| |
the output file.
llvm-svn: 268181
|
| |
|
|
| |
llvm-svn: 268180
|
| |
|
|
|
|
| |
the same thing but vector_extract is deprecated. NFC
llvm-svn: 268179
|
| |
|
|
|
|
|
|
|
|
|
| |
There are currently some bugs in tree around SCEV caching an incorrect
loop disposition. Printing out loop dispositions will let us write
whitebox tests as those are fixed.
The dispositions are printed as a list in "inside out" order,
i.e. innermost loop first.
llvm-svn: 268177
|
| |
|
|
| |
llvm-svn: 268176
|
| |
|
|
| |
llvm-svn: 268174
|
| |
|
|
|
|
|
| |
The earlier version of the resolver code did not save NEON state, so it would
have broken any callees that used floating point.
llvm-svn: 268173
|
| |
|
|
|
|
|
| |
Convert to using some range based loops, avoid unnecessary variables for
unchecked casts. NFC.
llvm-svn: 268165
|
| |
|
|
| |
llvm-svn: 268164
|
| |
|
|
| |
llvm-svn: 268163
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SystemZ on Linux currently has 53-bit address space. In theory, the hardware
could support a full 64-bit address space, but that's not supported due to
kernel limitations (it'd require 5-level page tables), and there are no plans
for that. The default process layout stays within first 4TB of address space
(to avoid creating 4-level page tables), so any offset >= (1 << 42) is fine.
Let's use 1 << 52 here, ie. exactly half the address space.
I've originally used 7 << 50 (uses top 1/8th of the address space), but ASan
runtime assumes there's some space after the shadow area. While this is
fixable, it's simpler to avoid the issue entirely.
Also, I've originally wanted to have the shadow aligned to 1/8th the address
space, so that we can use OR like X86 to assemble the offset. I no longer
think it's a good idea, since using ADD enables us to load the constant just
once and use it with register + register indexed addressing.
Differential Revision: http://reviews.llvm.org/D19650
llvm-svn: 268161
|
| |
|
|
|
|
|
|
| |
elements. NFCI.
Make use of Constant::getAggregateElement instead of checking constant types - first step towards adding support for UNDEF mask elements.
llvm-svn: 268158
|
| |
|
|
|
|
| |
This was supposed to be part of r268143.
llvm-svn: 268154
|
| |
|
|
|
|
|
|
|
|
|
| |
If, in between the splat and the load (which does an implicit splat), there is
a read of the splat register, then that register must have another earlier
definition. In that case, we can't replace the load's destination register with
the splat's destination register.
Unfortunately, I don't have a small or non-fragile test case.
llvm-svn: 268152
|
| |
|
|
| |
llvm-svn: 268150
|
| |
|
|
|
|
|
|
|
|
| |
If a guard call being lowered by LowerGuardIntrinsics has the
`!make.implicit` metadata attached, then reattach the metadata to the
branch in the resulting expanded form of the intrinsic. This allows us
to implement null checks as guards and still get the benefit of implicit
null checks.
llvm-svn: 268148
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
support multiple induction variables
This patch enable loop reroll for the following case:
for(int i=0; i<N; i += 2) {
S += *a++;
S += *a++;
};
Differential Revision: http://reviews.llvm.org/D16550
llvm-svn: 268147
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This includes a hazard recognizer implementation to replace some of
the hazard handling we had during frame index elimination.
Reviewers: arsenm
Subscribers: qcolombet, arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D18602
llvm-svn: 268143
|
| |
|
|
| |
llvm-svn: 268142
|
| |
|
|
|
|
| |
Makes the new method to set data needed by debug dump.
llvm-svn: 268130
|
| |
|
|
|
|
|
|
|
| |
This moves some logic added to EarlyCSE in rL268120 into
`llvm::isInstructionTriviallyDead`. Adds a test case for DCE to
demonstrate that passes other than EarlyCSE can now pick up on the new
information.
llvm-svn: 268126
|
| |
|
|
| |
llvm-svn: 268122
|
| |
|
|
|
|
| |
Fix a FIXME. Disable loop alignment if compiled with -Oz now.
llvm-svn: 268121
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This change teaches EarlyCSE some basic properties of guard intrinsics:
- Guard intrinsics read all memory, but don't write to any memory
- After a guard has executed, the condition it was guarding on can be
assumed to be true
- Guard intrinsics on a constant `true` are no-ops
Reviewers: reames, hfinkel
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D19578
llvm-svn: 268120
|
| |
|
|
|
|
|
|
|
|
| |
If a block has no successors because it ends in unreachable,
this was accessing an invalid iterator.
Also stop counting instructions that don't emit any
real instructions.
llvm-svn: 268119
|
| |
|
|
| |
llvm-svn: 268116
|
| |
|
|
|
|
|
|
| |
elements. NFCI.
Make use of Constant::getAggregateElement instead of checking constant types - first step towards adding support for UNDEF mask elements.
llvm-svn: 268115
|
| |
|
|
|
|
|
| |
The ORC compile callbacks and indirect stubs APIs will now work for AArc64,
allowing functions to be lazily compiled and/or updated.
llvm-svn: 268112
|
| |
|
|
|
|
| |
No functionality change is intended.
llvm-svn: 268108
|
| |
|
|
|
|
|
|
| |
The implemented heuristic has a large body of code which better sits
in its own function for better readability. It also allows adding more
heuristics easier in the future.
llvm-svn: 268107
|
| |
|
|
| |
llvm-svn: 268106
|
| |
|
|
| |
llvm-svn: 268105
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19550
llvm-svn: 268104
|
| |
|
|
| |
llvm-svn: 268099
|
| |
|
|
|
|
|
|
| |
Move to addPreEmitPass. This is so it runs after post-RA
scheduling so we can merge s_nops emitted by the scheduler
and hazard recognizer.
llvm-svn: 268095
|
| |
|
|
| |
llvm-svn: 268094
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19333
llvm-svn: 268089
|
| |
|
|
| |
llvm-svn: 268088
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes two somewhat related bugs in MemorySSA's caching
walker. These bugs were found because D19695 brought up the problem
that we'd have defs cached to themselves, which is incorrect.
The bugs this fixes are:
- We would sometimes skip the nearest clobber of a MemoryAccess, because
we would query our cache for a given potential clobber before
checking if the potential clobber is the clobber we're looking for.
The cache entry for the potential clobber would point to the nearest
clobber *of the potential clobber*, so if that was a cache hit, we'd
ignore the potential clobber entirely.
- There are times (sometimes in DFS, sometimes in the getClobbering...
functions) where we would insert cache entries that say a def
clobbers itself.
There's a bit of common code between the fixes for the bugs, so they
aren't split out into multiple commits.
This patch also adds a few unit tests, and refactors existing tests a
bit to reduce the duplication of setup code.
llvm-svn: 268087
|
| |
|
|
|
|
|
|
|
|
|
|
| |
matchSelectPattern attempts to see through casts which mask min/max
patterns from being more obvious. Under certain circumstances, it would
misidentify a sequence of instructions as a min/max because it assumed
that folding casts would preserve the result. This is not the case for
floating point <-> integer casts.
This fixes PR27575.
llvm-svn: 268086
|
| |
|
|
|
|
|
|
|
|
| |
There are probably hundreds of crashers we can find by fuzzing
more. For now we do the simplest possible validation of the
block size. Later, more complicated validations can verify that
other fields of the super block such as directory size, number
of blocks, agree with the size of the file etc.
llvm-svn: 268084
|
| |
|
|
|
|
| |
Instead of SelectionDAG::getConstant directly to make it more obvious that we're creating target constants.
llvm-svn: 268074
|
| |
|
|
| |
llvm-svn: 268072
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The motivation for this change is that PDB has the notion of
streams and substreams. Substreams often consist of variable
length structures that are convenient to be able to treat as
guaranteed, contiguous byte arrays, whereas the streams they
are contained in are not necessarily so, as a single stream
could be spread across many discontiguous blocks.
So, when processing data from a substream, we want to be able
to assume that we have a contiguous byte array so that we can
cast pointers to variable length arrays and such.
This leads to the question of how to be able to read the same
data structure from either a stream or a substream using the
same interface, which is where this patch comes in.
We separate out the stream's read state from the underlying
representation, and introduce a `StreamReader` class. Then
we change the name of `PDBStream` to `MappedBlockStream`, and
introduce a second kind of stream called a `ByteStream` which is
simply a sequence of contiguous bytes. Finally, we update all
of the std::vectors in `PDBDbiStream` to use `ByteStream` instead
as a proof of concept.
llvm-svn: 268071
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Callee name is not used to identify a callsite now, so do not read it during annotation.
Reviewers: davidxl, dnovillo
Subscribers: dnovillo, danielcdh, llvm-commits
Differential Revision: http://reviews.llvm.org/D19704
llvm-svn: 268069
|
| |
|
|
|
|
|
|
|
|
|
|
| |
getModRefBehavior(Function)
Reviewers: dberlin, chandlerc, hfinkel, reames, sanjoy
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D19730
llvm-svn: 268068
|
| |
|
|
|
|
| |
Cut and Paste.
llvm-svn: 268067
|
| |
|
|
|
|
|
|
|
|
|
| |
Rework M0 exclusion for SMRD."
Previously reverted by r267752.
r267733 review:
Differential Revision: http://reviews.llvm.org/D19342
llvm-svn: 268066
|