Hans Wennborg [Wed, 17 Jun 2020 08:26:30 +0000 (10:26 +0200)]
[IR] Don't copy profile metadata in createCallMatchingInvoke()
The invoke instruction can have profile metadata with branch_weights,
which does not make sense for a call instruction and will be
rejected by the verifier.
Differential revision: https://reviews.llvm.org/D81996
serge-sans-paille [Thu, 4 Jun 2020 20:25:14 +0000 (22:25 +0200)]
Fix LoopIdiomRecognize pass return status
Introduce an helper class to aggregate the cleanup in case of rollback.
Differential Revision: https://reviews.llvm.org/D81230
Sjoerd Meijer [Wed, 17 Jun 2020 09:09:17 +0000 (10:09 +0100)]
Revert "[LV] Emit @llvm.get.active.mask for tail-folded loops"
This reverts commit
47650451738c821993c763356854b560a0f9f550
while I investigate the build bot failures.
Max Kazantsev [Wed, 17 Jun 2020 09:02:57 +0000 (16:02 +0700)]
[NFC] Add API for edge domination check in dom tree
Florian Hahn [Wed, 17 Jun 2020 08:40:47 +0000 (09:40 +0100)]
[SCCP] Move common code to simplify basic block to helper (NFC).
Reviewers: efriedma, davide
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D81755
Sjoerd Meijer [Wed, 10 Jun 2020 07:37:47 +0000 (08:37 +0100)]
[LV] Emit @llvm.get.active.mask for tail-folded loops
This emits new IR intrinsic @llvm.get.active.mask for tail-folded vectorised
loops if the intrinsic is supported by the backend, which is checked by
querying TargetTransform hook emitGetActiveLaneMask.
This intrinsic creates a mask representing active and inactive vector lanes,
which is used by the masked load/store instructions that are created for
tail-folded loops. The semantics of @llvm.get.active.mask are described here in
LangRef:
https://llvm.org/docs/LangRef.html#llvm-get-active-lane-mask-intrinsics
This intrinsic is also used to provide a hint to the backend. That is, the
second argument of the intrinsic represents the back-edge taken count of the
loop. For MVE, for example, we use that to set up tail-predication, which is a
new form of predication in MVE for vector loops that implicitely predicates the
last vector loop iteration by implicitely setting active/inactive lanes, i.e.
the tail loop is predicated. In order to set up a tail-predicated vector loop,
we need to know the number of data elements processed by the vector loop, which
corresponds the the tripcount of the scalar loop, which we can now reconstruct
using @llvm.get.active.mask.
Differential Revision: https://reviews.llvm.org/D79100
Sjoerd Meijer [Tue, 9 Jun 2020 16:19:57 +0000 (17:19 +0100)]
[TTI] Refactor emitGetActiveLaneMask
Refactor TTI hook emitGetActiveLaneMask and remove the unused arguments
as suggested in D79100.
Kirill Bobyrev [Wed, 17 Jun 2020 08:52:18 +0000 (10:52 +0200)]
[CallPrinter] Handle freq = 0 case
Improvement of the following revision:
bbc629ebd6429d43cfd72d9a0e2b5ca8a4083b54
This might still be problematic if freq = 0, so it's better to check for
that.
Kirill Bobyrev [Wed, 17 Jun 2020 08:44:28 +0000 (10:44 +0200)]
[CallPrinter] Fix maxFreq = 0 case
llvm::getHeatColor becomes a problem when maxFreq = 0 -> freq = 0 =>
log2(double(freq)) / log2(maxFreq) -> log2(0.) / log2(0.) which
results in illegal instruction on some architectures.
Problematic revision: https://reviews.llvm.org/D77172
Sander de Smalen [Tue, 16 Jun 2020 15:48:08 +0000 (16:48 +0100)]
[SveEmitter] Add builtins for svtbl2
Reviewers: david-arm, efriedma, c-rhodes
Reviewed By: c-rhodes
Tags: #clang
Differential Revision: https://reviews.llvm.org/D81462
Kadir Cetinkaya [Wed, 17 Jun 2020 08:39:49 +0000 (10:39 +0200)]
[clangd] Depend on llvm-config for lit tests
Florian Hahn [Wed, 17 Jun 2020 08:24:56 +0000 (09:24 +0100)]
[MemDep] Also remove load instructions from NonLocalDesCache.
Currently load instructions are added to the cache for invariant pointer
group dependencies, but only pointer values are removed currently. That
leads to dangling AssertingVHs in the test case below, where we delete a
load from an invariant pointer group. We should also remove the entries
from the cache.
Fixes PR46054.
Reviewers: efriedma, hfinkel, asbirlea
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D81726
Serge Pavlov [Wed, 17 Jun 2020 08:34:00 +0000 (15:34 +0700)]
Use explicitly unsigned zero to prevent from a warning
Max Kazantsev [Wed, 17 Jun 2020 08:12:58 +0000 (15:12 +0700)]
[Test] Add missing opportunity for replacement of select with Phi
James Henderson [Wed, 10 Jun 2020 13:00:36 +0000 (14:00 +0100)]
[DebugInfo] Unify Cursor usage for all debug line opcodes
This is a natural extension of the previous changes to use the Cursor
class independently in the standard and extended opcode paths, and in
turn allows delaying error handling until the entire line has been
printed in verbose mode, removing interleaved output in some cases.
Reviewed by: MaskRay, JDevlieghere
Differential Revision: https://reviews.llvm.org/D81562
LLVM GN Syncbot [Wed, 17 Jun 2020 08:12:14 +0000 (08:12 +0000)]
[gn build] Port
6754a0e2edd
Vitaly Buka [Mon, 15 Jun 2020 09:37:19 +0000 (02:37 -0700)]
[SafeStack,NFC] Fix names after files move
Summary: Depends on D81831.
Reviewers: eugenis, pcc
Reviewed By: eugenis
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81832
Vitaly Buka [Mon, 15 Jun 2020 09:26:28 +0000 (02:26 -0700)]
[SafeStack,NFC] Move SafeStackColoring code
Summary:
This code is going to be used in StackSafety.
This patch is file move with minimal changes. Identifiers
will be fixed in the followup patch.
Reviewers: eugenis, pcc
Reviewed By: eugenis
Subscribers: mgorny, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81831
Jonas Paulsson [Thu, 11 Jun 2020 16:49:54 +0000 (18:49 +0200)]
[SystemZ] Bugfix in storeLoadCanUseBlockBinary().
Check that the MemoryVT of LoadA matches that of LoadB.
This fixes https://bugs.llvm.org/show_bug.cgi?id=46239.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D81671
Joachim Protze [Wed, 17 Jun 2020 07:38:56 +0000 (09:38 +0200)]
subdirectories should not use cmake project command
Joachim Protze [Tue, 10 Mar 2020 18:47:45 +0000 (19:47 +0100)]
[OpenMP][Tool] Header-only multiplexing of OMPT tools
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D76012
Kang Zhang [Wed, 17 Jun 2020 07:06:46 +0000 (07:06 +0000)]
[NFC]][PowerPC] Remove unused intrinsic for old CTR loop pass
Summary:
In the patch D62907 the PPC CTRLoops pass has been replaced by Generic
Hardware Loop pass, and it has imported some new intrinsic for Generic
Hardware Loop.
The old intrinsic used in PPC CTRLoops int_ppc_mtctr and
int_ppc_is_decremented_ctr_nonzero is been replaced by
int_set_loop_iterations and loop_decrement.
This patch is to remove above unused two instrinsic.
Reviewed By: shchenz
Differential Revision: https://reviews.llvm.org/D81539
Richard Smith [Wed, 17 Jun 2020 06:56:45 +0000 (23:56 -0700)]
[www] Update cxx_dr_status page for recent fixes.
Richard Smith [Wed, 17 Jun 2020 06:53:44 +0000 (23:53 -0700)]
Revert "DR458: Search template parameter scopes in the right order."
We weren't re-entering template scopes in the right order, causing this
to break self-host with -fdelayed-template-parsing.
This reverts commit
237c2a23b6d4fa953f5ae910dccf492db61bb959.
Serge Pavlov [Thu, 23 Apr 2020 06:04:52 +0000 (13:04 +0700)]
[Support] Get process statistics in ExecuteAndWait and Wait
The functions sys::ExcecuteAndWait and sys::Wait now have additional
argument of type pointer to structure, which is filled with process
execution statistics upon process termination. These are total and user
execution times and peak memory consumption. By default this argument is
nullptr so existing users of these function must not change behavior.
Differential Revision: https://reviews.llvm.org/D78901
Martin Storsjö [Sat, 13 Jun 2020 20:04:40 +0000 (23:04 +0300)]
[clang] Enable -mms-bitfields by default for mingw targets
This matches GCC, which enabled -mms-bitfields by default for
mingw targets in 4.7 [1].
[1] https://www.gnu.org/software/gcc/gcc-4.7/changes.html
Differential Revision: https://reviews.llvm.org/D81795
Martin Storsjö [Sat, 13 Jun 2020 19:29:52 +0000 (22:29 +0300)]
[clang] Don't emit warn_cxx_ms_struct when MSBitfields is enabled globally
This diagnostic (which defaults to an error, added in
95833f33bda6c92e746e0b0007b69c2c30bfc693) was intended to clearly
point out cases where the C++ ABI won't match the Microsoft C++ ABI,
for cases when this is enabled via a pragma over a region of code.
The MSVC compatible struct layout feature can also be enabled via a
compiler option (-mms-bitfields). If enabled that way, one essentially
can't compile any C++ code unless also building with
-Wno-incompatible-ms-struct (which GCC doesn't support, and projects
developed with GCC aren't setting).
For the MinGW target, it's expected that the C++ ABI won't match
the MSVC one, if this option is used for getting the struct
layout to match MSVC.
Differential Revision: https://reviews.llvm.org/D81794
Martin Storsjö [Sat, 30 May 2020 21:05:13 +0000 (00:05 +0300)]
[clang] [MinGW] Link kernel32 once after the last instance of msvcrt
The msvcrt library isn't a pure import library; it does contain
regular object files with wrappers/fallbacks, and these can require
linking against kernel32.
This only makes a difference when linking with ld.bfd, as lld
always searches all static libraries.
This matches a similar change made recently in gcc in
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=
850533ab160ef40eccfd039e1e3b138cf26e76b8,
although clang adds --start-group --end-group around these libraries
if -static is specified, which gcc doesn't. But try to match gcc's
linking order in any case, for consistency.
Differential Revision: https://reviews.llvm.org/D80880
Igor Kudrin [Wed, 17 Jun 2020 05:57:54 +0000 (12:57 +0700)]
[DebugInfo] Support parsing and dumping of DWARF64 macro units.
Differential Revision: https://reviews.llvm.org/D81844
Sameer Sahasrabuddhe [Wed, 17 Jun 2020 02:44:50 +0000 (08:14 +0530)]
[DA] propagate loop live-out values that get used in a branch
Values that are uniform within a loop but appear divergent to uses
outside the loop are "tainted" so that such uses are marked
divergent. But if such a use is a branch, then it's divergence needs
to be propagated. The simplest way to do that is to put the branch
back in the main worklist so that it is processed appropriately.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D81822
Itay Bookstein [Tue, 16 Jun 2020 23:17:27 +0000 (16:17 -0700)]
[IR] Add missing GlobalAlias copying of ThreadLocalMode attribute
Summary:
Previously, GlobalAlias::copyAttributesFrom did not preserve ThreadLocalMode,
causing incorrect IR generation in IR linking flows. This patch pushes the code
responsible for copying this attribute from GlobalVariable::copyAttributesFrom
down to GlobalValue::copyAttributesFrom so that it is shared by GlobalAlias.
Fixes PR46297.
Reviewers: tejohnson, pcc, hans
Reviewed By: tejohnson, hans
Subscribers: hiraditya, ibookstein, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81605
Matt Arsenault [Wed, 17 Jun 2020 02:38:33 +0000 (22:38 -0400)]
AMDGPU/GlobalISel: Fix obvious bug in ported 32-bit udiv/urem
This was hidden by the IR expansion in AMDGPUCodeGenPrepare, which I
forgot to turn off.
Richard Smith [Tue, 16 Jun 2020 23:55:56 +0000 (16:55 -0700)]
DR458: Search template parameter scopes in the right order.
C++ unqualified name lookup searches template parameter scopes
immediately after finishing searching the entity the parameters belong
to. (Eg, for a class template, you search the template parameter scope
after looking in that class template and its base classes and before
looking in the scope containing the class template.) This is complicated
by the fact that scope lookup within a template parameter scope looks in
a different sequence of places prior to reaching the end of the
declarator-id in the template declaration.
We used to approximate the proper lookup rule with a hack in the scope /
decl context walk inside name lookup. Now we instead compute the lookup
parent for each template parameter scope. This gets the right answer and
as a bonus is substantially simpler and more uniform.
In order to get this right, we now make sure to enter a distinct Scope
for each template parameter scope. (The fact that we didn't before was
already a bug, but not really observable most of the time, since
template parameters can't shadow each other.)
Richard Smith [Wed, 17 Jun 2020 02:27:54 +0000 (19:27 -0700)]
Don't assert if we find a dependently-typed variable in the
redeclaration chain for an array.
A prior attempt to fix this in r280330 didn't handle the case where the
old variable is dependent and the new one is not.
It is notable and worrying that the test case in this example forms a
redeclaration chain for a non-dependent variable that includes a
declaration with a dependent type. We should probably fix that too.
Chen Zheng [Mon, 15 Jun 2020 08:03:32 +0000 (04:03 -0400)]
[PowerPC] remove wrong added FIXME in testcases, NFC
remove the wrong added comments as xsmaddasp is introduced in PWR8
Jez Ng [Wed, 17 Jun 2020 00:27:28 +0000 (17:27 -0700)]
[lld-macho] Use uint64_t for getSize() instead of size_t
Summary:
So things work on 32-bit machines. (@vzakhari reported the
breakage starting from D80177).
Reviewers: #lld-macho, vzakhari
Subscribers: llvm-commits, vzakhari
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81982
Xing GUO [Wed, 17 Jun 2020 01:29:04 +0000 (09:29 +0800)]
[ObjectYAML][DWARF] Let writeVariableSizedInteger() return Error.
This patch helps change the return type of `writeVariableSizedInteger()` from `void` to `Error`.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D81915
Matt Arsenault [Wed, 17 Jun 2020 00:45:15 +0000 (20:45 -0400)]
AMDGPU: Remove intermediate DAG node for trig_preop intrinsic
We weren't doing anything with this, and keeping it would just add
more boilerplate for GlobalISel.
Fangrui Song [Wed, 17 Jun 2020 00:57:59 +0000 (17:57 -0700)]
[lld-macho][test] Fix dylink-lazy.s after
0a5228a02c32cb5b10d43cb154d6d0abaf360ba7
Fangrui Song [Wed, 17 Jun 2020 00:46:22 +0000 (17:46 -0700)]
[builtins][test] Delete unneeded file headers
We don't add file headers to tests. The comments are useless as well -
their purpose can be easily inferred from the filenames.
Jun Ma [Tue, 16 Jun 2020 06:30:36 +0000 (14:30 +0800)]
[CodeGen][TLS] Set TLS Model for __tls_guard as well.
Differential Revision: https://reviews.llvm.org/D81543
Saleem Abdulrasool [Wed, 17 Jun 2020 00:05:29 +0000 (17:05 -0700)]
test: add library search path to repair the test
Update the test to no longer rely on the testing workaround in the
linker and use the external libSystem stub.
Daniel Sanders [Tue, 16 Jun 2020 21:52:50 +0000 (14:52 -0700)]
[gicombiner] Allow disable-rule option to disable all-except-...
Summary:
Adds two features to the generated rule disable option:
- '*' - Disable all rules
- '!<foo>' - Re-enable rule(s)
- '!foo' - Enable rule named 'foo'
- '!5' - Enable rule five
- '!4-9' - Enable rule four to nine
- '!foo-bar' - Enable rules from 'foo' to (and including) 'bar'
(the '!' is available to the generated disable option but is not part of the underlying and determines whether to call setRuleDisabled() or setRuleEnabled())
This is intended to support unit testing of combine rules so
that you can do:
GeneratedCfg.setRuleDisabled("*")
GeneratedCfg.setRuleEnabled("foo")
to ensure only a specific rule is in effect. The rule is still
required to be included in a combiner though
Also added --...-only-enable-rule=X,Y which is effectively an
alias for --...-disable-rule=*,!X,!Y and as such interacts
properly with disable-rule.
Reviewers: aditya_nandakumar, bogner, volkan, aemerson, paquette, arsenm
Subscribers: wdng, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81889
Lucy Fox [Tue, 16 Jun 2020 22:23:10 +0000 (15:23 -0700)]
[MLIR] Add an Op util which returns its name with the dialect stripped.
Differential Revision: https://reviews.llvm.org/D81435
Christopher Tetreault [Tue, 16 Jun 2020 22:49:32 +0000 (15:49 -0700)]
[SVE] Generalize size checks in Verifier to use getElementCount
Summary:
Attempts to call getNumElements on scalable vectors identified by test
LLVM.Other::scalable-vectors-core-ir.ll. Since these checks are all
attempting to find if two vectors are the same size, calling
getElementCount will only increase safety.
Reviewers: efriedma, aprantl, reames, kmclaughlin, sdesmalen
Reviewed By: efriedma
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81895
Saleem Abdulrasool [Mon, 8 Jun 2020 19:07:34 +0000 (12:07 -0700)]
lld: remove old test support path
This removes the stub library that lld injected to satisfy the
dependency on the libSystem. Now with TBD support, we can provide the
stub library to permit the tests to function properly as they would on a
real system.
Reviewed By: smeenai
Differential Revision: https://reviews.llvm.org/D81418
Christopher Tetreault [Tue, 16 Jun 2020 22:29:22 +0000 (15:29 -0700)]
[NFC] Use EXPECT_FALSE(...) in test rather than EXPECT_EQ(false, ...)
Summary: Silence GCC -Wconversion-null warning from GTest
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81976
Jonas Devlieghere [Tue, 16 Jun 2020 22:45:46 +0000 (15:45 -0700)]
[lldb/Test] Cleanup TestJITLoaderGDB and make it compatible with reproducers
Eric Schweitz [Fri, 12 Jun 2020 20:54:04 +0000 (13:54 -0700)]
[flang] Upstream the Mangler module from lowering.
This upstreams the internal name mangling used in the bridge to generate
unique names from symbols.
Replace InternalNamesTest with the actual, functional unittest.
Differential revision: https://reviews.llvm.org/D81764
Christopher Tetreault [Tue, 16 Jun 2020 21:55:32 +0000 (14:55 -0700)]
[SVE] Deprecate default false variant of VectorType::get
Reviewers: efriedma, fpetrogalli, kmclaughlin, huntergr
Reviewed By: fpetrogalli
Subscribers: cfe-commits, tschuett, rkruppe, psnobl, llvm-commits
Tags: #llvm, #clang
Differential Revision: https://reviews.llvm.org/D80342
Geoffrey Martin-Noble [Tue, 16 Jun 2020 22:06:32 +0000 (18:06 -0400)]
[mlir] Fix case in MLIRGPUtoSPIRVTransforms
This patch changes the casing of MLIRGPUtoSPIRVTransforms
to be consistent with other transforms libraries.
Differential Revision: https://reviews.llvm.org/D81902
Aaron Smith [Tue, 16 Jun 2020 22:10:05 +0000 (15:10 -0700)]
[SelectionDAG] Add MVT::bf16 to getConstantFP()
Summary:
This was probably overlooked in recent bfloat patches.
Needed to handle bf16 constants in SelectionDAG.
ConstantFP:bf16<APFloat(0)>
Reviewers: stuij
Reviewed By: stuij
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81779
Fangrui Song [Tue, 16 Jun 2020 21:55:02 +0000 (14:55 -0700)]
[llvm-cov gcov] Don't suppress .gcov output if .gcda is corrupted
If .gcda is corrupted, gcov continues to produce a .gcov and just
assumes execution counts are zeros. This is reasonable, because the
program can corrupt its .gcda output. The code path should be similar to
the code path without .gcda.
Michael Park [Tue, 16 Jun 2020 20:29:23 +0000 (13:29 -0700)]
Remove the try/catch codepath if `swap` is `noexcept`.
Summary:
In the case where `swap` is `noexcept`, we should avoid the extension to provide strong-exception guarantee.
Fixes https://bugs.llvm.org/show_bug.cgi?id=46342
Reviewers: #libc, ldionne
Reviewed By: #libc, ldionne
Subscribers: dexonsmith, mclow.lists, miscco, ldionne, zoecarver, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D81954
Daniel Sanders [Tue, 16 Jun 2020 21:15:36 +0000 (14:15 -0700)]
[gicombiner] Allow generated combiners to store additional members
Summary:
Adds the ability to add members to a generated combiner via
a State base class. In the current AArch64PreLegalizerCombiner
this is used to make Helper available without having to
provide it to every call.
As part of this, split the command line processing into a
separate object so that it still only runs once even though
the generated combiner is constructed more frequently.
Depends on D81862
Reviewers: aditya_nandakumar, bogner, volkan, aemerson, paquette, arsenm
Reviewed By: arsenm
Subscribers: jvesely, wdng, nhaehnle, kristof.beyls, hiraditya, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81863
Christopher Tetreault [Tue, 16 Jun 2020 21:05:21 +0000 (14:05 -0700)]
[SVE] Remove invalid calls to VectorType::getNumElements from BasicTTIImpl
Summary:
Most of these operations are reasonable for scalable vectors. Due to
this, we have decided not to change the interface to specifically take
FixedVectorType despite the fact that the current implementations make
fixed width assumptions. Instead, we cast to FixedVectorType and assert
in the body. If a developer makes some change in the future that causes
one of these asserts to fire, they should either change their code or
make the function they are trying to call handle scalable vectors.
Reviewers: efriedma, samparker, RKSimon, craig.topper, sdesmalen, c-rhodes
Reviewed By: efriedma
Subscribers: tschuett, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81495
Kirill Naumov [Tue, 16 Jun 2020 18:39:54 +0000 (18:39 +0000)]
[CallPrinter] Adding heat coloring to CallPrinter
This patch introduces the heat coloring of the Call Printer which is based
on the relative "hotness" of each function. The patch is a part of sequence of
three patches, related to graphs Heat Coloring.
Another feature added is the flag similar to "-cfg-dot-filename-prefix",
which allows to write the graph into a named .pdf
Reviewers: rcorcs, apilipenko, davidxl, sfertile, fedor.sergeev, eraman, bollu
Differential Revision: https://reviews.llvm.org/D77172
Fangrui Song [Tue, 16 Jun 2020 21:13:51 +0000 (14:13 -0700)]
[gcov] Add -i --intermediate-format
Between gcov 4.9~8, `gcov -i $file` prints coverage information to
$file.gcov in an intermediate text format (single file, instead of
$source.gcov for each source file).
lcov newer than 2019-05-24 detects -i support and uses it to increase
processing speed. gcov 9 (GCC r265587) removed --intermediate-format
and -i was changed to mean --json-format. However, we consider this
format still useful and support it. geninfo (part of lcov) supports this
format even if we announce that we are compatible with gcov 9.0.0
Fangrui Song [Tue, 16 Jun 2020 20:53:16 +0000 (13:53 -0700)]
[gcov] Refactor llvm-cov gcov and add SourceInfo
Daniel Sanders [Tue, 16 Jun 2020 20:41:38 +0000 (13:41 -0700)]
[gicombiner] Allow generated CombinerHelpers to have additional arguments
Summary:
This allows combiners to delegate to other helpers or depend
on additional information. It's not great as an overall
solution though as callers must provide the argument on every call, even for
static data like an additional helper. Another patch will follow to
support additional members of the generated combiner.
Reviewers: aditya_nandakumar, bogner, aemerson, paquette, volkan, arsenm
Reviewed By: aditya_nandakumar
Subscribers: wdng, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81862
Frederik Gossen [Tue, 16 Jun 2020 21:04:57 +0000 (21:04 +0000)]
[MLIR][Standard] Fix use of `dyn_cast_or_null`
The value may be a function argument in which case `getDefiningOp` will return a
`nullptr`.
Differential Revision: https://reviews.llvm.org/D81965
Davide Italiano [Tue, 16 Jun 2020 21:04:40 +0000 (14:04 -0700)]
[CGP] Add `--match-full-lines` to make sure we don't have a dbg attachment.
Alexey Bataev [Tue, 16 Jun 2020 21:00:14 +0000 (17:00 -0400)]
Revert "[OPENMP50]Codegen for scan directive in for simd regions."
This reverts commit
6e78a3086a7f563cc55d2ba83a8697b3320857fb to solve
the problem with mem leak.
Frederik Gossen [Tue, 16 Jun 2020 20:56:30 +0000 (20:56 +0000)]
[MLIR][Standard] Lower `std.dim` with dynamic dimension operand to LLVM
Implement the missing lowering from `std.dim` to the LLVM dialect in case of a
dynamic dimension.
Differential Revision: https://reviews.llvm.org/D81834
Jonas Devlieghere [Tue, 16 Jun 2020 20:54:03 +0000 (13:54 -0700)]
[lldb/Test] Pass the lldb_tool_dir when setting the lldb-repro substitutions
Otherwise LIT can't find the lldb-repro script in standalone builds.
Christopher Tetreault [Tue, 16 Jun 2020 20:42:58 +0000 (13:42 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from AArch64
Reviewers: efriedma, c-rhodes, david-arm, samparker, greened
Reviewed By: efriedma
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, danielkiss, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81518
Christopher Tetreault [Tue, 16 Jun 2020 20:19:15 +0000 (13:19 -0700)]
[NFC] Bail out for scalable vectors before calling getNumElements
Summary:
Move the bail out logic to before constructing the Result and Lane
vectors. This is both potentially faster, and avoids calling
getNumElements on a potentially scalable vector
Reviewers: efriedma, sunfish, chandlerc, c-rhodes, fpetrogalli
Reviewed By: fpetrogalli
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81619
Christopher Tetreault [Tue, 16 Jun 2020 19:52:13 +0000 (12:52 -0700)]
[SVE] Fix bad FixedVectorType cast in simplifyDivRem
Summary:
simplifyDivRem attempts to walk a VectorType elementwise. Ensure that it
only does so for FixedVectorType
Reviewers: efriedma, spatel, lebedev.ri, david-arm, kmclaughlin
Reviewed By: spatel, david-arm
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81856
Alexey Bataev [Thu, 11 Jun 2020 14:16:16 +0000 (10:16 -0400)]
[OPENMP50]Codegen for scan directive in for simd regions.
Summary:
Added codegen for scan directives in parallel for regions.
Emits the code for the directive with inscan reductions.
Original code:
```
#pragma omp for simd reduction(inscan, op : ...)
for(...) {
<input phase>;
#pragma omp scan (in)exclusive(...)
<scan phase>
}
```
is transformed to something:
```
size num_iters = <num_iters>;
<type> buffer[num_iters];
#pragma omp for simd
for (i: 0..<num_iters>) {
<input phase>;
buffer[i] = red;
}
#pragma omp barrier
for (int k = 0; k != ceil(log2(num_iters)); ++k)
for (size cnt = last_iter; cnt >= pow(2, k); --k)
buffer[i] op= buffer[i-pow(2,k)];
#pragma omp for simd
for (0..<num_iters>) {
red = InclusiveScan ? buffer[i] : buffer[i-1];
<scan phase>;
}
```
Reviewers: jdoerfert
Subscribers: yaxunl, guansong, sstefan1, cfe-commits, caomhin
Tags: #clang
Differential Revision: https://reviews.llvm.org/D81658
Yuanfang Chen [Tue, 16 Jun 2020 20:05:53 +0000 (13:05 -0700)]
Revert "remove gold linker"
This reverts commit
719c87edc58018a0e9f3ee04305e081d4b582c2b.
Checked in by accident. Sorry.
Yuanfang Chen [Tue, 16 Jun 2020 20:00:14 +0000 (13:00 -0700)]
[Clang] Add a "#pragma unroll" test case for correct error reporting
For PR46336.
Yuanfang Chen [Wed, 10 Jun 2020 16:38:33 +0000 (09:38 -0700)]
remove gold linker
Alexey Bataev [Tue, 16 Jun 2020 17:16:08 +0000 (13:16 -0400)]
[OPENMP]Fix PR46347: several ordered directives in a single region.
Summary:
According to OpenMP, During execution of an iteration of a worksharing-loop or a loop nest within a worksharing-loop, simd, or worksharing-loop SIMD region, a thread must not execute more than one ordered region corresponding to an ordered construct without a depend clause.
Need to report an error in this case.
Reviewers: jdoerfert
Subscribers: yaxunl, guansong, sstefan1, cfe-commits, caomhin
Tags: #clang
Differential Revision: https://reviews.llvm.org/D81951
Christopher Tetreault [Tue, 16 Jun 2020 19:35:51 +0000 (12:35 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from Vectorize
Reviewers: efriedma, fhahn, spatel, sdesmalen, kmclaughlin
Reviewed By: efriedma
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81521
Matt Arsenault [Tue, 16 Jun 2020 15:39:44 +0000 (11:39 -0400)]
GlobalISel: Fix not failing on widening G_INSERT_VECTOR_ELT
This doesn't actually handled type idx 0, but was reporting Legalized
on it. No test changes because nothing was trying to use this.
Ahsan Saghir [Tue, 16 Jun 2020 19:39:18 +0000 (14:39 -0500)]
[PowerPC] Add -m[no-]power10-vector clang and llvm option
Summary: This patch adds command line option for enabling power10-vector support.
Reviewers: hfinkel, nemanjai, lei, amyk, #powerpc
Reviewed By: lei, amyk, #powerpc
Subscribers: wuzish, kbarton, hiraditya, shchenz, cfe-commits, llvm-commits
Tags: #llvm, #clang, #powerpc
Differential Revision: https://reviews.llvm.org/D80758
Florian Hahn [Tue, 16 Jun 2020 16:02:09 +0000 (17:02 +0100)]
[Matrix] Add align info to some more loads/stores (NFC).
Some tests were missing alignment info. Subsequent changes properly
preserve the set alignment. Set it properly beforehand, to avoid
unnecessary test changes.
Julian Lettner [Tue, 16 Jun 2020 19:15:16 +0000 (12:15 -0700)]
[lit] Improve consistency for showing result groups
Before this change we showed all result groups with a code that was not
explicitly hard-coded set. This set missed the FLAKYPASS result code.
Let's generalize the code to always show failures and the additionally
requested result codes.
Tom Stellard [Tue, 16 Jun 2020 18:20:20 +0000 (11:20 -0700)]
Driver: Accept multiple --config options if filenames are the same
Summary:
We're trying to use the --config options to pass distro specific
options for Fedora via the CFLAGS variable. However, some projects
end up using the CFLAGS variable multiple times in their command line,
which leads to an error when --config is used.
This patch resolves this issue by allowing more than one --config option
on the command line as long as the file names are the same.
Reviewers: sepavloff, hfinkel
Reviewed By: sepavloff
Subscribers: cfe-commits, llvm-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D81424
Alex Zinenko [Tue, 16 Jun 2020 12:22:54 +0000 (14:22 +0200)]
[mlir] refactor Linalg LoopNestBuilder to use common infra
Recent work has introduced support for constructing loops via `::build` with
callbacks that construct loop bodies using only the core OpBuilder. This is now
supported on all loop types that Linalg lowers to. Refactor LoopNestBuilder in
Linalg to rely on this functionality instead of using a custom EDSC-based
approach to creating loop nests.
The specialization targeting parallel loops is also simplified by factoring out
the recursive call into a separate static function and considering only two
alternatives: top-level loop is parallel or sequential.
This removes the last remaining in-tree use of edsc::LoopBuilder, which is now
deprecated and will be removed soon.
Differential Revision: https://reviews.llvm.org/D81873
Alex Zinenko [Tue, 16 Jun 2020 12:22:49 +0000 (14:22 +0200)]
[mlir] Introduce callback-based builders to SCF Parallel and Reduce ops
Similarly to `scf::ForOp`, introduce additional `function_ref` arguments to
`::build` functions of SCF `ParallelOp` and `ReduceOp`. The provided functions
will be called to construct the body of the respective operations while
constructing the operation itself. Exercise them in LoopUtils.
Differential Revision: https://reviews.llvm.org/D81872
Matt Arsenault [Tue, 16 Jun 2020 00:59:50 +0000 (20:59 -0400)]
GlobalISel: Use early return and reduce indentation
Tim Shen [Tue, 16 Jun 2020 18:38:26 +0000 (11:38 -0700)]
[MLIR] Add documentation for generate-check-lines.py
Matt Arsenault [Tue, 16 Jun 2020 15:32:52 +0000 (11:32 -0400)]
GlobalISel: Make special case handling clearer
The special case here is really G_UNMERGE_VALUES, not G_EXTRACT. The
other opcodes can hardcode index 1 like G_EXTRACT.
Matt Arsenault [Tue, 16 Jun 2020 15:32:16 +0000 (11:32 -0400)]
GlobalISel: Use Register
Tim Shen [Tue, 16 Jun 2020 18:28:36 +0000 (11:28 -0700)]
[MLIR] Remove generated spaces at eof for generate-test-checks.py.
Tim Shen [Tue, 16 Jun 2020 02:41:03 +0000 (19:41 -0700)]
[MLIR] Rework generate-test-checks.py to attach CHECK lines to the source (test) file.
Summary:
This patch adds --source flag to indicate the source file. Then it tries to find insert
points in the source file and insert corresponding checks at those places.
Example output from Tensorflow XLA:
// -----
// CHECK-LABEL: func @main.3(
// CHECK-SAME: %[[VAL_0:.*]]: memref<2x2xf32> {xla_lhlo.params = 0 : index},
// CHECK-SAME: %[[VAL_1:.*]]: memref<16xi8> {xla_lhlo.alloc = 0 : index, xla_lhlo.liveout = true}) {
// CHECK: %[[VAL_2:.*]] = constant 0 : index
// CHECK: %[[VAL_3:.*]] = constant 0 : index
// CHECK: %[[VAL_4:.*]] = std.view %[[VAL_1]]{{\[}}%[[VAL_3]]][] : memref<16xi8> to memref<2x2xf32>
// CHECK: "xla_lhlo.tanh"(%[[VAL_0]], %[[VAL_4]]) : (memref<2x2xf32>, memref<2x2xf32>) -> ()
// CHECK: return
// CHECK: }
func @main(%value0: tensor<2x2xf32>) -> tensor<2x2xf32> {
%res = "xla_hlo.tanh"(%value0) : (tensor<2x2xf32>) -> tensor<2x2xf32>
return %res : tensor<2x2xf32>
}
Differential Revision: https://reviews.llvm.org/D81903
Stanislav Mekhanoshin [Tue, 16 Jun 2020 17:21:09 +0000 (10:21 -0700)]
Fix ubsan error in tblgen with signed left shift
UBSAN complains when tblgen performs SHL of a negative
value.
Differential Revision: https://reviews.llvm.org/D81952
Hiroshi Yamauchi [Wed, 10 Jun 2020 21:06:25 +0000 (14:06 -0700)]
[TLI] Add four C++17 delete variants.
Summary:
delete(void*, unsigned int, align_val_t)
delete(void*, unsigned long, align_val_t)
delete[](void*, unsigned int, align_val_t)
delete[](void*, unsigned long, align_val_t)
Differential Revision: https://reviews.llvm.org/D81853
David Tenty [Tue, 16 Jun 2020 18:00:32 +0000 (14:00 -0400)]
[AIX][compiler-rt] Pick the right form of COMPILER_RT_ALIAS for AIX
Summary: we use the alias attribute, similar to what is done for ELF.
Reviewers: ZarkoCA, jasonliu, hubert.reinterpretcast, sfertile
Reviewed By: jasonliu
Subscribers: dberris, aheejin, mstorsjo, #sanitizers
Tags: #sanitizers
Differential Revision: https://reviews.llvm.org/D81120
Jonas Devlieghere [Tue, 16 Jun 2020 18:02:00 +0000 (11:02 -0700)]
[lldb/Python] Fix the infinitely looping Python prompt bug
Executing commands below will get you bombarded by a wall of Python
command prompts (>>> ).
$ echo 'foo' | ./bin/lldb -o script
$ cat /tmp/script
script
print("foo")
$ lldb --source /tmp/script
The issue is that our custom input reader doesn't handle EOF. According
to the Python documentation, file.readline always includes a trailing
newline character unless the file ends with an incomplete line. An empty
string signals EOF. This patch raises an EOFError when that happens.
[1] https://docs.python.org/2/library/stdtypes.html#file.readline
Differential revision: https://reviews.llvm.org/D81898
Sanjay Patel [Tue, 16 Jun 2020 17:30:40 +0000 (13:30 -0400)]
[VectorCombine] scalarize compares with insertelement operand(s)
Generalize scalarization (recently enhanced with D80885)
to allow compares as well as binops.
Similar to binops, we are avoiding scalarization of a loaded
value because that could avoid a register transfer in codegen.
This requires 1 extra predicate that I am aware of: we do not
want to scalarize the condition value of a vector select. That
might also invert a transform that we do in instcombine that
prefers a vector condition operand for a vector select.
I think this is the final step in solving PR37463:
https://bugs.llvm.org/show_bug.cgi?id=37463
Differential Revision: https://reviews.llvm.org/D81661
Louis Dionne [Mon, 8 Jun 2020 20:16:01 +0000 (16:16 -0400)]
[libc++] Don't trigger unsigned conversion warnings in std::advance
The Standard documents the signature of std::advance as
template <class Iter, class Distance>
constexpr void advance(Iter& i, Distance n);
Furthermore, it does not appear to put any restriction on what the type
of Distance should be. While it is understood that it should usually
be std::iterator_traits::difference_type, I couldn't find any wording
that mandates that. Similarly, I couldn't find wording that forces the
distance to be a signed type.
This patch changes std::advance to accept any type in the second argument,
which appears to be what the Standard mandates. We then coerce it to the
iterator's difference type, but that's an implementation detail.
Differential Revision: https://reviews.llvm.org/D81425
Yuanfang Chen [Tue, 16 Jun 2020 17:13:44 +0000 (10:13 -0700)]
[Clang] Skip adding begin source location for PragmaLoopHint'd loop when
the range start is already set
The range start could be set already in some invalid cases. Fixes
PR46336.
Jessica Paquette [Mon, 15 Jun 2020 23:32:01 +0000 (16:32 -0700)]
[AArch64][GlobalISel] Avoid creating redundant ubfx when selecting G_ZEXT
When selecting 32 b -> 64 b G_ZEXTs, we don't have to always emit the extend.
If the instruction feeding into the G_ZEXT implicitly zero extends the high
half of the register, we can just emit a SUBREG_TO_REG instead.
Differential Revision: https://reviews.llvm.org/D81897
Jonas Devlieghere [Tue, 16 Jun 2020 16:39:57 +0000 (09:39 -0700)]
[lldb/Test] Create dir if it doesn't yet exist in getReproducerArtifact
The type test use this method to store the golden output. This currently
fails if the reproducer directory hasn't yet been created.
Alexey Bataev [Tue, 16 Jun 2020 16:24:09 +0000 (12:24 -0400)]
[OPENMP][DOCS]Update status of the supported constrcuts, NFC.
Sam McCall [Tue, 16 Jun 2020 16:05:01 +0000 (18:05 +0200)]
[Format] Add more proto enclosing function names
Alexander Belyaev [Tue, 16 Jun 2020 13:07:59 +0000 (15:07 +0200)]
[mlir][shape] Add a func to populate ShapeToShape patterns.
Differential Revision: https://reviews.llvm.org/D81933
Kirstóf Umann [Fri, 12 Jun 2020 16:15:20 +0000 (18:15 +0200)]
[analyzer][MallocChecker] PR46253: Correctly recognize standard realloc
https://bugs.llvm.org/show_bug.cgi?id=46253
This is an obvious hack because realloc isn't any more affected than other
functions modeled by MallocChecker (or any user of CallDescription really),
but the nice solution will take some time to implement.
Differential Revision: https://reviews.llvm.org/D81745