Marius Brehler [Thu, 28 May 2020 22:31:28 +0000 (00:31 +0200)]
[mlir] Add test to check if standalone dialect is registered
Summary: Add a test to check if the standalone dialect is registered within standalone-opt. Similar to the mlir-opt commandline.mlir test.
Reviewers: Kayjukh, stephenneuendorffer
Reviewed By: Kayjukh
Subscribers: mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, grosul1, frgossen, jurahul, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80764
Eric Christopher [Thu, 28 May 2020 21:54:49 +0000 (14:54 -0700)]
unsigned -> Register for readability.
Philip Reames [Thu, 28 May 2020 22:16:36 +0000 (15:16 -0700)]
[Tests] Update a few more statepoint tests
Starting to work through the hard ones now, progress likely to slow drammatically.
Craig Topper [Thu, 28 May 2020 22:10:29 +0000 (15:10 -0700)]
[X86] Fix a comment reference to registers R8L..R15L to use R8B..R15B like everywhere else. NFC
A new Intel SDM was released today that also fixes this issue in
some documentation.
Siva Chandra Reddy [Thu, 28 May 2020 21:57:36 +0000 (14:57 -0700)]
[libc][NFC][Obvious] Fix few header guards in src/threads.
Nicolas Vasilache [Thu, 28 May 2020 21:55:21 +0000 (17:55 -0400)]
[mlir][Vector] Fix vector.transfer alignment calculation
https://reviews.llvm.org/D79246 introduces alignment propagation for vector transfer operations. Unfortunately, the alignment calculation is incorrect and can result in crashes.
This revision fixes the calculation by using the natural alignment of the memref elemental type, instead of the resulting vector type.
If more alignment is desired, it can be done in 2 ways:
1. use a proper vector.type_cast to transform a memref<axbxcxdxf32> into a memref<axbxvector<cxdxf32>> giving a natural alignment of vector<cxdxf32>
2. add an alignment attribute to vector transfer operations and propagate it.
With this change the alignment in the relevant tests goes down from 128 to 4.
Lastly, a few minor cleanups are performed and the custom `isMinorIdentityMap` is deprecated.
Differential Revision: https://reviews.llvm.org/D80734
Siva Chandra Reddy [Thu, 28 May 2020 21:52:39 +0000 (14:52 -0700)]
[libc][NFC][Obvious] Remove line break from a CMake message.
The line break was giving an impression of something going wrong.
Christopher Tetreault [Thu, 28 May 2020 21:24:13 +0000 (14:24 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from mlir
Reviewers: efriedma, ftynse, c-rhodes, david-arm, rriddle
Reviewed By: ftynse
Subscribers: tschuett, rkruppe, psnobl, mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, stephenneuendorffer, Joonsoo, grosul1, frgossen, Kayjukh, jurahul, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80340
Arthur Eubanks [Thu, 28 May 2020 21:38:05 +0000 (14:38 -0700)]
Revert "Run Coverage pass before other *San passes under new pass manager, round 2"
This reverts commit
922fa2fce38b0bd97921b91ff1cdc57f18d3569c.
Philip Reames [Thu, 28 May 2020 21:34:47 +0000 (14:34 -0700)]
[Tests] Remove deopt operands from SafepointIRVerfier tests
This linter has nothing to do with deopt, and the operands had clearly been copied blindly from another source. Rather than migrate to deopt operand bundle, let's just simplify the tests.
Philip Reames [Thu, 28 May 2020 21:17:00 +0000 (14:17 -0700)]
[Tests] Switch a few statepoint tests to using operand bundles
We've started (D80598) the process of migrating away from the inline operand lists in statepoints to using explicit operand bundles. Update a few tests to reflect the new preference. More to come, these were simply the ones outside any obvious grouping.
Evgenii Stepanov [Thu, 28 May 2020 21:30:19 +0000 (14:30 -0700)]
[scudo] Fix deadlock in ScudoWrappersCTest.DisableForkEnable test.
pthread_cond_wait needs a loop around it to handle spurious wake ups,
as well as the case when signal runs before wait.
Vitaly Buka [Thu, 28 May 2020 21:25:44 +0000 (14:25 -0700)]
[NFC,StackSafety] clang-tidy warning fixes
Arthur Eubanks [Thu, 28 May 2020 06:12:36 +0000 (23:12 -0700)]
Run Coverage pass before other *San passes under new pass manager, round 2
Summary:
This was attempted once before in https://reviews.llvm.org/D79698, but
was reverted due to the coverage pass running in the wrong part of the
pipeline. This commit puts it in the same place as the other sanitizers.
This changes PassBuilder.OptimizerLastEPCallbacks to work on a
ModulePassManager instead of a FunctionPassManager. That is because
SanitizerCoverage cannot (easily) be split into a module pass and a
function pass like some of the other sanitizers since in its current
implementation it conditionally inserts module constructors based on
whether or not it successfully modified functions.
This fixes compiler-rt/test/msan/coverage-levels.cpp under the new pass
manager (last check-msan test).
Subscribers: hiraditya, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D80692
Christopher Tetreault [Thu, 28 May 2020 21:13:05 +0000 (14:13 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from Analysis
Reviewers: efriedma, fpetrogalli, kmclaughlin, sunfish
Reviewed By: fpetrogalli
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80324
Marius Brehler [Thu, 28 May 2020 19:34:44 +0000 (12:34 -0700)]
[mlir] Extend standalone example by standalone-translate
Extend the standalone by standalone-translate, based on mlir-translate.
Differential Revision: https://reviews.llvm.org/D80737
Stephen Neuendorffer [Thu, 28 May 2020 20:50:32 +0000 (13:50 -0700)]
[MLIR] Fix build when NVPTX is not enabled
In this case, neither target is selected, but there is still a dependence
on the MC library (through the TargetOptions.h include)
David Green [Thu, 28 May 2020 16:49:01 +0000 (17:49 +0100)]
[ARM] More tests for MVE LSR and float issues. NFC
Vedant Kumar [Wed, 27 May 2020 20:22:10 +0000 (13:22 -0700)]
[LiveDebugValues] Add cutoffs to avoid pathological behavior
Summary:
We received a report of LiveDebugValues consuming 25GB+ of RAM when
compiling code generated by Unity's IL2CPP scripting backend.
There's an initial 5GB spike due to repeatedly copying cached lists of
MachineBasicBlocks within the UserValueScopes members of VarLocs.
But the larger scaling issue arises due to the fact that prior to range
extension, there are 81K basic blocks and 156K DBG_VALUEs: given enough
memory, LiveDebugValues would insert 101 million MIs (I counted this by
incrementing a counter inside of VarLoc::BuildDbgValue).
It seems like LiveDebugValues would have to be rearchitected to support
this kind of input (we'd need some new represntation for DBG_VALUEs that
get inserted into ~every block via flushPendingLocs). OTOH, large globs
of auto-generated code are typically not debugged interactively.
So: add cutoffs to disable range extension when the input is too big. I
chose the cutoffs experimentally, erring on the conservative side. When
compiling a large collection of Apple software, range extension never
got disabled.
rdar://
63418929
Reviewers: aprantl, friss, jmorse, Orlando
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80662
Vedant Kumar [Wed, 27 May 2020 22:44:10 +0000 (15:44 -0700)]
[MachineVerifier] Verify that a DBG_VALUE has a debug location
Summary:
Verify that each DBG_VALUE has a debug location. This is required by
LiveDebugValues, and perhaps by other late passes.
There's an exception for tests: lots of tests use a two-operand form of
DBG_VALUE for convenience. There's no reason to prevent that.
This is an extension of D80665, but there's no dependency.
Reviewers: aprantl, jmorse, davide, chrisjackson
Subscribers: hiraditya, asb, rbar, johnrusso, simoncook, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, Jim, lenary, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80670
Vedant Kumar [Wed, 27 May 2020 20:13:13 +0000 (13:13 -0700)]
[MachineLICM] Assert that locations from debug insts are not lost
Summary:
Assert that MachineLICM does not move a debug instruction and then drop
its debug location. Later passes require each debug instruction to have
a location.
Testing: check-llvm, clang stage2 RelWithDebInfo build (x86_64)
Reviewers: aprantl, davide, chrisjackson, jmorse
Subscribers: hiraditya, asbirlea, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80665
Philip Reames [Thu, 28 May 2020 20:49:41 +0000 (13:49 -0700)]
[Statepoints] Sink routines for grabbing projections to GCStatepointInst [NFC]
Mechanical movement, nothing more.
Philip Reames [Thu, 28 May 2020 20:34:12 +0000 (13:34 -0700)]
[Statepoint] Sink actual_args and gc_args to GCStatepointInst [NFC]
These are the two operand sets which are expected to survive more than another week or so. Instead of bothering to update the deopt and gc-transition operands, we'll just wait until those are removed and delete the code.
For those following along, this is likely to be the last (major) change in this sequence for about a week. I want to wait until all of this has been merged downstream to ensure I haven't introduced any bugs (and migrate some downstream code to the new interfaces). Once that's done, we should be able to delete Statepoint/ImmutableStatepoint without too much work.
Philip Reames [Thu, 28 May 2020 19:31:49 +0000 (12:31 -0700)]
[Statepoint] Use iterate_range.empty [NFC]
Nemanja Ivanovic [Thu, 28 May 2020 20:48:05 +0000 (15:48 -0500)]
[Clang] Enable KF and KC mode for [_Complex] __float128
The headers provided with recent GNU toolchains for PPC have code that includes
typedefs such as:
typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__)))
This patch allows clang to compile programs that contain
#include <math.h>
with -mfloat128 which it currently fails to compile.
Fixes: https://bugs.llvm.org/show_bug.cgi?id=46068
Differential revision: https://reviews.llvm.org/D80374
Greg Clayton [Thu, 28 May 2020 20:29:48 +0000 (13:29 -0700)]
[lldb-vscode] Make it possible to run vsce package
Summary:
Running `vsce package` to package lldb-vscode as an installable .vsix file errors with:
```
ERROR Invalid publisher name 'llvm.org'. Expected the identifier of a publisher, not its human-friendly name.
```
This patch fixes the publisher name and bumps a required dependency so that `vsce package` succeeds.
Reviewers: clayborg
Reviewed By: clayborg
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D80569
Vitaly Buka [Thu, 28 May 2020 08:07:31 +0000 (01:07 -0700)]
[StackSafety] Lazy calculations
We are going to convert this into pure analysis, so
processing will be delayed up to the first safety request.
Vitaly Buka [Thu, 28 May 2020 20:01:02 +0000 (13:01 -0700)]
[NFC,StackSafety] Move internal offset calculation
Vitaly Buka [Thu, 28 May 2020 05:21:39 +0000 (22:21 -0700)]
[StackSafety] Don't run datafow on allocas
We need to process only parameters. Allocas access can be calculated
afterwards.
Also don't create fake function for aliases and just resolve them on
initialization.
Vitaly Buka [Thu, 28 May 2020 03:35:06 +0000 (20:35 -0700)]
[StackSafety] Remove SetMetadata parameter
Jonas Devlieghere [Thu, 28 May 2020 20:06:44 +0000 (13:06 -0700)]
[Docs] Correct description of lldbinit behavior
Jim pointed out that "every time somebody has touched the documentation
on startup files they have stated that we source the application one and
then the global one, even though in actual fact we’ve never done that."
Indeed, when we read the application specific .lldbinit file, the global
one is not read. This patch updates the man page to reflect that.
Vy Nguyen [Thu, 28 May 2020 04:33:13 +0000 (00:33 -0400)]
add isAtPosition narrowing matcher for parmVarDecl
Differential Revision: https://reviews.llvm.org/D80603
Eduardo Caldas [Thu, 28 May 2020 16:28:36 +0000 (18:28 +0200)]
Improve test infrastructure in SyntaxTree
Summary:
* Test if the code sourcing the SyntaxTree compiles
* Output compiler errors and warnings to err
* Fix tests with code that did not compile
Reviewers: gribozavr2
Reviewed By: gribozavr2
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80731
Arthur Eubanks [Thu, 28 May 2020 17:27:52 +0000 (10:27 -0700)]
Add tests for preallocated + musttail
Summary:
Follow-up to https://reviews.llvm.org/D80581.
Turns out the codegen part already worked, so only needed to add tests.
I manually verified that in these tests the generated code for inalloca
and preallocated were identical.
Reviewers: efriedma, hans
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80742
aartbik [Thu, 28 May 2020 18:04:02 +0000 (11:04 -0700)]
[llvm] [MatrixIntrinsics] Add row-major support for llvm.matrix.transpose
Summary:
Only column-major was supported so far. This adds row-major support as well.
Note that we probably also want very efficient SIMD implementations for the
various target platforms.
Bug:
https://bugs.llvm.org/show_bug.cgi?id=46085
Reviewers: nicolasvasilache, reidtatge, bkramer, fhahn, ftynse, andydavis1, craig.topper, dcaballe, mehdi_amini, anemet
Reviewed By: fhahn
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80673
Whitney Tsang [Thu, 28 May 2020 19:08:07 +0000 (19:08 +0000)]
Revert "[LoopUnroll] Support loops with exiting block that is neither header nor"
This reverts commit
281058226587d8c70172ff0fb1e55d58876da229.
Revert until
http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-debian/builds/7334
is resolved.
Sjoerd Meijer [Thu, 28 May 2020 18:49:12 +0000 (19:49 +0100)]
[AArch64] Add native CPU detection for Neoverse N1
Map the CPU ID value 0xd0c to "neoverse-n1".
Patch by James Greenhalgh.
Differential Revision: https://reviews.llvm.org/D80736
Stanislav Mekhanoshin [Thu, 28 May 2020 18:36:36 +0000 (11:36 -0700)]
AMDGPU/GlobalISel: precommit extractelement test. NFC.
Philip Reames [Thu, 28 May 2020 18:28:58 +0000 (11:28 -0700)]
[Statepoint] Convert a few more isStatepoint calls to idiomatic isa/cast
I'd apparently only grepped in the lib directories and missed a few used in the Statepoint header itself. Beyond simple mechanical cleanup, changed the type of one routine to reflect the fact it also returns a statepoint.
Matt Arsenault [Mon, 18 May 2020 15:32:46 +0000 (11:32 -0400)]
AMDGPU: Handle rewriting ptrmask for more address spaces
If this mask only clears bits in the low 32-bit half of a flat
pointer, these bits are always preserved in the result address
space. If the high bits are modified, they may need to be preserved
for some kind of user pointer tagging.
Louis Dionne [Thu, 28 May 2020 18:28:09 +0000 (14:28 -0400)]
[libc++] NFC: Remove outdated numbering in <bit> synopsis
Whitney Tsang [Thu, 28 May 2020 18:23:56 +0000 (18:23 +0000)]
[LoopUnroll] Support loops with exiting block that is neither header nor
latch.
Summary: Remove the limitation in LoopUnrollPass that exiting block must
be either header or latch.
Reviewer: dmgreen, jdoerfert, Meinersbur, kbarton, bmahjour, etiotto,
fhahn, efriedma
Reviewed By: etiotto, fhahn, efriedma
Subscribers: efriedma, lkail, xbolva00, hiraditya, zzheng, llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D80477
Matt Arsenault [Wed, 6 May 2020 20:43:33 +0000 (16:43 -0400)]
AMDGPU: Add intrinsic for s_setreg
This will be more useful with fenv access implemented.
Anthony Steinhauser [Thu, 28 May 2020 18:19:20 +0000 (11:19 -0700)]
[libc] Fixing the build command for benchmarks.
Building libc without clang fails with:
CMake Error at /home/asteinhauser/llvm-project/libc/CMakeLists.txt:49 (message):
'clang' and 'clang-tools-extra' are required in LLVM_ENABLE_PROJECTS to
lint llvm-libc. The linting step performs important checks to help prevent
the introduction of subtle bugs, but it may increase build times.
Reviewers: sivachandra
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D80495
Tobias Hieta [Thu, 28 May 2020 18:04:38 +0000 (21:04 +0300)]
[clang] Avoid linking libdl unless needed
Differential Revision: https://reviews.llvm.org/D80492
MaheshRavishankar [Thu, 28 May 2020 17:19:47 +0000 (10:19 -0700)]
[mlir][Linalg] Add pass to remove unit-extent dims from tensor
operands of Generic ops.
Unit-extent dimensions are typically used for achieving broadcasting
behavior. The pattern added (along with canonicalization patterns
added previously) removes the use of unit-extent dimensions, and
instead uses a more canonical representation of the computation. This
new pattern is not added as a canonicalization for now since it
entails adding additional reshape operations. A pass is added to
exercise these patterns, along with an API entry to populate a
patterns list with these patterns.
Differential Revision: https://reviews.llvm.org/D79766
Alex Zinenko [Thu, 28 May 2020 16:57:39 +0000 (18:57 +0200)]
[mlir][GPU] Link relevant LLVM components in GPUCommon instead of test
D80142 restructured MLIR-to-GPU-binary conversion to support multiple
targets. It also modified cmake files to link relevant LLVM components
in test/lib, which broke shared-library builds, and likely made the
conversions unusable outside mlir-opt (or other tools that link in test
library targets). Link these components to GPUCommon instead.
Differential Revision: https://reviews.llvm.org/D80739
Philip Reames [Thu, 28 May 2020 17:45:07 +0000 (10:45 -0700)]
[Statepoint] Sink logic about actual callee into GCStatepointInst
Sinking logic around actual callee from Statepoint to GCStatepointInst. While doing so, adjust naming to be consistent about refering to "actual" callee and follow precedent on naming from CallBase otherwise.
Use the result to simplify one consumer. This is mostly just to ensure the new code is exercised, but is also a helpful cleanup on it's own.
Jonas Devlieghere [Thu, 28 May 2020 17:39:45 +0000 (10:39 -0700)]
[lldb/Reproducers] Add top-level-target check-lldb-reproducers
This adds a new target `check-lldb-reproducers` that replaces the old
`check-lldb-repro`. The latter would only run the shell tests, while
`check-lldb-reproducers` includes the API tests as well. The new target
will be used on GreenDragon.
It's still possible to run just the shell tests with reproducers,
although now that requires crafting the lit invocation yourself. The
parameters haven't changed and are the shame for the API and shell
tests:
--param lldb-run-with-repro=capture
--param lldb-run-with-repro=replay
This patch also updates the reproducer documentation.
Valeriy Savchenko [Wed, 27 May 2020 13:06:45 +0000 (16:06 +0300)]
[analyzer] SATestBuild.py: Make verbosity level a cmd option
Reviewers: NoQ, dcoughlin
Subscribers: xazax.hun, baloghadamsoftware, szepet, a.sidorin, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, Charusso, ASDenysPetrov, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80626
Yitzhak Mandelbaum [Thu, 28 May 2020 17:36:45 +0000 (13:36 -0400)]
[clang-tidy] Fix build broken by commit
7cfdff7b4a6704b8ef2a1b594e1ec19d2d89f385 (D80023)
Nikita Popov [Thu, 28 May 2020 15:15:21 +0000 (17:15 +0200)]
[IR] Avoid linear scan in MDNode::intersect() (NFC)
00940fb8544767ba5217922c4ba96677aabe9eb3 changed this code to
construct a set for the B metadata. However, it still performs a
linear is_contained query, rather than making use of the set
structure.
Hiroshi Yamauchi [Thu, 21 May 2020 20:28:24 +0000 (13:28 -0700)]
[ThinLTO] Compute the basic block count across modules.
Summary:
Count the per-module number of basic blocks when the module summary is computed
and sum them up during Thin LTO indexing.
This is used to estimate the working set size under the partial sample PGO.
This is split off of D79831.
Reviewers: davidxl, espindola
Subscribers: emaste, inglorion, hiraditya, MaskRay, steven_wu, dexonsmith, arphaman, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80403
Valeriy Savchenko [Thu, 28 May 2020 17:28:17 +0000 (20:28 +0300)]
[analyzer] Remove unused function declaration. NFC.
Valeriy Savchenko [Thu, 28 May 2020 17:22:18 +0000 (20:22 +0300)]
[analyzer] Remove unused function. NFC.
Philip Reames [Thu, 28 May 2020 17:11:08 +0000 (10:11 -0700)]
Default to generating statepoints with deopt and gc-transition bundles if needed
Continues from D80598.
The key point of the change is to default to using operand bundles instead of the inline length prefix argument lists for statepoint nodes. An important subtlety to note is that the presence of a bundle has semantic meaning, even if it is empty. As such, we need to make a somewhat deeper change to the interface than is first obvious.
Existing code treats statepoint deopt arguments and the deopt bundle operands differently during inlining. The former is ignored (resulting in caller state being dropped), the later is merged.
We can't preserve the old behaviour for calls with deopt fed to RS4GC and then inlining, but we can avoid the no-deopt case changing. At least in internal testing, that seem to be the important one. (I'd argue the "stop merging after RS4GC" behaviour for the former was always "unexpected", but that the behaviour for non-deopt calls actually make sense.)
Differential Revision: https://reviews.llvm.org/D80674
Hiroshi Yamauchi [Wed, 27 May 2020 17:13:33 +0000 (10:13 -0700)]
[PGO] Guard the memcmp/bcmp size value profiling instrumentation behind flag.
Summary:
Follow up D79751 and put the instrumentation / value collection side (in
addition to the optimization side) behind the flag as well.
Reviewers: davidxl
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80646
Craig Topper [Thu, 28 May 2020 15:28:12 +0000 (08:28 -0700)]
[X86] Add 'avx512vp2intersect' to getHostCPUFeatures.
Jim Ingham [Thu, 28 May 2020 00:26:32 +0000 (17:26 -0700)]
Fix the crashlog.py script's use of the load_address property.
This property is explicitly for use only in the interactive editor,
and NOT in commands. It's use worked until we got more careful about
not leaving lldb.target lying around in the script interpreter.
I also added a quick sniff test for the save_crashlog command.
<rdar://problem/
60350620>
Differential Revision: https://reviews.llvm.org/D80680
LLVM GN Syncbot [Thu, 28 May 2020 16:49:43 +0000 (16:49 +0000)]
[gn build] Port
7cfdff7b4a6
Nikita Popov [Thu, 21 May 2020 14:48:05 +0000 (16:48 +0200)]
[SDAG] Don't require LazyBlockFrequencyInfo at optnone
While LazyBlockFrequencyInfo itself is lazy, the dominator tree
and loop info analyses it requires are not. Drop the dependency
on this pass in SelectionDAGIsel at O0.
This makes for a ~0.6% O0 compile-time improvement.
Differential Revision: https://reviews.llvm.org/D80387
Sidharth Baveja [Thu, 28 May 2020 16:12:45 +0000 (16:12 +0000)]
Create utility function to Merge Adjacent Basic Blocks
Summary: The following code from
/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp can be used by other
transformations:
while (!MergeBlocks.empty()) {
BasicBlock *BB = *MergeBlocks.begin();
BranchInst *Term = dyn_cast<BranchInst>(BB->getTerminator());
if (Term && Term->isUnconditional() &&
L->contains(Term->getSuccessor(0))) {
BasicBlock *Dest = Term->getSuccessor(0);
BasicBlock *Fold = Dest->getUniquePredecessor();
if (MergeBlockIntoPredecessor(Dest, &DTU, LI)) {
// Don't remove BB and add Fold as they are the same BB
assert(Fold == BB);
(void)Fold;
MergeBlocks.erase(Dest);
} else
MergeBlocks.erase(BB);
} else
MergeBlocks.erase(BB);
}
Hence it should be separated into its own utility function.
Authored By: sidbav
Reviewer: Whitney, Meinersbur, asbirlea, dmgreen, etiotto
Reviewed By: asbirlea
Subscribers: hiraditya, zzheng, llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D80583
Vy Nguyen [Wed, 27 May 2020 22:06:40 +0000 (18:06 -0400)]
[llvm-exegesis] Make a few counter methods virtual to allow targets to provide target-specific support.
Misc: Also include errno in failure message.
Differential Revision: https://reviews.llvm.org/D80610
Tom Lokovic [Thu, 28 May 2020 16:22:30 +0000 (12:22 -0400)]
[clang-tidy] Add abseil-string-find-str-contains checker.
Summary: This adds a checker which suggests replacing string.find(...) == npos with absl::StrContains.
Reviewers: alexfh, hokein, aaron.ballman, njames93, ymandel
Reviewed By: ymandel
Subscribers: ymandel, Eugene.Zelenko, xazax.hun, mgorny, Charusso, phosek, cfe-commits
Tags: #clang, #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D80023
Adrian Prantl [Thu, 28 May 2020 16:35:06 +0000 (09:35 -0700)]
Make VE.def a textual header
Louis Dionne [Fri, 22 May 2020 13:59:48 +0000 (09:59 -0400)]
[libc++] Complete overhaul of constexpr support in std::array
This commit adds missing support for constexpr in std::array under all
standard modes up to and including C++20. It also transforms the <array>
tests to check for constexpr-friendliness under the right standard modes.
Fixes https://llvm.org/PR40124
Fixes rdar://
57522096
Supersedes https://reviews.llvm.org/D60666
Differential Revision: https://reviews.llvm.org/D80452
alex-t [Fri, 22 May 2020 09:15:57 +0000 (12:15 +0300)]
[AMDGPU] Reject moving PHI to VALU if the only VGPR input originated from move immediate
Summary:
PHIs result register class is set to VGPR or SGPR depending on the cross block value divergence.
In some cases uniform PHI need to be converted to return VGPR to prevent the oddnumber of moves values from VGPR to SGPR and back.
PHI should certainly return VGPR if it has at least one VGPR input. This change adds the exception.
We don't want to convert uniform PHI to VGPRs in case the only VGPR input is a VGPR to SGPR COPY and definition od the
source VGPR in this COPY is move immediate.
bb.0:
%0:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
%2:sreg_32 = .....
bb.1:
%3:sreg_32 = PHI %1, %bb.3, %2, %bb.1
S_BRANCH %bb.3
bb.3:
%1:sreg_32 = COPY %0
S_BRANCH %bb.2
Reviewers: rampitec
Reviewed By: rampitec
Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80434
Jacques Pienaar [Thu, 28 May 2020 16:06:47 +0000 (09:06 -0700)]
[mlir] Fix mismatched-tags warning
Jacques Pienaar [Thu, 28 May 2020 16:05:24 +0000 (09:05 -0700)]
[mlir] Use ValueRange instead of ArrayRef<Value>
This allows constructing operand adaptor from existing op (useful for commonalizing verification as I want to do in a follow up).
I also add ability to use member initializers for the generated adaptor constructors for convenience.
Differential Revision: https://reviews.llvm.org/D80667
Dmitri Gribenko [Thu, 28 May 2020 15:36:48 +0000 (17:36 +0200)]
Remove WrapperMatcherInterface
Summary:
WrapperMatcherInterface is an abstraction over a member variable -- in
other words, not much of an abstraction at all. I think it makes code
harder to read more than in helps with deduplication. Not to even
mention the questionable usage of the ~Interface suffix for a type with
state.
Reviewers: ymandel
Reviewed By: ymandel
Subscribers: arichardson, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80704
Valeriy Savchenko [Thu, 14 May 2020 14:07:54 +0000 (17:07 +0300)]
[analyzer] Introduce reasoning about symbolic remainder operator
Summary:
New logic tries to narrow possible result values of the remainder operation
based on its operands and their ranges. It also tries to be conservative
with negative operands because according to the standard the sign of
the result is implementation-defined.
rdar://problem/
44978988
Differential Revision: https://reviews.llvm.org/D80117
Valeriy Savchenko [Tue, 5 May 2020 16:42:33 +0000 (19:42 +0300)]
[analyzer] Generalize bitwise AND rules for ranges
Summary:
Previously the current solver started reasoning about bitwise AND
expressions only when one of the operands is a constant. However,
very similar logic could be applied to ranges. This commit addresses
this shortcoming. Additionally, it refines how we deal with negative
operands.
rdar://problem/
54359410
Differential Revision: https://reviews.llvm.org/D79434
Valeriy Savchenko [Mon, 4 May 2020 16:44:43 +0000 (19:44 +0300)]
[analyzer] Generalize bitwise OR rules for ranges
Summary:
Previously the current solver started reasoning about bitwise OR
expressions only when one of the operands is a constant. However,
very similar logic could be applied to ranges. This commit addresses
this shortcoming. Additionally, it refines how we deal with negative
operands.
Differential Revision: https://reviews.llvm.org/D79336
Valeriy Savchenko [Fri, 1 May 2020 08:49:23 +0000 (11:49 +0300)]
[analyzer] Refactor range inference for symbolic expressions
Summary:
This change introduces a new component to unite all of the reasoning
we have about operations on ranges in the analyzer's solver.
In many cases, we might conclude that the range for a symbolic operation
is much more narrow than the type implies. While reasoning about
runtime conditions (especially in loops), we need to support more and
more of those little pieces of logic. The new component mostly plays
a role of an organizer for those, and allows us to focus on the actual
reasoning about ranges and not dispatching manually on the types of the
nested symbolic expressions.
Differential Revision: https://reviews.llvm.org/D79232
Valeriy Savchenko [Thu, 30 Apr 2020 08:09:52 +0000 (11:09 +0300)]
[analyzer] Merge implementations of SymInt, IntSym, and SymSym exprs
Summary:
SymIntExpr, IntSymExpr, and SymSymExpr share a big portion of logic
that used to be duplicated across all three classes. New
implementation also adds an easy way of introducing another type of
operands into the mix.
Differential Revision: https://reviews.llvm.org/D79156
Jean-Michel Gorius [Thu, 28 May 2020 15:43:59 +0000 (17:43 +0200)]
[x86] Propagate memory operands during call frame optimization
Summary:
Propagate memory operands when folding load instructions into instructions that directly operate on memory.
The original revision has been split. See D80140 for the other part of the changes.
Reviewers: craig.topper, rnk, lebedev.ri, efriedma
Reviewed By: craig.topper
Subscribers: lebedev.ri, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80062
Yitzhak Mandelbaum [Wed, 27 May 2020 02:59:08 +0000 (22:59 -0400)]
[libTooling] Fix Transformer to work with ambient traversal kinds.
Summary:
`RewriteRule`'s `applyFirst` was brittle with respect to the default setting of the
`TraversalKind`. This patch builds awareness of traversal kinds directly into
rewrite rules so that they are insensitive to any changes in defaults.
Reviewers: steveire, gribozavr
Subscribers: hokein, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80606
Jean-Michel Gorius [Thu, 28 May 2020 15:38:00 +0000 (17:38 +0200)]
[mlir] Make translation libraries available through MLIRConfig.cmake
Yitzhak Mandelbaum [Wed, 27 May 2020 22:04:50 +0000 (18:04 -0400)]
[ASTMatchers] Add traversal-kind support to `DynTypedMatcher`
Summary:
This patch exposes `TraversalKind` support in the `DynTypedMatcher` API. While
previously, the `match` method supported traversal logic, it was not possible to
set or get the traversal kind.
Reviewers: gribozavr, steveire
Subscribers: hokein, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80685
Sam McCall [Thu, 28 May 2020 15:12:43 +0000 (17:12 +0200)]
[clangd] Work around PS4 -fno-exceptions, easier than disabling tests?
Matt Arsenault [Thu, 28 May 2020 14:46:23 +0000 (10:46 -0400)]
AMDGPU: Add missing test for s_denorm_mode scheduling
Forgot to add this file to
1a9e0d7092145e33175f628f4cdd28acf0d17100
Matt Arsenault [Tue, 26 May 2020 21:03:20 +0000 (17:03 -0400)]
libclc: Compile with -nostdlib
This fixes a build error when compiling for amdgcn-amd-amdhsa, which
defaults to trying to link bitcode libraries.
Matt Arsenault [Wed, 27 May 2020 18:48:14 +0000 (14:48 -0400)]
AMDGPU: Make S_DENORM_MODE not be a scheduling boundary
Now that the mode register uses/defs should be properly modeled, we
don't need to treat the FP mode switch as an arbitrary side effect.
Simon Pilgrim [Thu, 28 May 2020 14:26:15 +0000 (15:26 +0100)]
SymbolicFile.h - removed unused FileSystem.h include. NFC.
Exposes a number of implicit dependencies that needs fixing in source files and XCOFFObjectFile.h.
Sam McCall [Thu, 28 May 2020 14:14:49 +0000 (16:14 +0200)]
Prevent test from failing in my home directory
Frederik Gossen [Thu, 28 May 2020 14:10:11 +0000 (14:10 +0000)]
[MLIR] Fix operand type in `from_extent_tensor` in the shape dialect
The operand of `from_extent_tensor` is now of the same index type as the result
type of the inverse operation `to_extent_tensor`.
Differential Revision: https://reviews.llvm.org/D80283
Wen-Heng (Jack) Chung [Fri, 22 May 2020 21:25:00 +0000 (16:25 -0500)]
[mlir][gpu][mlir-cuda-runner] Refactor ConvertKernelFuncToCubin to be generic.
Make ConvertKernelFuncToCubin pass to be generic:
- Rename to ConvertKernelFuncToBlob.
- Allow specifying triple, target chip, target features.
- Initializing LLVM backend is supplied by a callback function.
- Lowering process from MLIR module to LLVM module is via another callback.
- Change mlir-cuda-runner to adopt the revised pass.
- Add new tests for lowering to ROCm HSA code object (HSACO).
- Tests for CUDA and ROCm are kept in separate directories.
Differential Revision: https://reviews.llvm.org/D80142
Frederik Gossen [Thu, 28 May 2020 14:04:39 +0000 (14:04 +0000)]
[MLIR] Add `num_elements` to the shape dialect
The operation `num_elements` determines the number of elements for a given
shape.
That is the product of its dimensions.
Differential Revision: https://reviews.llvm.org/D80281
Matt Arsenault [Fri, 15 May 2020 18:54:51 +0000 (14:54 -0400)]
InferAddressSpaces: Handle ptrmask intrinsic
This one is slightly odd since it counts as an address expression,
which previously could never fail. Allow the existing TTI hook to
return the value to use, and re-use it for handling how to handle
ptrmask.
Handles the no-op addrspacecasts for AMDGPU. We could probably do
something better based on analysis of the mask value based on the
address space, but leave that for now.
Matt Arsenault [Fri, 15 May 2020 21:29:40 +0000 (17:29 -0400)]
AMDGPU: Add baseline test for ptrmask infer address space
Frederik Gossen [Thu, 28 May 2020 13:55:02 +0000 (13:55 +0000)]
[MLIR] Add `index_to_size` and `size_to_index` to the shape dialect
Add the two conversion operations `index_to_size` and `size_to_index` to the
shape dialect.
This facilitates the conversion of index types between the shape and the
standard dialect.
Differential Revision: https://reviews.llvm.org/D80280
Alexander Belyaev [Thu, 28 May 2020 11:36:40 +0000 (13:36 +0200)]
[MLIR] Add TensorFromElementsOp to Standard ops.
Differential Revision: https://reviews.llvm.org/D80705
Frederik Gossen [Thu, 28 May 2020 13:40:34 +0000 (13:40 +0000)]
[MLIR] Tidy up documentation for `Shape_JoinOp`, `Shape_ReduceOp`, and
`Shape_ConstSizeOp`
Fix places that refer to `shape.type` instead of `shape.shape`.
Differential Revision: https://reviews.llvm.org/D80278
Simon Pilgrim [Thu, 28 May 2020 13:37:17 +0000 (14:37 +0100)]
FileOutputBuffer.h - remove unused includes. NFC.
Move dependent includes down to source files where necessary.
Simon Pilgrim [Thu, 28 May 2020 12:58:35 +0000 (13:58 +0100)]
WithColor.h - reduce unnecessary includes to forward declarations. NFC.
Frederik Gossen [Thu, 28 May 2020 13:35:51 +0000 (13:35 +0000)]
[MLIR] Move `ConcatOp` to its lexicographic position
Purely cosmetic change.
The operation implementations in `Shape.cpp` are now lexicographic order.
Differential Revision: https://reviews.llvm.org/D80277
Simon Pilgrim [Thu, 28 May 2020 12:34:09 +0000 (13:34 +0100)]
[X86][SSE] Peek though MOVMSK source sign bits using SimplifyMultipleUseDemandedBits
Allows SimplifyDemandedBitsForTargetNode to peek through multi-use ops where MOVMSK only demands the signbit of each vector element.
Alok Kumar Sharma [Thu, 28 May 2020 10:16:06 +0000 (15:46 +0530)]
Fixed bot failure after
d20bf5a7258d4b6a7
There was a failure on windows bit due to format mismatch on
different(Hex and Decimal) platforms even if meaning of output is same.
For example on X86 linux =>
DW_OP_plus_uconst 0x70, DW_OP_deref, DW_OP_lit4, DW_OP_mul
^
on X86 Windows-gnu =>
DW_AT_location (DW_OP_fbreg +112, DW_OP_deref, DW_OP_lit4, DW_OP_mul)
: error: CHECK-SAME: expected string not found in input
; CHECK-SAME: DW_OP_plus_uconst 0x70, DW_OP_deref, DW_OP_lit4, DW_OP_mul
^
<stdin>:28:17: note: scanning from here
DW_AT_location (DW_OP_fbreg +112, DW_OP_deref, DW_OP_lit4, DW_OP_mul)
^
<stdin>:28:18: note: possible intended match here
DW_AT_location (DW_OP_fbreg +112, DW_OP_deref, DW_OP_lit4, DW_OP_mul)
Now the test is limited to x86 using REQUIRED and -mtriple.
http://45.33.8.238/win/16214/step_11.txt
Dmitry Preobrazhensky [Thu, 28 May 2020 12:07:58 +0000 (15:07 +0300)]
[AMDGPU][MC][GFX908] Corrected src0 of v_accvgpr_write to accept only VGPRs and inline constants.
This change disables use of special SGPR registers like scc, vccz, execz, etc as operands of v_accvgpr_write.
See bug 45414: https://bugs.llvm.org/show_bug.cgi?id=45414
Reviewers: arsenm, rampitec
Differential Revision: https://reviews.llvm.org/D80530
Simon Pilgrim [Thu, 28 May 2020 12:07:06 +0000 (13:07 +0100)]
Fix MSVC signed/unsigned comparison warnings. NFC.