| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
not isEquality().
llvm-svn: 135296
|
| |
|
|
| |
llvm-svn: 135265
|
| |
|
|
| |
llvm-svn: 135040
|
| |
|
|
| |
llvm-svn: 134833
|
| |
|
|
| |
llvm-svn: 134441
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
outside the loop and reducible.
This more completely hides them from LSR, which isn't usually able to
do anything meaningful with non-affine expressions anyway, and this
consequently hides them from SCEVExpander, which is acutely unprepared
for non-affine expressions.
Replace test/CodeGen/X86/lsr-nonaffine.ll with a new test that tests
the new behavior.
This works around the bug in PR10117 / rdar://problem/9633149, and is
generally an improvement besides.
llvm-svn: 134268
|
| |
|
|
| |
llvm-svn: 134223
|
| |
|
|
| |
llvm-svn: 133995
|
| |
|
|
| |
llvm-svn: 133992
|
| |
|
|
| |
llvm-svn: 133988
|
| |
|
|
|
|
| |
passes as well.
llvm-svn: 133904
|
| |
|
|
| |
llvm-svn: 133828
|
| |
|
|
| |
llvm-svn: 133776
|
| |
|
|
| |
llvm-svn: 133767
|
| |
|
|
| |
llvm-svn: 133766
|
| |
|
|
|
|
|
|
| |
This reverts commit e8e00f5efb4a22238f2407bf813de4606f30c5aa.
The cmake build on OS X is still broken.
llvm-svn: 133718
|
| |
|
|
|
|
| |
It broke the build worse.
llvm-svn: 133716
|
| |
|
|
| |
llvm-svn: 133714
|
| |
|
|
|
|
|
|
| |
It has only one user. This eliminates the last include of
config.h from the public headers -- ideally, config.h
shouldn't even be installed by `make install` anymore.
llvm-svn: 133713
|
| |
|
|
| |
llvm-svn: 133642
|
| |
|
|
| |
llvm-svn: 133518
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
all over the place in different styles and variants. Standardize on two
preferred entrypoints: one that takes a StructType and ArrayRef, and one that
takes StructType and varargs.
In cases where there isn't a struct type convenient, we now add a
ConstantStruct::getAnon method (whose name will make more sense after a few
more patches land).
It would be "really really nice" if the ConstantStruct::get and
ConstantVector::get methods didn't make temporary std::vectors.
llvm-svn: 133412
|
| |
|
|
| |
llvm-svn: 133362
|
| |
|
|
| |
llvm-svn: 133351
|
| |
|
|
|
|
|
|
| |
BranchProbabilityInfo (expect setEdgeWeight which is not available here).
Branch Weights are kept in MachineBasicBlocks. To turn off this analysis
set -use-mbpi=false.
llvm-svn: 133184
|
| |
|
|
|
|
|
|
|
|
| |
block. This prevents (at least in some cases) O(N^2) runtime in passes like DSE.
The limit in this patch is probably too high, but it is enough to stop DSE from going completely insane on a testcase I have (which has a single block with around 50,000 non-aliasing stores in it).
rdar://9471075
llvm-svn: 133111
|
| |
|
|
|
|
| |
dependence for the given instruction exists in the given block". This cleans up all the existing hacks in memdep which represent this concept by returning clobber with various unrelated instructions.
llvm-svn: 133031
|
| |
|
|
| |
llvm-svn: 132925
|
| |
|
|
|
|
|
|
|
| |
Patch by: Jakub Staszak!
Introduces BranchProbability. Changes unsigned to uint32_t all over and
uint64_t only when overflow is expected.
llvm-svn: 132867
|
| |
|
|
|
|
|
|
| |
default, since it usually has very few elements. This speeds up
alias queries in many cases, because AliasCache.clear() doesn't
have to visit as many buckets.
llvm-svn: 132862
|
| |
|
|
| |
llvm-svn: 132797
|
| |
|
|
|
|
| |
is disabled.
llvm-svn: 132632
|
| |
|
|
|
|
|
|
|
|
| |
redundant with partially-aliasing loads.
When computing what portion of a clobbering load value is needed,
it doesn't consider phi-translation which may have occurred
between the clobbing load and the redundant load.
llvm-svn: 132631
|
| |
|
|
| |
llvm-svn: 132625
|
| |
|
|
| |
llvm-svn: 132620
|
| |
|
|
| |
llvm-svn: 132616
|
| |
|
|
|
|
|
|
|
|
|
| |
BranchProbabilityInfo provides an interface for IR passes to query the
likelihood that control follows a CFG edge. This patch provides an
initial implementation of static branch predication that will populate
BranchProbabilityInfo for branches with no external profile
information using very simple heuristics. It currently isn't hooked up
to any external profile data, so static prediction does all the work.
llvm-svn: 132613
|
| |
|
|
|
|
| |
it exposed are fixed.
llvm-svn: 132611
|
| |
|
|
|
|
|
|
|
| |
queries in the case of a DAG, where a query reaches a node
visited earlier, but it's not on a cycle. This avoids
MayAlias results in cases where BasicAA is expected to
return MustAlias or PartialAlias in order to protect TBAA.
llvm-svn: 132609
|
| |
|
|
|
|
| |
of conservatively choosing MayAlias.
llvm-svn: 132579
|
| |
|
|
| |
llvm-svn: 132558
|
| |
|
|
|
|
| |
typedef decl itself. Use extra parameter to communicate this to DIBuilder.
llvm-svn: 132556
|
| |
|
|
|
|
|
|
|
|
|
|
| |
instead of the first instruction in the block. This is a bit of a hack; "Clobber" isn't really the right marking in the first place. memdep doesn't really have any way of properly expressing "unanalyzable" at the moment. Using it on the terminator is much less ambiguous than using it on an arbitrary instruction, though.
In the given testcase, the "Clobber" was pointing to a load, and GVN was incorrectly assuming that meant that the "Clobber" load overlapped the load being analyzed (when they are actually unrelated).
The included testcase tests both this commit and r132434.
Part two of rdar://9429882. (r132434 was mislabeled.)
llvm-svn: 132442
|
| |
|
|
|
|
|
|
| |
is is deemed unanalyzable (and we execute one of the "goto PredTranslationFailure" statements), make sure we don't put information about the predecessors of that block into the returned data structures; this can lead to, among other things, extraneous results (which will confuse passes using memdep). Fixes an assert in GVN compiling ruby. Part of rdar://problem/9521954 .
Testcase coming up soon.
llvm-svn: 132434
|
| |
|
|
| |
llvm-svn: 132416
|
| |
|
|
|
|
| |
so that their sign extended forms are congruent when no overflow occurs.
llvm-svn: 132360
|
| |
|
|
|
|
| |
space, and the destination address space. Fix up the interface on MemIntrinsic and MemTransferInst to make this clear, and fix InstructionDereferencesPointer in LazyValueInfo.cpp to use the interface properly.
llvm-svn: 132356
|
| |
|
|
| |
llvm-svn: 132202
|
| |
|
|
|
|
|
| |
crc32.[8|16|32] have been renamed to .crc32.32.[8|16|32] and
crc64.[8|16|32] have been renamed to .crc32.64.[8|64].
llvm-svn: 132163
|
| |
|
|
|
|
|
|
| |
metrics so that very long functions
with few basic blocks are not re-analyzed.
llvm-svn: 131994
|