Douglas Yung [Tue, 31 Mar 2020 16:26:43 +0000 (09:26 -0700)]
Fix buildgo.sh script to fix linux build failure due to changes in
ad1466f8cbc5.
The above change used a binary literal that is not supported in c++11 mode when
using gcc. It was formalized into the c++14 standard and works when using that
mode to compile, so change the script to use c++14 instead.
Reviewed by: dvyukov
Differential Revision: https://reviews.llvm.org/D77111
Sterling Augustine [Fri, 20 Mar 2020 20:28:50 +0000 (13:28 -0700)]
New symbolizer option to print files relative to the compilation directory.
Summary: New "--relative" option to allow printing files relative to the compilation directory.
Reviewers: jhenderson
Subscribers: MaskRay, rupprecht, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76733
MaheshRavishankar [Tue, 31 Mar 2020 15:59:45 +0000 (08:59 -0700)]
[mlir][Linalg] Allow tiling of batch dimension for convolution ops with padding.
Existing tiling implementation of Linalg would still work for tiling
the batch dimensions of the convolution op.
Differential Revision: https://reviews.llvm.org/D76637
Florian Hahn [Tue, 31 Mar 2020 16:08:09 +0000 (17:08 +0100)]
[SCCP] Limit use of range info for binops to integers for now.
This fixes a crash when building the test suite.
Guillaume Chatelet [Tue, 31 Mar 2020 12:55:24 +0000 (12:55 +0000)]
[Alignment][NFC] Deprecate MachineMemOperand::getMachineMemOperand version that takes an untyped alignement.
Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet
Subscribers: hiraditya, jfb, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77138
Louis Dionne [Tue, 31 Mar 2020 15:53:04 +0000 (11:53 -0400)]
[libc++abi] Remove the old testit script
It's not used anymore, we use Lit as a test runner now (and have been
for a long time).
Tyker [Wed, 25 Mar 2020 21:07:03 +0000 (22:07 +0100)]
[AssumeBundles] Preserve information in EarlyCSE
Summary: this patch preserve information from various places in EarlyCSE into assume bundles.
Reviewers: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76769
Tyker [Wed, 25 Mar 2020 20:55:35 +0000 (21:55 +0100)]
[AssumeBundles] Preserve Information from Load/Store
Summary: This patch preserve dereferenceable, nonnull and alignment from loads and stores.
Reviewers: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76759
Fangrui Song [Tue, 17 Mar 2020 19:40:19 +0000 (12:40 -0700)]
[lld][COFF][ELF][WebAssembly] Replace --[no-]threads /threads[:no] with --threads={1,2,...} /threads:{1,2,...}
--no-threads is a name copied from gold.
gold has --no-thread, --thread-count and several other --thread-count-*.
There are needs to customize the number of threads (running several lld
processes concurrently or customizing the number of LTO threads).
Having a single --threads=N is a straightforward replacement of gold's
--no-threads + --thread-count.
--no-threads is used rarely. So just delete --no-threads instead of
keeping it for compatibility for a while.
If --threads= is specified (ELF,wasm; COFF /threads: is similar),
--thinlto-jobs= defaults to --threads=,
otherwise all available hardware threads are used.
There is currently no way to override a --threads={1,2,...}. It is still
a debate whether we should use --threads=all.
Reviewed By: rnk, aganea
Differential Revision: https://reviews.llvm.org/D76885
Med Ismail Bennani [Tue, 31 Mar 2020 00:33:42 +0000 (02:33 +0200)]
[lldb/DWARF] Fix evaluator crash when accessing empty stack.
This patch fixes a crash that happens on the DWARF expression evaluator
when trying to access the top of the stack while it's empty.
rdar://
60512489
Differential Revision: https://reviews.llvm.org/D77108
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Med Ismail Bennani [Tue, 31 Mar 2020 15:44:17 +0000 (17:44 +0200)]
Revert "[lldb/DWARF] Fix evaluator crash when accessing empty stack."
This reverts commit
e26eece1e2e7d7e6fbadb1207afef9b6353b5330.
Andy Davis [Tue, 31 Mar 2020 15:21:04 +0000 (08:21 -0700)]
[MLIR][Vector] Add support for TupleGetOp folding through InsertSlicesOp and ExtractSlicesOp.
Summary:
Add support for TupleGetOp folding through InsertSlicesOp and ExtractSlicesOp.
Vector-to-vector transformations for unrolling and lowering to hardware vectors
can generate chains of structured vector operations (InsertSlicesOp,
ExtractSlicesOp and ShapeCastOp) between the producer of a hardware vector
value and its consumer. Because InsertSlicesOp, ExtractSlicesOp and ShapeCastOp
are structured, we can track the location (tuple index and vector offsets) of
the consumer vector value through the chain of structured operations to the
producer, enabling a much more powerful producer-consumer fowarding of values
through structured ops and tuple, which in turn enables a more powerful
TupleGetOp folding transformation.
Reviewers: nicolasvasilache, aartbik
Reviewed By: aartbik
Subscribers: grosul1, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76889
Louis Dionne [Tue, 31 Mar 2020 15:17:11 +0000 (11:17 -0400)]
[libc++] Execute tests using an external shell
This makes it closer to how one would run the tests by hand, and it is
also closer to how the SSHExecutor runs the tests remotely. It also
allows using shell builtins in .sh.cpp tests when using %{exec}.
Med Ismail Bennani [Tue, 31 Mar 2020 00:33:42 +0000 (02:33 +0200)]
[lldb/DWARF] Fix evaluator crash when accessing empty stack.
This patch fixes a crash that happens on the DWARF expression evaluator
when trying to access the top of the stack while it's empty.
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Jonas Paulsson [Tue, 31 Mar 2020 13:32:01 +0000 (15:32 +0200)]
[SystemZ] Add isCommutable flag on VFA and VFM.
NFC
Review: Ulrich Weigand
Jonas Paulsson [Tue, 17 Mar 2020 12:19:30 +0000 (13:19 +0100)]
[SystemZ] Improve foldMemoryOperandImpl().
Fold MS(G)RKC -> MS(G)C.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D76771
Georgii Rymar [Mon, 17 Feb 2020 10:16:16 +0000 (13:16 +0300)]
[obj2yaml] - Teach tool to dump program headers.
Currently obj2yaml does not dump program headers,
this patch teaches it to do that.
Differential revision: https://reviews.llvm.org/D75342
Simon Pilgrim [Tue, 31 Mar 2020 14:47:30 +0000 (15:47 +0100)]
Revert rGefe59d6717dcdf7777acb9b7a734e1a520bdf22a "[X86][SSE] lowerShuffleWithPACK - extend to use chained PACKs for larger truncations"
This might be causing an issue on the fuchsia-x86_64-linux buildbot - reverting to see what happens.
Simon Pilgrim [Tue, 31 Mar 2020 14:37:41 +0000 (15:37 +0100)]
Fix enumeral mismatch warning. NFCI.
Don't mix llvm::ISD and llvm::X86ISD.
LLVM GN Syncbot [Tue, 31 Mar 2020 14:11:06 +0000 (14:11 +0000)]
[gn build] Port
154d517bc7d
Ehud Katz [Tue, 31 Mar 2020 13:46:01 +0000 (16:46 +0300)]
[ADT] Implement the Waymarking as an independent utility
This is the Waymarking algorithm implemented as an independent utility.
The utility is operating on a range of sequential elements.
First we "tag" the elements, by calling `fillWaymarks`.
Then we can "follow" the tags from every element inside the tagged
range, and reach the "head" (the first element), by calling
`followWaymarks`.
Differential Revision: https://reviews.llvm.org/D74415
Louis Dionne [Tue, 31 Mar 2020 14:05:34 +0000 (10:05 -0400)]
[libc++] Remove incorrect assertion in the filesystem tests
Based on the current discussion in https://llvm.org/PR45307, it seems
that it's legitimate for `temp_directory_path()` to return a path with
a trailing slash. Since `p.parent_path()` will never contain a trailing
slash, comparing it to the result of `temp_directory_path()` will fail
depending on whether `temp_directory_path()` returns a trailing slash
or not.
Simon Pilgrim [Tue, 31 Mar 2020 13:37:48 +0000 (14:37 +0100)]
[X86][SSE] lowerShuffleWithPACK - extend to use chained PACKs for larger truncations
If canLowerByDroppingEvenElements indicates that the shuffle is a N:1 compaction pattern and the inputs are suitably sign/zero extended then we can use a chain of PACKSS/PACKUS to compact.
This helps avoid PSHUFB (and its mask load) for short shuffle chains, shuffle combining will still replace with a PSHUFB if we have enough shuffles as getFauxShuffleMask can recognise PACKSS/PACKUS chains.
Louis Dionne [Mon, 30 Mar 2020 20:24:48 +0000 (16:24 -0400)]
[libc++] Quote the filesystem static env root in the source files instead of the command line
Otherwise, trying to reproduce a failing filesystem test by copy-pasting
the command-line used and running that in the shell won't work, because
the shell will eat quoting around the define and we'll end up with a
non-stringized path in the .cpp file.
Louis Dionne [Mon, 30 Mar 2020 17:22:06 +0000 (13:22 -0400)]
[libc++] Provide a method for adding compiler flags in lit.local.cfg files
That way, local lit configuration files don't have to worry about
deep-copying the compiler instance of the test format, which is
arguably an implementation detail.
We pass the config to this method even though it is not used by the
current test format because this allows replacing the current test
format by other test formats that would require the config to add
new compile flags.
Louis Dionne [Wed, 25 Mar 2020 17:28:27 +0000 (13:28 -0400)]
[libc++] Set filesystem test flags in a lit.local.cfg
This reduces the complexity of our already complex global lit configuration,
and also avoids cluttering the compilation commands for all tests with
things that are only relevant to the filesystem tests.
Differential Revision: https://reviews.llvm.org/D76785
Sanjay Patel [Tue, 31 Mar 2020 13:16:02 +0000 (09:16 -0400)]
[InstCombine] remove stray auto-generated test comment; NFC
The script now includes extra info about command-line options used
when generating its advertisement heading, but we don't want that
here. This is a special-case because we have enhanced the check
lines (as noted in the 2nd comment line).
Sam McCall [Tue, 24 Mar 2020 01:24:47 +0000 (02:24 +0100)]
[clangd] Support new semanticTokens request from LSP 3.16.
Summary:
This is a simpler request/response protocol.
Reference: https://github.com/microsoft/vscode-languageserver-node/blob/master/protocol/src/protocol.semanticTokens.proposed.ts
No attempt to support incremental formatting (yet).
Reviewers: hokein
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D76663
Louis Dionne [Tue, 24 Mar 2020 21:06:29 +0000 (17:06 -0400)]
[libc++] Do not rely on the environment to run filesystem tests
Previously, filesystem tests would require LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT
to be present in the environment and to match the value provided when
compiling, as a macro. This has the problem that it only allows for the
filesystem tests to be run on the same machine they are created.
Instead, we create a temporary directory for each test. Technically,
this is tricky to do because we're relying on some of the code that
we're testing to do this. However, there's no other portable way of
creating temporary direcories in C++, so this is difficult to avoid.
Differential Revision: https://reviews.llvm.org/D76731
Stefanos Baziotis [Tue, 31 Mar 2020 12:30:59 +0000 (15:30 +0300)]
[LoopTerminology] LCSSA form
Reviewed by: Michael Kruse (Meinersbur)
Differential Revision: https://reviews.llvm.org/D75233
Nathan James [Wed, 25 Mar 2020 19:22:09 +0000 (19:22 +0000)]
[clang-tidy] Fix crash in readability-redundant-string-cstr
Summary: Addresses [[ https://bugs.llvm.org/show_bug.cgi?id=45286 | clang-tidy-11: Crash in DynTypedMatcher::matches during readability-redundant-string-cstr check ]]
Reviewers: aaron.ballman, alexfh, gribozavr2
Reviewed By: gribozavr2
Subscribers: xazax.hun, cfe-commits
Tags: #clang, #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D76761
Florian Hahn [Tue, 31 Mar 2020 12:15:10 +0000 (13:15 +0100)]
[VPlan] Move test strs to variables, silence spurious C4129 (NFC).
This is a speculative fix to silence the spurious C4129 warning that
some version of MSVC generate for the raw string literals in the changed
files.
Before disabling the warning (D76428), try a potential fix suggested in
the review.
Peter Smith [Fri, 27 Mar 2020 10:15:02 +0000 (10:15 +0000)]
[LLD][ELF] Allow empty (.init|.preinit|.fini)_array to be RELRO
The default GNU linker script uses the following idiom for the array
sections. I'll use .init_array here, but this also applies to
.preinit_array and .fini_array sections.
.init_array :
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);
}
The C-library will take references to the _start and _end symbols to
process the array. This will make LLD keep the OutputSection even if there
are no .init_array sections. As the current check for RELRO uses the
section type for .init_array the above example with no .init_array
InputSections fails the checks as there are no .init_array sections to give
the OutputSection a type of SHT_INIT_ARRAY. This often leads to a
non-contiguous RELRO error message.
The simple fix is to a textual section match as well as a section type
match.
Differential Revision: https://reviews.llvm.org/D76915
Florian Hahn [Tue, 31 Mar 2020 10:10:00 +0000 (11:10 +0100)]
[ValueLattice] Distinguish between constant ranges with/without undef.
This patch updates ValueLattice to distinguish between ranges that are
guaranteed to not include undef and ranges that may include undef.
A constant range guaranteed to not contain undef can be used to simplify
instructions to arbitrary values. A constant range that may contain
undef can only be used to simplify to a constant. If the value can be
undef, it might take a value outside the range. For example, consider
the snipped below
define i32 @f(i32 %a, i1 %c) {
br i1 %c, label %true, label %false
true:
%a.255 = and i32 %a, 255
br label %exit
false:
br label %exit
exit:
%p = phi i32 [ %a.255, %true ], [ undef, %false ]
%f.1 = icmp eq i32 %p, 300
call void @use(i1 %f.1)
%res = and i32 %p, 255
ret i32 %res
}
In the exit block, %p would be a constant range [0, 256) including undef as
%p could be undef. We can use the range information to replace %f.1 with
false because we remove the compare, effectively forcing the use of the
constant to be != 300. We cannot replace %res with %p however, because
if %a would be undef %cond may be true but the second use might not be
< 256.
Currently LazyValueInfo uses the new behavior just when simplifying AND
instructions and does not distinguish between constant ranges with and
without undef otherwise. I think we should address the remaining issues
in LVI incrementally.
Reviewers: efriedma, reames, aqjune, jdoerfert, sstefan1
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D76931
James Henderson [Fri, 13 Mar 2020 14:28:52 +0000 (14:28 +0000)]
[ELF][test] Add test for --gc-sections + many sections
This test covers the case where --gc-sections is used when there are
many sections. In particular, it ensures that there is no adverse
interaction with common and absolute symbols.
Reviewed by: MaskRay, grimar
Differential Revision: https://reviews.llvm.org/D76003
James Henderson [Thu, 26 Mar 2020 14:47:33 +0000 (14:47 +0000)]
[lld][ELF][test] Improve deplib.s
The test had a few style issues, and I noticed a hole in the coverage
(namely that the search order wasn't tested). Adding cases for the hole
in turn meant other cases weren't important.
The .so test case isn't important, since the code is shared code, so
I've removed it. Additionally, I've modified the usage of the "bar"
directive to show that an unneeded library must still be present, or the
link will fail, even though it isn't linked in.
Reviewed by: MaskRay, grimar
Differential Revision: https://reviews.llvm.org/D76851
James Henderson [Thu, 26 Mar 2020 09:58:06 +0000 (09:58 +0000)]
[docs] Document coding standard for error and warning messages
In particular, these messages should start with a lower-case letter and
should have no trailing period at the end of the last sentence.
See http://lists.llvm.org/pipermail/llvm-dev/2020-March/140178.html for
context.
Reviewed by: aaron.ballman, hubert.reinterpretcast, rnk, dblaikie
Differential Revision: https://reviews.llvm.org/D76833
Denis Antrushin [Wed, 22 Jan 2020 13:40:32 +0000 (20:40 +0700)]
[SCEV] Use backedge SCEV of PHI only if its input is loop invariant
For the PHI node
%1 = phi [%A, %entry], [%X, %latch]
it is incorrect to use SCEV of backedge val %X as an exit value
of PHI unless %X is loop invariant.
This is because exit value of %1 is value of %X at one-before-last
iteration of the loop.
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D73181
Guillaume Chatelet [Tue, 31 Mar 2020 09:43:50 +0000 (09:43 +0000)]
[Alignment][NFC] Transitionning more getMachineMemOperand call sites
Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77127
Simon Pilgrim [Tue, 31 Mar 2020 10:04:46 +0000 (11:04 +0100)]
[X86] Combine concat(palignr,palignr) -> palignr(concat,concat)
combineX86ShufflesRecursively should handle this someday
Simon Pilgrim [Mon, 30 Mar 2020 14:41:28 +0000 (15:41 +0100)]
[X86] Move canLowerByDroppingEvenElements earlier to be with matchShuffleWithPACK. NFCI.
Make sure its defined earlier so more shuffle lowering methods can use it.
Daan Sprenkels [Sun, 29 Mar 2020 19:48:54 +0000 (21:48 +0200)]
[InstCombine] Transform extelt-trunc -> bitcast-extelt
Canonicalize the case when a scalar extracted from a vector is
truncated. Transform such cases to bitcast-then-extractelement.
This will enable erasing the truncate operation.
This commit fixes PR45314.
reviewers: spatel
Differential revision: https://reviews.llvm.org/D76983
Tom Weaver [Tue, 31 Mar 2020 09:18:12 +0000 (10:18 +0100)]
[Dexter] Add support for Windows to regression test suite.
This patch addresses the issue of the regression suite not running on windows
hardware. It changes the following things:
* add new dexter regression suite command to lit.cfg.py that makes use of the
clang-cl_vs2015 and dbgend builder and debuggers.
* sprinkle the new regressionsuite command through the feature and tool tests
that require them.
* mark certain problem tests on windows
* [revert fix] fixed darwin regression test failures by adding unsupported line
for system-darwin to command tests.
There's a couple of tests that fail (or pass) in unexpected ways on Windows.
Problem tests are both the penalty and perfect expect_watch_type.cpp tests.
Type information reporting parity is not possible a this time in dexter due to
the nature of how different debuggers report type information back to their users.
reviewers: Orlando
Differential Revision: https://reviews.llvm.org/D76609
Shivam Mittal [Tue, 31 Mar 2020 09:16:11 +0000 (11:16 +0200)]
Correct the duplicate pragma marks in CommandObjectTarget.cpp
Summary: Resolve the two duplicated pragma marks in lldb/source/Commands/CommandObjectTarget.cpp
Reviewers: teemperor
Reviewed By: teemperor
Subscribers: teemperor, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D77096
David Green [Mon, 30 Mar 2020 17:37:21 +0000 (18:37 +0100)]
[ARM] Fix qdadd operand order
qdadd is defined as sat(Rm + sat(2*Rn)). We had the Rm and Rn switched
the wrong way around.
Differential Revision: https://reviews.llvm.org/D77049
Denis Antrushin [Mon, 30 Mar 2020 16:47:56 +0000 (19:47 +0300)]
[Statepoint] Fix StatepointLoweringInfo::GCTransitionArgs initialization
Summary:
In method SelectionDAGBuilder::LowerStatepoint, array SI.GCTransitionArgs
is initialized from wrong part of ImmutableStatepoint class.
We copy gc args instead of transitions args.
Reviewers: reames, skatkov
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77075
Guillaume Chatelet [Tue, 31 Mar 2020 08:05:00 +0000 (08:05 +0000)]
[Alignment][NFC] Transitionning more getMachineMemOperand call sites
Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet
Subscribers: arsenm, dylanmckay, sdardis, nemanjai, jvesely, nhaehnle, hiraditya, kbarton, jrtc27, atanasyan, Jim, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77121
Sebastian Neubauer [Thu, 5 Mar 2020 13:23:59 +0000 (14:23 +0100)]
[AMDGPU] New llvm.amdgcn.ballot intrinsic
Add a new llvm.amdgcn.ballot intrinsic modeled on the ballot function
in GLSL and other shader languages. It returns a bitfield containing the
result of its boolean argument in all active lanes, and zero in all
inactive lanes.
This is intended to replace the existing llvm.amdgcn.icmp and
llvm.amdgcn.fcmp intrinsics after a suitable transition period.
Use the new intrinsic in the atomic optimizer pass.
Differential Revision: https://reviews.llvm.org/D65088
LLVM GN Syncbot [Tue, 31 Mar 2020 08:26:13 +0000 (08:26 +0000)]
[gn build] Port
581ba35291a
Florian Hahn [Tue, 31 Mar 2020 08:21:32 +0000 (09:21 +0100)]
[SCCP] Use constant ranges for casts.
For casts with constant range operands, we can use
ConstantRange::castOp.
Reviewers: davide, efriedma, mssimpso
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D71938
Kai Wang [Tue, 4 Feb 2020 14:20:10 +0000 (22:20 +0800)]
[RISCV] ELF attribute section for RISC-V.
Leverage ARM ELF build attribute section to create ELF attribute section
for RISC-V. Extract the common part of parsing logic for this section
into ELFAttributeParser.[cpp|h] and ELFAttributes.[cpp|h].
Differential Revision: https://reviews.llvm.org/D74023
Shengchen Kan [Tue, 31 Mar 2020 08:11:21 +0000 (16:11 +0800)]
[NFC] Remove unuseful infrastructure
Guillaume Chatelet [Tue, 31 Mar 2020 07:52:49 +0000 (07:52 +0000)]
[Alignment][NFC] Transition to inferAlignFromPtrInfo
Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet
Subscribers: arsenm, jvesely, nhaehnle, hiraditya, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77120
Marcel Hlopko [Tue, 31 Mar 2020 07:47:49 +0000 (09:47 +0200)]
[Syntax] Remove delayed folding from tree building.
Summary:
This patch removes delayed folding and replaces it with forward peeking.
Delayed folding was previously used as a solution to the problem that
declaration doesn't have a representation in the AST. For example following
code:
```
int a,b;
```
is expressed in the AST as:
```
TranslationUnitDecl
|-...
|-VarDecl `int a`
`-VarDecl `int b`
```
And in the syntax tree we need:
```
*: TranslationUnit
`-SimpleDeclaration
|-int
|-SimpleDeclarator
| `-a
|-,
|-SimpleDeclarator
| `-b
|-;
```
So in words, we need to create SimpleDeclaration to be a parent of
SimpleDeclarator nodes. Previously we used delayed folding to make sure SimpleDeclarations will be
eventually created. And in case multiple declarators requested declaration
creation, declaration range was extended to cover all declarators.
This design started to be hard to reason about, so we decided to replace it with
forward peeking. The last declarator node in the chain is responsible for creating
SimpleDeclaration for the whole chain. Range of the declaration corresponds to
the source range of the declarator node. Declarator decides whether its the last
one by peeking to the next AST node (see `isResponsibleForCreatingDeclaration`).
This patch does following:
* Removed delayed folding logic
* Tweaks Token.dumpForTests
* Moves getQualifiedNameStart inside BuildTreeVisitor
* Extracts BuildTreeVisitor.ProcessDeclaratorAndDeclaration
* Renames Builder.getDeclRange to Builder.getDeclarationRange and uses the
method in all places.
* Adds a bunch of tests
Reviewers: gribozavr2
Reviewed By: gribozavr2
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D76922
Guillaume Chatelet [Tue, 31 Mar 2020 07:41:36 +0000 (07:41 +0000)]
Fix missing override
Guillaume Chatelet [Tue, 31 Mar 2020 07:29:32 +0000 (07:29 +0000)]
Remove unused variable
Djordje Todorovic [Fri, 27 Mar 2020 08:11:48 +0000 (09:11 +0100)]
[Mips] Make MipsBranchExpansion aware of BBIT family of branch
Octeon branches (bbit0/bbit032/bbit1/bbit132) have an immediate operand,
so it is legal to have such replacement within
MipsBranchExpansion::replaceBranch().
According to the specification, a branch (e.g. bbit0 ) looks like:
bbit0 rs p offset // p is an immediate operand
if !rs<p> then branch
Without this patch, an assertion triggers in the method,
and the problem has been found in the real example.
Differential Revision: https://reviews.llvm.org/D76842
Guillaume Chatelet [Mon, 30 Mar 2020 18:55:41 +0000 (18:55 +0000)]
[Alignment][NFC] GlobalIsel Utils inferAlignFromPtrInfo
Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet
Subscribers: rovka, hiraditya, volkan, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77079
Guillaume Chatelet [Mon, 30 Mar 2020 18:50:49 +0000 (18:50 +0000)]
[Alignment][NFC] Simplify IRTranslator::getMemOpAlignment
Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77078
Dylan McKay [Tue, 31 Mar 2020 06:28:01 +0000 (19:28 +1300)]
[AVR] Generalize the previous interrupt bugfix to signal handlers too
Craig Topper [Tue, 31 Mar 2020 05:01:37 +0000 (22:01 -0700)]
[SelectionDAG] Add an assert that the input VT and output VT for ISD::FREEZE are the same.
Differential Revision: https://reviews.llvm.org/D77092
Dylan McKay [Tue, 31 Mar 2020 06:00:18 +0000 (19:00 +1300)]
[AVR] Respect the 'interrupt' function attribute
In the past, AVR functions were only lowered with interrupt-specific
machine code if the function was defined with the "avr-interrupt" or
"avr-signal" calling conventions.
This patch modifies the backend so that if the function does not have a
special calling convention, but does have an "interrupt" attribute,
that function is interpreted as a function with interrupts.
This also extracts the "is this function an interrupt" logic from
several disparate places in the backend into one AVRMachineFunctionInfo
attribute.
Bug found by Wilhelm Meier.
Wei Mi [Tue, 3 Mar 2020 21:19:32 +0000 (13:19 -0800)]
[SampleFDO] Port MD5 name table support to extbinary format.
Compbinary format uses MD5 to represent strings in name table. That gives smaller profile without the need of compression/decompression when writing/reading the profile. The patch adds the support in extbinary format. It is off by default but user can choose to enable it.
Note the feature of using MD5 in name table can bring very small chance of name conflict leading to profile mismatch. Besides, profile using the feature won't have the profile remapping support.
Differential Revision: https://reviews.llvm.org/D76255
Julian Lettner [Tue, 31 Mar 2020 04:35:42 +0000 (21:35 -0700)]
[lit] Fix test that relied on "single process" mode
The shtest-inject test relied on being executed in "single process" mode
and started to fail with a `PicklingError` after it was removed:
```
Can't pickle <class 'lit.TestingConfig.CustomFormat'>: attribute
lookup lit.TestingConfig.CustomFormat failed
```
This happened because the test config has to be serialized to the worker
process, but apparently the `CustomFormat` class defined inline is not
serializable.
This change allows passing the tested functionality (preamble_commands)
directly to `lit.formats.ShTest` so we can use it directly in the test.
Julian Lettner [Thu, 24 Oct 2019 04:32:29 +0000 (21:32 -0700)]
[lit] Remove single process mode
Remove the "serial run" abstraction which bypasses Python's
`multiprocessing.Pool` and instead directly runs tests without spawning
worker processes. This abstraction has not offered the benefits I hoped
it would and therefore does not carry its weight.
Julian Lettner [Thu, 24 Oct 2019 04:26:35 +0000 (21:26 -0700)]
[lit] Send back whole lit.Test object from worker process
In previous commits [1,2] I changed worker.py to only send back the test
result from the worker process instead of the whole test object. This
was a mistake. lit.Test contains fields (e.g., xfials, requires,
unsupported) that are only populated when we actually execute the test,
but are queried when we report the results in the parent process. This
commit essentially reverts the following changes:
[1]
a3d2f9b53ac006cb972b61b0dbfcb5babe4356bf
[2]
17bb660fb83e869652ac87b145b0e26b708aab60
Ahmed Taei [Tue, 31 Mar 2020 00:36:05 +0000 (17:36 -0700)]
Fix linalg.generic access of hoisted constants
Summary: Otherwise the added @generic_const_int will fail
Reviewers: nicolasvasilache, rriddle, mravishankar
Subscribers: mehdi_amini, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, grosul1, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77109
QingShan Zhang [Tue, 31 Mar 2020 02:47:14 +0000 (02:47 +0000)]
[PowerPC] Don't do the folding if the operand is R0/X0
We have this transformation in PowerPC peephole:
Replace instruction:
renamable $x28 = ADDI8 renamable $x7, -8
renamable $x28 = ADD8 killed renamable $x28, renamable $x0
STFD killed renamable $f0, -8, killed renamable $x28 :: (store 8 into %ir._ind_cast99.epil)
with:
renamable $x28 = ADDI8 renamable $x7, -16
STFDX killed renamable $f0, $x0, killed $x28 :: (store 8 into %ir._ind_cast99.epil)
It is invalid as the '$x0' in STFDX is constant 0, not register r0.
Reviewed By: Nemanjai
Differential Revision: https://reviews.llvm.org/D77034
Nico Weber [Tue, 31 Mar 2020 02:15:26 +0000 (22:15 -0400)]
[gn build] re-run "gn format" on all .gn and .gni files
Nico Weber [Tue, 31 Mar 2020 02:07:23 +0000 (22:07 -0400)]
[gn build] minor tweaks to sync script
- only complain about duplicate 'sources' lines if they contain
more than 1 elements each (before, 0 and 1 element lists were
counted too). In practice, this only has an effect for
clang/lib/Headers/BUILD.gn
- make the '# NOSORT' diag actually work. This too only affects
clang/lib/Headers/BUILD.gn.
In aggregate, changes to clang/lib/Headers/BUILD.gn still can't
be auto-merged, but for a slighly better reason.
Nico Weber [Tue, 31 Mar 2020 02:06:36 +0000 (22:06 -0400)]
[gn build] (manually) ort
5074776de47
Jessica Paquette [Mon, 30 Mar 2020 22:19:29 +0000 (15:19 -0700)]
[GlobalISel] Implement identity transforms for x op x -> x
When we have
```
a = G_OR x, x
```
or
```
b = G_AND y, y
```
We can drop the G_OR/G_AND and just use x/y respectively.
Also update arm64-fallback.ll because there was an or in there which hits this
transformation.
Differential Revision: https://reviews.llvm.org/D77105
Juneyoung Lee [Sat, 28 Mar 2020 08:38:27 +0000 (17:38 +0900)]
[LegalizeTypes] Add SoftenFloatRes_FREEZE
Summary: This adds SoftenFloatRes_FREEZE.
Reviewers: bkramer, JamesNagurne, craig.topper, efriedma
Reviewed By: craig.topper
Subscribers: AbigailLinden, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76980
Yaxun (Sam) Liu [Sat, 28 Mar 2020 13:03:13 +0000 (09:03 -0400)]
Rename options --cuda-gpu-arch and --no-cuda-gpu-arch
Per discussion
http://lists.llvm.org/pipermail/llvm-dev/2017-February/109930.html
Rename -cuda-gpu-arch and --no-cuda-gpu-arch to
--offload-arch and --no-offload-arch.
The original options will be alias to the new options.
Differential Revision: https://reviews.llvm.org/D76987
Richard Smith [Tue, 31 Mar 2020 00:19:30 +0000 (17:19 -0700)]
Fix crash if base specifier parsing hits an invalid type annotation.
Also change type annotation representation from ParsedType to TypeResult
to make it clearer to consumers that they can represent invalid types.
Thomas Lively [Fri, 27 Mar 2020 23:34:27 +0000 (16:34 -0700)]
[WebAssembly] Import wasm_simd128.h from Emscripten
Summary:
As the WebAssembly SIMD proposal nears stabilization, there is desire
to use it with toolchains other than Emscripten. Moving the intrinsics
header to clang will make it available to WASI toolchains as well.
Reviewers: aheejin, sunfish
Subscribers: dschuff, mgorny, sbc100, jgravelle-google, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D76959
Jessica Paquette [Mon, 23 Mar 2020 20:14:10 +0000 (13:14 -0700)]
[GlobalISel] Combine (x op 0) -> x for operations with a right identity of 0
Implement identity combines for operations like the following:
```
%a = G_SUB %b, 0
```
This can just be replaced with %b.
Over CTMark, this gives some minor size improvements at -O3.
Differential Revision: https://reviews.llvm.org/D76640
Eli Friedman [Mon, 30 Mar 2020 23:44:41 +0000 (16:44 -0700)]
[SVE][SelectionDAG] Fix dumping of EVTs to use correct API for element count.
This makes "-debug" output for SVE SelectionDAG readable.
Matt Arsenault [Mon, 17 Feb 2020 19:40:44 +0000 (14:40 -0500)]
Revert "[GISel]: Fix incorrect IRTranslation while translating null pointer types"
This reverts commit
b3297ef05179e1fee616b97b1c65b58e4c7fef17.
This change is incorrect. The current semantic of null in the IR is a
pointer with the bitvalue 0. It is not a cast from an integer 0, so
this should preserve the pointer type.
Nick Desaulniers [Mon, 30 Mar 2020 22:32:02 +0000 (15:32 -0700)]
[SelectionDAGISel] small cleanup to INLINEASM_BR selection. NFC
Summary:
This code was throwing away the opcode for a boolean, which was then
reconstructing the opcode from that boolean. Just pass the opcode, and
forget the boolean.
Reviewers: srhines
Reviewed By: srhines
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77100
Fangrui Song [Mon, 30 Mar 2020 21:37:46 +0000 (14:37 -0700)]
[ELF][test] Add linkerscript/linkorder-linked-to.s
Delete relocatable-linkorder.s which is covered.
Jonas Devlieghere [Mon, 30 Mar 2020 22:09:03 +0000 (15:09 -0700)]
[lldb/Reproducers] Always collect the whole dSYM in the reproducer
The FileCollector in LLDB collects every files that's used during a
debug session when capture is enabled. This ensures that the reproducer
only contains the files necessary to reproduce. This approach is not a
good fit for the dSYM bundle, which is a directory on disk, but should
be treated as a single unit.
On macOS LLDB have automatically find the matching dSYM for a binary by
its UUID. Having a incomplete dSYM in a reproducer can break debugging
even when reproducers are disabled.
This patch adds a was to specify a directory of interest to the
reproducers. It is called from SymbolVendorMacOSX with the path of the
dSYMs used by LLDB.
Differential revision: https://reviews.llvm.org/D76672
Matt Arsenault [Thu, 6 Feb 2020 13:34:18 +0000 (08:34 -0500)]
AMDGPU/GlobalISel: Fix crashing on weird G_INSERT sources
No test since these cases shouldn't really be getting through the
legalizer.
Louis Dionne [Mon, 30 Mar 2020 22:00:47 +0000 (18:00 -0400)]
Recommit "[libc++] NFC: Simplify substitutions by using lit recursive substitutions"
This re-commits
cd7f9751c300, which was reverted in
12f6b024f9f5 because
it broke the LLVM `check-all` target. This commit addresses the underlying
issue by not setting the lit_config.recursiveExpansionLimit parameter of
the libc++ test suite, which is otherwise picked up by other test suites
in LLVM.
Once we've settled on a fix for the underlying issue with
lit_config.recursiveExpansionLimit, we can start using it
again in libc++, but for now we can just work around it.
Daan Sprenkels [Mon, 30 Mar 2020 21:58:54 +0000 (23:58 +0200)]
Recommit "[InstCombine] Update assertions in InstCombine test; NFC"
Matt Arsenault [Sun, 29 Mar 2020 14:26:16 +0000 (10:26 -0400)]
AMDGPU: Form v_cvt_ubyte* with f16 results
We get 2 conversion instructions anyway. Previously we would get a
conversion with SDWA reading from a byte source, which has a larger
encoding.
Louis Dionne [Thu, 12 Mar 2020 22:01:20 +0000 (18:01 -0400)]
Enforce that libc++ and libc++abi are built in a monorepo layout
We will soon start removing technical debt and sharing code between the
two directories, so this first step is meant to discover potential places
where the libraries are built outside of a monorepo layout. I imagine
this could happen as a remnant of the pre-monorepo setup.
This was discussed on the libcxx-dev mailing list and we got overall
consensus on the direction. All consumers of libc++ and libc++abi
should already be doing so through the monorepo, however it is
possible that we catch some stragglers with this patch, in which
case it may need to be reverted temporarily.
Differential Revision: https://reviews.llvm.org/D76102
Matt Arsenault [Wed, 25 Mar 2020 14:45:07 +0000 (10:45 -0400)]
AMDGPU/GlobalISel: Form CVT_F32_UBYTE0
Matt Arsenault [Sun, 9 Feb 2020 00:08:34 +0000 (19:08 -0500)]
AMDGPU/GlobalISel: Handle image atomics
Matt Arsenault [Sat, 8 Feb 2020 04:37:54 +0000 (23:37 -0500)]
AMDGPU/GlobalISel: Start selecting image intrinsics
Does not handled atomics yet.
Matt Arsenault [Tue, 28 Jan 2020 16:28:51 +0000 (11:28 -0500)]
AMDGPU: Account for dmask when computing image mem size
Only the number of elements in the dmask will really be accessed.
Davide Italiano [Mon, 30 Mar 2020 21:15:56 +0000 (14:15 -0700)]
Recommit "[lldb] Make Fix-Its also apply to top-level expressions""
This reverts commit
fe5cb1c25fd6c07bbe3c0c698f36b74e6d04946f as it
was not responsible for breaking the bots. Sorry.
Davide Italiano [Mon, 30 Mar 2020 21:15:29 +0000 (14:15 -0700)]
Recommit "[lldb] Make TestExprDiagnostics.py pass again after enabling Fix-Its in test"
This reverts commit
55ed09d32e2602eba1dbb8aba1985246739c3909 as
it was not responsible for breaking the bots. Sorry.
Jay Foad [Mon, 30 Mar 2020 13:33:55 +0000 (14:33 +0100)]
AMDGPU: Implement getMemcpyLoopLoweringType
Summary: Based on a patch by Matt Arsenault.
Reviewers: rampitec, kerbowa, nhaehnle, arsenm
Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77057
Francesco Petrogalli [Tue, 24 Mar 2020 22:38:12 +0000 (22:38 +0000)]
[llvm][IR][CastInst] Update `castIsValid` for scalable vectors.
Reviewers: sdesmalen
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76738
Davide Italiano [Mon, 30 Mar 2020 21:04:14 +0000 (14:04 -0700)]
Revert "[lldb][NFC] Refactor Fix-It filter for warnings"
This reverts commit
11a5caee2aeae2546213366e7fc54095bb8163b9 as
it broke the bots.
Alexey Bataev [Mon, 30 Mar 2020 20:28:59 +0000 (16:28 -0400)]
[OPENMP50]Do not imply lvalue as base expression in array shaping
expression.
We should not assume that the base expression in the array shaping
operation is an lvalue of some form, it may be an rvalue.
Matt Arsenault [Sat, 8 Feb 2020 21:53:04 +0000 (16:53 -0500)]
AMDGPU/GlobalISel: Round up image operations with 5, 6 or 7 addresses
The instruction definitions are missing for these register types, so
round up to 8 like the DAG.
Matt Arsenault [Sat, 8 Feb 2020 14:28:27 +0000 (09:28 -0500)]
AMDGPU/GlobalISel: Start handling _L to _LZ optimization
We currently don't have a way to map to the equivalent intrinsic
opcode, so track immediate 0s in place of the address for the
selection to know to change the final opcode.
Davide Italiano [Mon, 30 Mar 2020 20:58:18 +0000 (13:58 -0700)]
Revert "[lldb] Make TestExprDiagnostics.py pass again after enabling Fix-Its in test"
This reverts commit
502a06fcdafa637a9890da16c2734bc1a36010f6 as it
breaks the macOS bots. Raph will take a look and re-commit.