| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
| |
In preparation for porting to the new PM.
Patch by Jake VanAdrighem! (review mainly by me/Justin)
Differential Revision: http://reviews.llvm.org/D20610
llvm-svn: 271607
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The module pass pipeline includes a late LICM run after loop
unrolling. LCSSA is implicitly run as a pass dependency of LICM. However no
cleanup pass was run after this, so the LCSSA nodes ended in the optimized output.
Reviewers: hfinkel, mehdi_amini
Subscribers: majnemer, bruno, mzolotukhin, mehdi_amini, llvm-commits
Differential Revision: http://reviews.llvm.org/D20606
llvm-svn: 271602
|
| |
|
|
| |
llvm-svn: 271601
|
| |
|
|
| |
llvm-svn: 271600
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is effectively a revert of:
http://reviews.llvm.org/rL249702 - [InstCombine] transform masking off of an FP sign bit into a fabs() intrinsic call (PR24886)
and:
http://reviews.llvm.org/rL249701 - [ValueTracking] teach computeKnownBits that a fabs() clears sign bits
and a reimplementation as a DAG combine for targets that have IEEE754-compliant fabs/fneg instructions.
This is intended to resolve the objections raised on the dev list:
http://lists.llvm.org/pipermail/llvm-dev/2016-April/098154.html
and:
https://llvm.org/bugs/show_bug.cgi?id=24886#c4
In the interest of patch minimalism, I've only partly enabled AArch64. PowerPC, MIPS, x86 and others can enable later.
Differential Revision: http://reviews.llvm.org/D19391
llvm-svn: 271573
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is effectively NFC because we already do this transform after r175380:
http://reviews.llvm.org/rL175380
and also via foldBoolSextMaskToSelect().
This change should just make it a bit more efficient to match the pattern.
The original guard was added in r95058:
http://reviews.llvm.org/rL95058
A sampling of codegen for current in-tree targets shows no problems. This
makes sense given that we're already producing the vector selects via the
other transforms.
llvm-svn: 271554
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Fills the cfrag struct variable with an array of struct information
variables.
Reviewers: aizatsky, bruening
Subscribers: bruening, kcc, vitalybuka, eugenis, llvm-commits, zhaoqin
Differential Revision: http://reviews.llvm.org/D20661
llvm-svn: 271547
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Inline virtual functions has linkeonceodr linkage (emitted in comdat on
supporting targets). If the vtable for the class is not emitted in the
defining module, function won't be address taken thus its address is not
recorded. At the mercy of the linker, if the per-func prf_data from this
module (in comdat) is picked at link time, we will lose mapping from
function address to its hash val. This leads to missing icall promotion.
The second test case (currently disabled) in compiler_rt (r271528):
instrprof-icall-prom.test demostrates the bug. The first profile-use
subtest is fine due to linker order difference.
With this change, no missing icall targets is found in instrumented clang's
raw profile.
llvm-svn: 271532
|
| |
|
|
| |
llvm-svn: 271467
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
To improve readability.
PR27453
Reviewers: kcc, eugenis, aizatsky
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20761
llvm-svn: 271447
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for the new pass manager to MemorySSA pass.
Change MemorySSA to be computed eagerly upon construction.
Change MemorySSAWalker to be owned by the MemorySSA object that creates
it.
Reviewers: dberlin, george.burgess.iv
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D19664
llvm-svn: 271432
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, whenever we needed a vector IV, we would create it on the fly,
by splatting the scalar IV and adding a step vector. Instead, we can create a
real vector IV. This tends to save a couple of instructions per iteration.
This only changes the behavior for the most basic case - integer primary
IVs with a constant step.
Differential Revision: http://reviews.llvm.org/D20315
llvm-svn: 271410
|
| |
|
|
|
|
|
|
|
|
| |
This will be necessary to allow the global merge pass to attach
multiple debug info metadata nodes to global variables once we reverse
the edge from DIGlobalVariable to GlobalVariable.
Differential Revision: http://reviews.llvm.org/D20414
llvm-svn: 271358
|
| |
|
|
|
|
|
|
|
|
| |
This patch fixes bug https://llvm.org/bugs/show_bug.cgi?id=27897.
When query memory access cost, current SLP always passes in alignment value of 1 (unaligned), so it gets a very high cost of scalar memory access, and wrongly vectorize memory loads in the test case.
It can be fixed by simply giving correct alignment.
llvm-svn: 271333
|
| |
|
|
|
|
|
| |
Another chapter in the story. GlobalsAA should be preserved, as
well as the CFG.
llvm-svn: 271307
|
| |
|
|
|
|
|
| |
When this pass was originally ported, AA wasn't available for the
new PM. Now it is, so we can cache properly.
llvm-svn: 271303
|
| |
|
|
|
|
|
|
|
|
|
| |
The assumption, made in insert() that weak functions are always inserted after strong functions,
is only true in the first round of adding functions.
In subsequent rounds this is no longer guaranteed , because we might remove a strong function from the tree (because it's modified) and add it later,
where an equivalent weak function already exists in the tree.
This change removes the assert in insert() and explicitly enforces a weak->strong order.
This also removes the need of two separate loops in runOnModule().
llvm-svn: 271299
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Creates a global variable containing preliminary information
for the cache-fragmentation tool runtime.
Passes a pointer to the variable (null if no variable is created) to the
compilation unit init and exit routines in the runtime.
Reviewers: aizatsky, bruening
Subscribers: filcab, kubabrecka, bruening, kcc, vitalybuka, eugenis, llvm-commits, zhaoqin
Differential Revision: http://reviews.llvm.org/D20541
llvm-svn: 271298
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
Found by clang-tidy's misc-move-const-arg. While there drop some
obsolete c_str() calls.
llvm-svn: 271181
|
| |
|
|
|
|
| |
While here, add a FIXME for setPreserveCFG().
llvm-svn: 271159
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 271149
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 271097
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
It was triggering an msan bot.
Revert "[IRPGO] Set the function entry count metadata."
This reverts commit r271090.
Revert "[IRPGO] Centralize the function attribute inliner hint logic. NFC."
This reverts commit r271089.
llvm-svn: 271091
|
| |
|
|
| |
llvm-svn: 271090
|
| |
|
|
|
|
| |
This keeps the logic in the same function.
llvm-svn: 271089
|
| |
|
|
|
|
|
|
|
|
|
| |
Summary:
unused variables in Release mode:
BasicBlock *Header
unsigned OrigCount
put under DEBUG
From: Evgeny Stupachenko <evstupac@gmail.com>
llvm-svn: 271076
|
| |
|
|
| |
llvm-svn: 271072
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Unroll factor (Count) calculations moved to a new function.
Early exits on pragma and "-unroll-count" defined factor added.
New type of unrolling "Force" introduced (previously used implicitly).
New unroll preference "AllowRemainder" introduced and set "true" by default.
(should be set to false for architectures that suffers from it).
Reviewers: hfinkel, mzolotukhin, zzheng
Differential Revision: http://reviews.llvm.org/D19553
From: Evgeny Stupachenko <evstupac@gmail.com>
llvm-svn: 271071
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clang will have -fsanitize-address-use-after-scope flag.
PR27453
Reviewers: kcc, eugenis, aizatsky
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20750
llvm-svn: 271067
|
| |
|
|
| |
llvm-svn: 271062
|
| |
|
|
|
|
| |
We need to enhance the pattern matching on these to look through bitcasts.
llvm-svn: 271051
|
| |
|
|
| |
llvm-svn: 271041
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: dberlin, reames, george.burgess.iv
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D20743
llvm-svn: 271034
|
| |
|
|
|
|
| |
It's faster and easier to read.
llvm-svn: 271018
|
| |
|
|
|
|
|
|
| |
When we traced through a phi node looking for floating-point reductions, we
forgot whether we'd ever seen an instruction without fast-math flags (that
would block vectorization). This propagates it through to the end.
llvm-svn: 271015
|
| |
|
|
| |
llvm-svn: 271014
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: This patch removes dependency from sample profile pass to instcombine pass.
Reviewers: davidxl, dnovillo
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20501
llvm-svn: 271009
|
| |
|
|
|
|
| |
No functionality change intended, maybe a tiny performance improvement.
llvm-svn: 270997
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently we consider that each constant has itself as a base value. I.e "base(const) = const".
This introduces couple of problems when we are trying to avoid reporting constants in statepoint live sets:
1. When querying "base( phi(const1, const2) )" we will get "phi(const1, const2)" as a base pointer. Since
it's not a constant we will record it in a stack map. However on practice we don't want this to happen
(constant are never relocated).
2. base( phi(const, gc ptr) ) = phi( const, base(gc ptr) ). This particular case imposes challenge on our
runtime - we don't expect to see constant base pointers other than null. This problems can be avoided
by treating all constant as if they were derived from null pointer base. I.e in a first case we will
not include constant pointer in a stack map at all. In a second case we will get "phi(null, base(gc ptr))"
as a base pointer which is a lot more convenient.
Differential Revision: http://reviews.llvm.org/D20584
llvm-svn: 270993
|
| |
|
|
|
|
|
| |
clang-tidy's performance-unnecessary-copy-initialization with some manual
fixes. No functional changes intended.
llvm-svn: 270988
|