platform/upstream/llvm.git
4 years ago[mlir][vulkan-runner] Add basic timing for compute pipeline
Lei Zhang [Tue, 3 Mar 2020 16:25:10 +0000 (11:25 -0500)]
[mlir][vulkan-runner] Add basic timing for compute pipeline

This commit adds timestamp query commands in Vulkan runner's
compute pipeline to gain insights into how long it takes to
run the compute shader. This commit also adds timing from CPU
side for VkQueueSubmit and vkQueueWaitIdle.

Differential Revision: https://reviews.llvm.org/D75531

4 years agoRevert "[GlobalISel][Localizer] Enable intra-block localization of already-local...
Muhammad Omair Javaid [Wed, 4 Mar 2020 22:12:28 +0000 (03:12 +0500)]
Revert "[GlobalISel][Localizer] Enable intra-block localization of already-local uses."

This reverts commit e91e1df6ab74006e96b0cca94192e935542705a4.

4 years ago[libc++] Un-xfail GCC test for new version
Eric Fiselier [Wed, 4 Mar 2020 22:09:29 +0000 (17:09 -0500)]
[libc++] Un-xfail GCC test for new version

4 years agoAMDGPU/GlobalISel: Don't use vector G_EXTRACT in arg lowering
Matt Arsenault [Tue, 25 Feb 2020 19:45:07 +0000 (14:45 -0500)]
AMDGPU/GlobalISel: Don't use vector G_EXTRACT in arg lowering

Create a wider source vector, and unmerge with dead defs like the
legalizer. The legalization handling for G_EXTRACT is incomplete, and
it's preferrable to keep everything in 32-bit pieces.

We should probably start moving these functions into utils, since we
have a growing number of places that do almost the same thing.

4 years agoAMDGPU/GlobalISel: Switch target in argument test
Matt Arsenault [Tue, 25 Feb 2020 20:00:37 +0000 (15:00 -0500)]
AMDGPU/GlobalISel: Switch target in argument test

Since this is still largely relying on the DAG argument type lowering
code, this has inherited the problem where i16 vectors have a
different ABI on targets with and without legal i16. Switch to using a
target with legal i16, so the i16 vector argument tests are more
useful.

4 years agoGlobalISel: Move some legalizer functions to utils
Matt Arsenault [Mon, 24 Feb 2020 23:09:08 +0000 (18:09 -0500)]
GlobalISel: Move some legalizer functions to utils

4 years agoGlobalISel: Set alignment on function argument stack load/store
Matt Arsenault [Wed, 28 Aug 2019 04:01:46 +0000 (00:01 -0400)]
GlobalISel: Set alignment on function argument stack load/store

4 years ago[OPENMP50]Codegen for 'destroy' clause in depobj directive.
Alexey Bataev [Wed, 4 Mar 2020 21:15:28 +0000 (16:15 -0500)]
[OPENMP50]Codegen for 'destroy' clause in depobj directive.

If the destroy clause is appplied, the previously allocated memory for
the dependency object must be destroyed.

4 years agoFix regression in bdad0a1: force rebuilding of StmtExpr nodes in
Richard Smith [Wed, 4 Mar 2020 21:18:46 +0000 (13:18 -0800)]
Fix regression in bdad0a1: force rebuilding of StmtExpr nodes in
TreeTransform if the 'dependent' flag would change.

4 years ago[MLIR][Affine][NFC] Remove obsolete and ambiguous definitions
Frank Laub [Wed, 4 Mar 2020 21:12:01 +0000 (13:12 -0800)]
[MLIR][Affine][NFC] Remove obsolete and ambiguous definitions

Summary:
Looks like a refactor that was never completed.

This change removes some unused and ambiguous definitions.

Reviewed By: bondhugula, nicolasvasilache, rriddle

Differential Revision: https://reviews.llvm.org/D75586

4 years ago[libc++] Fix typo in REQUIRES that broke the GCC-tot bot configuration
Louis Dionne [Wed, 4 Mar 2020 21:10:30 +0000 (16:10 -0500)]
[libc++] Fix typo in REQUIRES that broke the GCC-tot bot configuration

Explained in https://reviews.llvm.org/D70117#inline-688897.

4 years ago[lldb][NFC] Use C++11 for loop in ClangASTSource::FindExternalLexicalDecls
Raphael Isemann [Wed, 4 Mar 2020 20:57:05 +0000 (12:57 -0800)]
[lldb][NFC] Use C++11 for loop in ClangASTSource::FindExternalLexicalDecls

4 years ago[x86][SLH] Rm liveness check from data invariance check
Zola Bridges [Wed, 4 Mar 2020 20:48:52 +0000 (21:48 +0100)]
[x86][SLH] Rm liveness check from data invariance check

SLH had two functions named isDataInvariant and isDataInvariantLoad that
checked whether the passed instruction was data invariant. For some instructions,
if the EFLAGS were dead then they were considered data invariant, otherwise
they were not considered data invariant.

In this patch, I extracted that EFLAGS liveness check and made it
explicit at every call to isDataInvariant and isDataInvariantLoad.
This makes the isDataInvariant function behave more generally
and preserves the liveness check behavior that SLH would like to have.

Tested via llvm-lit llvm/test/CodeGen/X86/speculative-load-hardening*

This is the first step in making these two data invariance checks
available for non-SLH passes. The second step is to move the passes from
SLH to X86InstrInfo.cpp. I'll follow up with a patch that does that.

Differential Revision: https://reviews.llvm.org/D70283

4 years ago[libc++] Mark another test as flaky
Eric Fiselier [Wed, 4 Mar 2020 20:48:33 +0000 (15:48 -0500)]
[libc++] Mark another test as flaky

4 years ago[ORC] Add some debugging output for initializers.
Lang Hames [Wed, 4 Mar 2020 20:36:50 +0000 (12:36 -0800)]
[ORC] Add some debugging output for initializers.

This output can be useful in tracking down initialization failures in the JIT.

4 years ago[llvm-readelf] Make --all output order closer to GNU readelf
Fangrui Song [Wed, 4 Mar 2020 03:49:14 +0000 (19:49 -0800)]
[llvm-readelf] Make --all output order closer to GNU readelf

https://bugs.llvm.org/show_bug.cgi?id=43403

The new order makes it easy to compare the two tools' --all.

Reviewed By: grimar, rupprecht

Differential Revision: https://reviews.llvm.org/D75592

4 years ago[mlir][spirv] Support integer signedness
Lei Zhang [Wed, 4 Mar 2020 20:12:33 +0000 (15:12 -0500)]
[mlir][spirv] Support integer signedness

This commit updates SPIR-V dialect to support integer signedness
by relaxing various checks for signless to just normal integers.

The hack for spv.Bitcast can now be removed.

Differential Revision: https://reviews.llvm.org/D75611

4 years ago[llvm-objdump] --syms: print st_size as "%016" PRIx64 instead of "%08" PRIx64 for...
Fangrui Song [Wed, 4 Mar 2020 00:59:33 +0000 (16:59 -0800)]
[llvm-objdump] --syms: print st_size as "%016" PRIx64 instead of "%08" PRIx64 for 64-bit objects

This is GNU objdump's behavior and it is reasonable to match.

Reviewed By: grimar

Differential Revision: https://reviews.llvm.org/D75588

4 years ago[mlir][ods] Improve integer signedness modelling
Lei Zhang [Wed, 4 Mar 2020 19:41:27 +0000 (14:41 -0500)]
[mlir][ods] Improve integer signedness modelling

A previous commit added support for integer signedness in C++
IntegerType. This change introduces ODS definitions for
integer types and integer (element) attributes w.r.t. signedness.

This commit also updates various existing definitions' descriptions
to mention signless where suitable to make it more clear.

Positive and non-negative integer attributes are removed to avoid
the explosion of subclasses. Instead, one should use more atmoic
constraints together with Confined to model that. For example,
`Confined<..., [IntPositive]>`.

Differential Revision: https://reviews.llvm.org/D75610

4 years ago[OPENMP50]Codegen for 'depend' clause in depobj directive.
Alexey Bataev [Wed, 4 Mar 2020 19:37:51 +0000 (14:37 -0500)]
[OPENMP50]Codegen for 'depend' clause in depobj directive.

Added codegen for 'depend' clause in depobj directive. The depend clause
is emitted as kmp_depend_info <deps>[<number_of_items_in_clause> + 1]. The
first element in this array is reserved for storing the number of
elements in this array: <deps>[0].base_addr =
<number_of_items_in_clause>;

This extra element is required to implement 'update' and 'destroy'
clauses. It is required to know the size of array to destroy it
correctly and to update depency kind.

4 years agoRevert "Partially inline basic_string copy constructor in UNSTABLE"
Martijn Vels [Wed, 4 Mar 2020 19:51:21 +0000 (14:51 -0500)]
Revert "Partially inline basic_string copy constructor in UNSTABLE"

This reverts commit 8cf76e913b867a98a9843aa1b3d782632ed5d930.

We are investigating why this causes compilation issues under -O3

4 years ago[lld][WebAssembly] Add support for --rsp-quoting
Sam Clegg [Wed, 4 Mar 2020 19:29:45 +0000 (11:29 -0800)]
[lld][WebAssembly] Add support for --rsp-quoting

This also changes to default style to match the host.

Reviewed By: ruiu

Differential Revision: https://reviews.llvm.org/D75577

4 years ago[libc++] Avoid deprecation warning in the implementation of __has_rebind
Louis Dionne [Wed, 4 Mar 2020 19:38:51 +0000 (14:38 -0500)]
[libc++] Avoid deprecation warning in the implementation of __has_rebind

4 years agoGenerate Callee Saved Register (CSR) related cfi directives like .cfi_restore.
Wei Mi [Thu, 13 Feb 2020 17:23:27 +0000 (09:23 -0800)]
Generate Callee Saved Register (CSR) related cfi directives like .cfi_restore.

https://reviews.llvm.org/D42848 only handled CFA related cfi directives but
didn't handle CSR related cfi. The patch adds the CSR part. Basically it reuses
the framework created in D42848. For each basicblock, the patch tracks which
CSR set have been saved at its CFG predecessors's exits, and compare the CSR
set with the set at its previous basicblock's exit (The previous block is the
block laid before the current block). If the saved CSR set at its previous
basicblock's exit is larger, .cfi_restore will be inserted.

The patch also generates proper .cfi_restore in epilogue to make sure the
saved CSR set is consistent for the incoming edges of each block.

Differential Revision: https://reviews.llvm.org/D74303

4 years ago[CodeGenPrepare] Handle ExtractValueInst in dupRetToEnableTailCallOpts
Guozhi Wei [Wed, 4 Mar 2020 19:10:32 +0000 (11:10 -0800)]
[CodeGenPrepare] Handle ExtractValueInst in dupRetToEnableTailCallOpts

    As the test case shows if there is an ExtractValueInst in the Ret block, function dupRetToEnableTailCallOpts can't duplicate it into the block containing call. So later no tail call is generated in CodeGen.

    This patch adds the ExtractValueInst handling code in function dupRetToEnableTailCallOpts and FoldReturnIntoUncondBranch, and later tail call can be generated for this case.

Differential Revision: https://reviews.llvm.org/D74242

4 years ago[lldb] Fix typo in ClangASTSource logging statement
Raphael Isemann [Wed, 4 Mar 2020 19:05:48 +0000 (11:05 -0800)]
[lldb] Fix typo in ClangASTSource logging statement

4 years ago[mlir][spirv] Add get() method to TargetEnvAttr taking raw values
Lei Zhang [Mon, 2 Mar 2020 22:27:05 +0000 (17:27 -0500)]
[mlir][spirv] Add get() method to TargetEnvAttr taking raw values

Also make the getResourceLimits() method more explicit about its return type.

Differential Revision: https://reviews.llvm.org/D75484

4 years ago[libc++] Move std::string extern template declarations to end of class.
Eric Fiselier [Wed, 4 Mar 2020 18:54:04 +0000 (13:54 -0500)]
[libc++] Move std::string extern template declarations to end of class.

They need to appear before any member functions are ODR used, because
they change the visibility of many of these functions and otherwise
they could end up with hidden visibility in the DSO.

4 years ago[libc++] Revert to previous implementation of __has_rebind
Louis Dionne [Wed, 4 Mar 2020 18:54:58 +0000 (13:54 -0500)]
[libc++] Revert to previous implementation of __has_rebind

The new implementation introduced in 5b1e5b43 broke the bot running GCC 5.

4 years ago[ELF][test] Improve llvm-objdump -t tests
Fangrui Song [Wed, 4 Mar 2020 16:17:35 +0000 (08:17 -0800)]
[ELF][test] Improve llvm-objdump -t tests

In many cases, llvm-nm or llvm-readelf is more suitable.

4 years ago[LSR] Add masked load and store handling
David Green [Wed, 4 Mar 2020 11:45:41 +0000 (11:45 +0000)]
[LSR] Add masked load and store handling

This teaches Loop Strength Reduction the details about masked load and
store address operands, so that it can have a better time optimising
them as it would for normal loads and stores.

Differential Revision: https://reviews.llvm.org/D75371

4 years ago[lldb] Fix several LLDB_LOGs with wrong indices in ClangASTSource.cpp
Raphael Isemann [Wed, 4 Mar 2020 18:32:01 +0000 (10:32 -0800)]
[lldb] Fix several LLDB_LOGs with wrong indices in ClangASTSource.cpp

4 years agoRevert "Fix GSYM tests to run the yaml files and fix test failures on some machines."
Mitch Phillips [Wed, 4 Mar 2020 18:04:11 +0000 (10:04 -0800)]
Revert "Fix GSYM tests to run the yaml files and fix test failures on some machines."

This reverts commit 8d41f1a02369537cae1a7d00c0fa717fc3aca575.

This change broke the MSan buildbots - see comments in
https://reviews.llvm.org/D75390 for more information.

4 years ago[clang-format] Improve identification of C# nullables
Jonathan Coe [Wed, 4 Mar 2020 18:09:26 +0000 (18:09 +0000)]
[clang-format] Improve identification of C# nullables

Summary: Consider `? identifier =` and `? identifier;` to be nullable within function bodies.

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: cfe-commits, MyDeveloperDay

Tags: #clang-format, #clang

Differential Revision: https://reviews.llvm.org/D75606

4 years ago[libomptarget] Implement most hip atomic functions in terms of intrinsics
Jon Chesterfield [Wed, 4 Mar 2020 17:51:38 +0000 (17:51 +0000)]
[libomptarget] Implement most hip atomic functions in terms of intrinsics

Summary:
[libomptarget] Implement hip atomic functions in terms of intrinsics

All but atomicInc can be implemented using type generic clang intrinsics.
There is not yet a corresponding intrinsic for atomicInc in clang, only one in
LLVM. This patch leaves atomicInc as an unresolved symbol.

Reviewers: jdoerfert, ABataev, hfinkel, grokos, arsenm

Reviewed By: arsenm

Subscribers: sri, saiislam, wdng, jvesely, mgorny, jfb, openmp-commits

Tags: #openmp

Differential Revision: https://reviews.llvm.org/D73076

4 years ago[mlir][NFC] Sort the operations alphabetically and add header blocks
River Riddle [Wed, 4 Mar 2020 17:44:36 +0000 (09:44 -0800)]
[mlir][NFC] Sort the operations alphabetically and add header blocks

Summary:
The order of the operations has fallen out of sync as operations have been renamed and new ones have been added.

Differential Revision: https://reviews.llvm.org/D75540

4 years ago[InstCombine] Don't explicitly invoke const folding in shift combine
Nikita Popov [Wed, 4 Mar 2020 17:33:00 +0000 (18:33 +0100)]
[InstCombine] Don't explicitly invoke const folding in shift combine

InstCombine uses an IRBuilder that automatically performs
target-dependent constant folding, so explicitly invoking it here
is not necessary.

4 years ago[InstCombine] Use IRBuilder to create bitcast
Nikita Popov [Fri, 28 Feb 2020 21:29:54 +0000 (22:29 +0100)]
[InstCombine] Use IRBuilder to create bitcast

This makes sure that the constant expression bitcast goes through
target-dependent constant folding, and thus avoids an additional
iteration of InstCombine.

4 years ago[ConstProp] Add test for bitcast to gep fold; NFC
Nikita Popov [Sat, 29 Feb 2020 17:51:18 +0000 (18:51 +0100)]
[ConstProp] Add test for bitcast to gep fold; NFC

4 years ago[InstSimplify] Add additional icmp of gep folding test; NFC
Nikita Popov [Sat, 29 Feb 2020 17:24:20 +0000 (18:24 +0100)]
[InstSimplify] Add additional icmp of gep folding test; NFC

4 years ago[InstSimplify] Regenerate compare.ll checks; NFC
Nikita Popov [Sat, 29 Feb 2020 17:22:41 +0000 (18:22 +0100)]
[InstSimplify] Regenerate compare.ll checks; NFC

4 years ago[ConstantFolding] Always return something from ConstantFoldConstant
Nikita Popov [Tue, 3 Mar 2020 18:16:11 +0000 (19:16 +0100)]
[ConstantFolding] Always return something from ConstantFoldConstant

Spin-off from D75407. As described there, ConstantFoldConstant()
currently returns null for non-ConstantExpr/ConstantVector inputs,
but otherwise always returns non-null, independently of whether
any folding has happened or not.

This is confusing and makes consumer code more complicated.
I would expect either that ConstantFoldConstant() returns only if
it actually folded something, or that it always returns non-null.
I'm going to the latter possibility here, which appears to be more
useful considering existing usage.

Differential Revision: https://reviews.llvm.org/D75543

4 years ago[analyzer] decode() a bytes object to make Python3 happy
Jeremy Morse [Wed, 4 Mar 2020 17:08:17 +0000 (17:08 +0000)]
[analyzer] decode() a bytes object to make Python3 happy

The output of subprocess.check_output is decode()'d through the rest of
this python program, but one appears to have been missed for the output
of the call to "clang -print-file-name=include".

On Windows, with Python 3.6, this leads to the 'args' array being a mix of
bytes and strings, which causes exceptions later down the line.

I can't easily test with python2 on Windows, but python2 on Ubuntu 18.04
was happy with this change.

4 years ago[X86] Directly form VBROADCAST_LOAD in lowerShuffleAsBroadcast on AVX targets.
Craig Topper [Wed, 4 Mar 2020 07:45:59 +0000 (23:45 -0800)]
[X86] Directly form VBROADCAST_LOAD in lowerShuffleAsBroadcast on AVX targets.

If we would emit a VBROADCAST node, we can instead directly emit
a VBROADCAST_LOAD. This allows us to get rid of the special case
to use an f64 load on 32-bit targets for vXi64.

I believe there is more cleanup we can do later in this function,
but I'll do that in follow ups.

4 years ago[X86] Add tests showing failure to combine consecutive loads + FSHR into a single...
Simon Pilgrim [Wed, 4 Mar 2020 17:02:20 +0000 (17:02 +0000)]
[X86] Add tests showing failure to combine consecutive loads + FSHR into a single load

Similar to some of the regressions seen in D75114

4 years ago[X86] Add tests showing failure to combine consecutive loads + FSHL into a single...
Simon Pilgrim [Wed, 4 Mar 2020 15:04:03 +0000 (15:04 +0000)]
[X86] Add tests showing failure to combine consecutive loads + FSHL into a single load

Similar to some of the regressions seen in D75114

4 years ago[libc++][P0174] Deprecated/removed parts of default allocator.
Michael Park [Wed, 4 Mar 2020 16:27:14 +0000 (11:27 -0500)]
[libc++][P0174] Deprecated/removed parts of default allocator.

Differential Revision: https://reviews.llvm.org/D70117

4 years ago[lldb][NFC] Modernize logging UserExpression
Raphael Isemann [Wed, 4 Mar 2020 00:31:25 +0000 (16:31 -0800)]
[lldb][NFC] Modernize logging UserExpression

4 years agoFix modules build after MatrixBuilder patch
Raphael Isemann [Wed, 4 Mar 2020 17:01:45 +0000 (09:01 -0800)]
Fix modules build after MatrixBuilder patch

The addition of MatrixBuilder.h broke the modules build:
```
While building module 'LLVM_intrinsic_gen' imported from llvm-project/llvm/lib/IR/AbstractCallSite.cpp:19:
While building module 'LLVM_IR' imported from llvm-project/llvm/include/llvm/IR/Argument.h:19:
In file included from <module-includes>:6:
llvm-project/llvm/include/llvm/IR/MatrixBuilder.h:19:10: fatal error: cyclic dependency in module 'LLVM_intrinsic_gen': LLVM_intrinsic_gen -> LLVM_IR -> LLVM_intrinsic_gen
         ^
While building module 'LLVM_intrinsic_gen' imported from llvm-project/llvm/lib/IR/AbstractCallSite.cpp:19:
In file included from <module-includes>:1:
llvm-project/llvm/include/llvm/IR/Argument.h:19:10: fatal error: could not build module 'LLVM_IR'
 ~~~~~~~~^~~~~~~~~~~~~~~~~
llvm-project/llvm/lib/IR/AbstractCallSite.cpp:19:10: fatal error: could not build module 'LLVM_intrinsic_gen'
 ~~~~~~~~^~~~~~~~~~~~~~~~~~~~
```

4 years ago[libc++] Fix reverse_iterator test when UBSan is enabled
Louis Dionne [Wed, 4 Mar 2020 16:32:49 +0000 (11:32 -0500)]
[libc++] Fix reverse_iterator test when UBSan is enabled

The goal of the test was only to check that we could access the
`this->current` member of std::reverse_iterator from a derived
class, but in doing so we incremented a null iterator, which is UB.

4 years ago[PassManager] adjust VectorCombine placement
Sanjay Patel [Wed, 4 Mar 2020 16:08:28 +0000 (11:08 -0500)]
[PassManager] adjust VectorCombine placement

The initial placement of vector-combine in the opt pipeline revealed phase ordering bugs:
https://bugs.llvm.org/show_bug.cgi?id=45015
https://bugs.llvm.org/show_bug.cgi?id=42022

This patch contains a few independent changes:

1. Move the pass up in the pipeline, so it happens just after loop-vectorization.
   This is only to keep vectorization passes together in the pipeline at the moment.
   I don't have evidence of interaction between these yet.
2. Add an -early-cse pass after -vector-combine to clean up redundant ops. This was
   partly proposed as far back as rL219644 (which is why it's effectively being moved
   in the old PM code). This is important because the subsequent -instcombine doesn't
   work as well without EarlyCSE. With the CSE, -instcombine is able to squash
   shuffles together in 1 of the tests (because those are simple "select" shuffles).
3. Remove the -vector-combine pass that was running after SLP. We may want to do that
   eventually, but I don't have a test case to support it yet.

Differential Revision: https://reviews.llvm.org/D75145

4 years ago[analyzer][NFC] Use CallEvent checker callback in GenericTaintChecker
Balazs Benics [Wed, 4 Mar 2020 16:03:59 +0000 (17:03 +0100)]
[analyzer][NFC] Use CallEvent checker callback in GenericTaintChecker

Summary:
Intended to be a non-functional change but it turned out CallEvent handles
constructor calls unlike CallExpr which doesn't triggered for constructors.

All in all, this change shouldn't be observable since constructors are not
yet propagating taintness like functions.
In the future constructors should propagate taintness as well.

This change includes:
 - NFCi change all uses of the CallExpr to CallEvent
 - NFC rename some functions, mark static them etc.
 - NFC omit explicit TaintPropagationRule type in switches
 - NFC apply some clang-tidy fixits

Reviewers: NoQ, Szelethus, boga95

Reviewed By: Szelethus

Subscribers: martong, whisperity, xazax.hun, baloghadamsoftware, szepet,
a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, Charusso, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D72035

4 years ago[SDAG] simplify FP binops to undef
Sanjay Patel [Wed, 4 Mar 2020 15:22:09 +0000 (10:22 -0500)]
[SDAG] simplify FP binops to undef

As discussed in the commit thread for rGa253a2a and D73978, we can do more undef folding for FP ops.
The nnan and ninf fast-math-flags specify that if an operand is the disallowed value, the result is
poison, so we can produce an undef result.

But this doesn't work as expected (the undef operand cases remain) because of a Flags propagation
problem in SelectionDAGBuilder.

I've added DAGCombiner calls to enable these for the other cases because we've shown in other
patches that (because of the limited way that SDAG iterates), it is possible to miss simplifications
like this if they are done only at node creation time.

Several potential follow-ups to expand on this patch are possible.

Differential Revision: https://reviews.llvm.org/D75576

4 years ago[mlir] support conversion of parallel reduction loops to std
Alex Zinenko [Wed, 4 Mar 2020 10:44:22 +0000 (11:44 +0100)]
[mlir] support conversion of parallel reduction loops to std

Recently introduced support for converting sequential reduction loops to
CFG of basic blocks in the Standard dialect makes it possible to perform
a staged conversion of parallel reduction loops into a similar CFG by
using sequential loops as an intermediate step. This is already the case
for parallel loops without reduction, so extend the pattern to support
an additional use case.

Differential Revision: https://reviews.llvm.org/D75599

4 years agoQuote a python executable path
Jeremy Morse [Wed, 4 Mar 2020 15:22:31 +0000 (15:22 +0000)]
Quote a python executable path

On my Windows machine at least, the path to python contains a space.

4 years ago[OPENMP50]'source' and 'sink' kinds are not allowed in depobj.
Alexey Bataev [Wed, 4 Mar 2020 14:29:50 +0000 (09:29 -0500)]
[OPENMP50]'source' and 'sink' kinds are not allowed in depobj.

Do not allow to use 'sink' and 'source' dependency kinds in 'depobj'
directive.

4 years ago[openmp] OpenMP 5.1 omp_display_env function implementation.
AndreyChurbanov [Wed, 4 Mar 2020 15:15:05 +0000 (18:15 +0300)]
[openmp] OpenMP 5.1 omp_display_env function implementation.

Patch by Michael Klemm.

Differential Revision: https://reviews.llvm.org/D74956

4 years ago[libc++] Mark the shared_future.wait_for test as being flaky
Louis Dionne [Wed, 4 Mar 2020 15:10:02 +0000 (10:10 -0500)]
[libc++] Mark the shared_future.wait_for test as being flaky

It is timing sensitive and it fails from time to time. If marking it as
flaky doesn't help, we can try tweaking the time outs.

4 years agoHandle PluginAttrInstances using ManagedStatic
John Brawn [Wed, 4 Mar 2020 13:25:06 +0000 (13:25 +0000)]
Handle PluginAttrInstances using ManagedStatic

We need to make sure that PluginAttrInstances is deleted before shared libraries
are unloaded, because otherwise when deleting its contents we'll try to access
a virtual destructor which no longer exists.

As shared libraries are managed using ManagedStatic we can do this by also using
ManagedStatic for PluginAttrInstances as ManagedStatics are deleted in reverse
order of construction and we know that PluginAttrInstances will only be
accessed, and thus constructed, after shared libraries have been loaded.

4 years agoRevert "Promote nameless lambda used by dl_iterate_phdr to named function to clean...
Mikhail Maltsev [Wed, 4 Mar 2020 14:54:24 +0000 (14:54 +0000)]
Revert "Promote nameless lambda used by dl_iterate_phdr to named function to clean up control flow inside findUnwindSections. Also, expose the data structure"

This reverts commit d93371238e7f5d5f9c506a88cf4f05f8dea9d008.

The commit broke the build in several configurations (including
Windows and bare-metal). For details see comments in
https://reviews.llvm.org/D75480

4 years ago[MLIR] Add a comment to `requiredOperandCount` arg in LoopOps.cpp.
Alexander Belyaev [Tue, 3 Mar 2020 23:45:45 +0000 (00:45 +0100)]
[MLIR] Add a comment to `requiredOperandCount` arg in LoopOps.cpp.

Differential Revision: https://reviews.llvm.org/D75578

4 years ago[lldb][NFC] Move local variables near to their usage
Tatyana Krasnukha [Wed, 12 Feb 2020 10:50:34 +0000 (13:50 +0300)]
[lldb][NFC] Move local variables near to their usage

4 years ago[lldb] Make BreakpointResolver hold weak_ptr instead of raw pointer to breakpoint
Tatyana Krasnukha [Tue, 3 Mar 2020 10:29:12 +0000 (13:29 +0300)]
[lldb] Make BreakpointResolver hold weak_ptr instead of raw pointer to breakpoint

This prevents calling Breakpoint::shared_from_this of an object that is not owned by any shared_ptr.

Differential Revision: https://reviews.llvm.org/D74557

4 years ago[ARM] Change all tests from "thumbv8.1-m.main" to "thumbv8.1m.main". NFC
David Green [Wed, 4 Mar 2020 12:56:42 +0000 (12:56 +0000)]
[ARM] Change all tests from "thumbv8.1-m.main" to "thumbv8.1m.main". NFC

4 years ago[lld] Avoid creating files outside of work directory.
Stephan Herhut [Wed, 4 Mar 2020 13:39:58 +0000 (14:39 +0100)]
[lld] Avoid creating files outside of work directory.

Summary:
A test is passing `-o -` to lld in the hope of writing the output to
standard out but that is not the case. Instead it creates a file named
`-.lto.o`. This fixes it by creating a temporary file in the work
directory.

Differential Revision: https://reviews.llvm.org/D75605

4 years agoLost regression test from commit 5a63813dc7f.
Evgeniy Brevnov [Wed, 4 Mar 2020 12:49:53 +0000 (19:49 +0700)]
Lost regression test from commit 5a63813dc7f.

4 years ago[lldb] Reduce duplication in CommandObjectDisassemble
Pavel Labath [Tue, 3 Mar 2020 16:03:55 +0000 (17:03 +0100)]
[lldb] Reduce duplication in CommandObjectDisassemble

This command had nearly identical code for the "then" and "else"
branches of the "if (m_options.num_instructions != 0)" condition.

This patch factors out the common parts of the two blocks to reduce
duplication.

4 years ago[clang-format] parse C# object initialisers
Jonathan Coe [Wed, 4 Mar 2020 12:13:33 +0000 (12:13 +0000)]
[clang-format] parse C# object initialisers

Summary:
Treat C# object initializers as braced lists.

Allow lambdas inside C# braced lists.

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: cfe-commits, MyDeveloperDay

Tags: #clang-format, #clang

Differential Revision: https://reviews.llvm.org/D75473

4 years agoAdd rsqrt op to Standard dialect and lower it to LLVM dialect.
Adrian Kuegel [Fri, 28 Feb 2020 14:57:38 +0000 (15:57 +0100)]
Add rsqrt op to Standard dialect and lower it to LLVM dialect.

Summary:
This adds an rsqrt op to the standard dialect, and lowers
it as 1 / sqrt to the LLVM dialect.

Differential Revision: https://reviews.llvm.org/D75353

4 years agoUse new DWARFDataExtractor::getInitialLength in DWARFDebugFrame
Pavel Labath [Tue, 3 Mar 2020 17:27:39 +0000 (18:27 +0100)]
Use new DWARFDataExtractor::getInitialLength in DWARFDebugFrame

4 years agoUse new DWARFDataExtractor::getInitialLength in DWARFDebugPubTable
Pavel Labath [Tue, 3 Mar 2020 17:51:12 +0000 (18:51 +0100)]
Use new DWARFDataExtractor::getInitialLength in DWARFDebugPubTable

4 years agoUse new DWARFDataExtractor::getInitialLength in DWARFUnit
Pavel Labath [Tue, 3 Mar 2020 17:52:56 +0000 (18:52 +0100)]
Use new DWARFDataExtractor::getInitialLength in DWARFUnit

4 years agoUse new DWARFDataExtractor::getInitialLength in DWARFVerifier
Pavel Labath [Tue, 3 Mar 2020 17:57:18 +0000 (18:57 +0100)]
Use new DWARFDataExtractor::getInitialLength in DWARFVerifier

4 years agoUse DWARFDataExtractor::getInitialLength in debug_aranges
Pavel Labath [Mon, 2 Mar 2020 11:48:59 +0000 (12:48 +0100)]
Use DWARFDataExtractor::getInitialLength in debug_aranges

Summary:
getInitialLength is a *DWARF*DataExtractor method so I had to "upgrade"
some DataExtractors to be able to make use of it.

Reviewers: ikudrin, jhenderson, probinson

Subscribers: aprantl, hiraditya, llvm-commits, dblaikie

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D75535

4 years agoUse DWARFDataExtractor::getInitialLength in DWARFDebugAddr
Pavel Labath [Fri, 28 Feb 2020 09:03:00 +0000 (10:03 +0100)]
Use DWARFDataExtractor::getInitialLength in DWARFDebugAddr

Reviewers: ikudrin, jhenderson, probinson

Subscribers: hiraditya, dblaikie, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D75532

4 years ago[AArch64][SVE] Add SVE2 intrinsic for xar
Kerry McLaughlin [Wed, 4 Mar 2020 11:30:20 +0000 (11:30 +0000)]
[AArch64][SVE] Add SVE2 intrinsic for xar

Summary: Implements the @llvm.aarch64.sve.xar intrinsic

Reviewers: andwar, c-rhodes, dancgr, efriedma, rengolin

Reviewed By: andwar

Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, cfe-commits, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D75160

4 years ago[clangd] Fix buildbots
Kadir Cetinkaya [Wed, 4 Mar 2020 11:41:18 +0000 (12:41 +0100)]
[clangd] Fix buildbots

4 years ago[DependenceAnalysis] Dependecies for loads marked with "ivnariant.load" should not...
Evgeniy Brevnov [Wed, 4 Mar 2020 08:36:51 +0000 (15:36 +0700)]
[DependenceAnalysis] Dependecies for loads marked with "ivnariant.load" should not be shared with general accesses(PR42151).

Summary:
This is second attempt to fix the problem with incorrect dependencies reported in presence of invariant load. Initial fix (https://reviews.llvm.org/D64405) was reverted due to a regression reported in https://reviews.llvm.org/D70516.

The original fix changed caching behavior for invariant loads. Namely such loads are not put into the second level cache (NonLocalDepInfo). The problem with that fix is the first level cache  (CachedNonLocalPointerInfo) still works as if invariant loads were in the second level cache. The solution is in addition to not putting dependence results into the second level cache avoid putting info about invariant loads into the first level cache as well.

Reviewers: jdoerfert, reames, hfinkel, efriedma

Reviewed By: jdoerfert

Subscribers: DaniilSuchkov, hiraditya, bmahjour, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D73027

4 years agoFix some getAs/castAs null dereference static analyzer warnings.
Simon Pilgrim [Wed, 4 Mar 2020 11:25:34 +0000 (11:25 +0000)]
Fix some getAs/castAs null dereference static analyzer warnings.

Use castAs if we know the cast should succeed (or we're dereferencing without check), the castAs will assert as well so we can remove local non-null asserts.

4 years ago[AMDGPU] performCvtF32UByteNCombine - revisit node after src operand simplification.
Simon Pilgrim [Wed, 4 Mar 2020 10:53:27 +0000 (10:53 +0000)]
[AMDGPU] performCvtF32UByteNCombine - revisit node after src operand simplification.

If SimplifyDemandedBits succeeds in simplifying the byte src, add the CVT_F32_UBYTE node back to the worklist as we might be able to simplify further.

Yet another step towards removing SelectionDAG::GetDemandedBits.

4 years ago[Matrix] Add IR MatrixBuilder.
Florian Hahn [Wed, 4 Mar 2020 11:13:48 +0000 (11:13 +0000)]
[Matrix] Add IR MatrixBuilder.

This builder provides a convenient way for targets to lower various matrix
operations to LLVM IR, making use of matrix intrinsics where available.

Reviewers: anemet, Gerolf, hfinkel, andrew.w.kaylor, LuoYuanke

Reviewed By: anemet

Differential Revision: https://reviews.llvm.org/D72280

4 years ago[clangd] Fix windows buildbots
Kadir Cetinkaya [Wed, 4 Mar 2020 11:07:13 +0000 (12:07 +0100)]
[clangd] Fix windows buildbots

4 years ago[llvm-ar][test] Add to llvm-ar test coverage
gbreynoo [Wed, 4 Mar 2020 10:56:48 +0000 (10:56 +0000)]
[llvm-ar][test] Add to llvm-ar test coverage

- Added handling of thin archives to symtab.test.
- Added handling of newlines to response.test.
62fa3332c9c1af1e66dfecd40f5b4e78882998b2 exposed behaviour
  regarding the use of -- on the command line. Added
  double-hyphen.test to cover this.

Differential Revision: https://reviews.llvm.org/D73333

4 years ago[AST] Refactor propagation of dependency bits. NFC
Ilya Biryukov [Mon, 2 Mar 2020 15:07:09 +0000 (16:07 +0100)]
[AST] Refactor propagation of dependency bits. NFC

Summary:
This changes introduces an enum to represent dependencies as a bitmask
and extract common patterns from code that computes dependency bits into
helper functions.

Reviewers: rsmith, martong, shafik, ilya-biryukov, hokein

Subscribers: hokein, sammccall, Mordante, riccibruno, merge_guards_bot, rnkovacs, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D71920

4 years agoAttempt to fix buildbot after 497c110e
evgeny [Wed, 4 Mar 2020 10:05:02 +0000 (13:05 +0300)]
Attempt to fix buildbot after 497c110e

4 years ago[clangd] Make use of syntax tokens in ReplayPreamble
Kadir Cetinkaya [Wed, 19 Feb 2020 16:36:41 +0000 (17:36 +0100)]
[clangd] Make use of syntax tokens in ReplayPreamble

Summary: Replace usage of RawLexer with syntax tokens inside ReplayPreamble.

Reviewers: sammccall

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D74842

4 years ago[clangd] Fix early selection for non-vardecl declarators
Kadir Cetinkaya [Tue, 25 Feb 2020 08:33:52 +0000 (09:33 +0100)]
[clangd] Fix early selection for non-vardecl declarators

Summary:
Selection tree was performing an early claim only for VarDecls, but
there are other cases where we can have declarators, e.g. FieldDecls. This patch
extends the early claim logic to all types of declarators.

Fixes https://github.com/clangd/clangd/issues/292

Reviewers: sammccall

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D75106

4 years ago[lld][ELF][COFF] Fix archived bitcode files naming
evgeny [Wed, 4 Mar 2020 09:46:31 +0000 (12:46 +0300)]
[lld][ELF][COFF] Fix archived bitcode files naming

Differential revision: https://reviews.llvm.org/D75422

4 years ago[Object/ELF] - Fix the offset type used in ELFFile<ELFT>::getEntry().
Georgii Rymar [Wed, 4 Mar 2020 09:33:10 +0000 (12:33 +0300)]
[Object/ELF] - Fix the offset type used in ELFFile<ELFT>::getEntry().

We use size_t for a file offset what is wrong, because size_t is 32-bit
value on 32-bit platforms.

I was reported that after my 0b511c23021
"[llvm-readobj] - Report warnings instead of errors for broken relocations."

The following error is observed on 32-bit Arch Linux:

[100%] Running all regression tests
FAIL: LLVM :: tools/llvm-readobj/ELF/relocation-errors.test (52954 of 54768)
******************** TEST 'LLVM :: tools/llvm-readobj/ELF/relocation-errors.test' FAILED ***

...
llvm-project/llvm/test/tools/llvm-readobj/ELF/relocation-errors.test:9:14:error: LLVM-NEXT: expected string not found in input
# LLVM-NEXT: warning: '[[FILE]]': unable to print relocation 1 in section 3: unable to access section [index 6] data at 0x17e7e7e8b0: offset goes past the end of file
             ^
<stdin>:9:1: note: scanning from here
/llvm-project/build/bin/llvm-readobj: warning: 'llvm-project/build/test/tools/llvm-readobj/ELF/Output/relocation-errors.test.tmp64': unable to print relocation 1 in section 3: unable to access section [index 6] data at 0xe7e7e8b0: offset goes past the end of file

This patch should fix the issue.

4 years ago[ARM,MVE] Add the `vshlcq` intrinsics.
Simon Tatham [Tue, 3 Mar 2020 17:37:14 +0000 (17:37 +0000)]
[ARM,MVE] Add the `vshlcq` intrinsics.

Summary:
The VSHLC instruction performs a left shift of a whole vector register
by an immediate shift count up to 32, shifting in new bits at the low
end from a GPR and delivering the shifted-out bits from the high end
back into the same GPR.

Since the instruction produces two outputs (the shifted vector
register and the output GPR of shifted-out bits), it has to be
instruction-selected in C++ rather than Tablegen.

Reviewers: MarkMurrayARM, dmgreen, miyuki, ostannard

Reviewed By: miyuki

Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D75445

4 years ago[ARM,MVE] Add the `vsbciq` intrinsics.
Simon Tatham [Tue, 3 Mar 2020 17:37:05 +0000 (17:37 +0000)]
[ARM,MVE] Add the `vsbciq` intrinsics.

Summary:
These are exactly parallel to the existing `vadciq` intrinsics, which
we implemented last year as part of the original MVE intrinsics
framework setup.

Just like VADC/VADCI, the MVE VSBC/VSBCI instructions deliver two
outputs, both of which the intrinsic exposes: a modified vector
register and a carry flag. So they have to be instruction-selected in
C++ rather than Tablegen. However, in this case, that's trivial: the
same C++ isel routine we already have for VADC works unchanged, and
all we have to do is to pass it a different instruction id.

Reviewers: MarkMurrayARM, dmgreen, miyuki, ostannard

Reviewed By: miyuki

Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D75444

4 years ago[X86] Directly form VBROADCAST_LOAD for BUILD_VECTOR of splat loads in lowerBuildVect...
Craig Topper [Tue, 3 Mar 2020 05:59:44 +0000 (21:59 -0800)]
[X86] Directly form VBROADCAST_LOAD for BUILD_VECTOR of splat loads in lowerBuildVectorAsBroadcast.

4 years ago[analyzer] AnalysisDeclContext: Refactor and documentation
Charusso [Wed, 4 Mar 2020 06:06:35 +0000 (07:06 +0100)]
[analyzer] AnalysisDeclContext: Refactor and documentation

Summary:
`ScopeContext` wanted to be a thing, but sadly it is dead code.

If you wish to continue the work in D19979, here was a tiny code which
could be reused, but that tiny and that dead, I felt that it is unneded.

Note: Other changes are truly uninteresting.

Reviewed By: NoQ

Differential Revision: https://reviews.llvm.org/D73519

4 years ago[analyzer] AnalyzerOptions: Remove 'fixits-as-remarks'
Charusso [Wed, 4 Mar 2020 05:55:50 +0000 (06:55 +0100)]
[analyzer] AnalyzerOptions: Remove 'fixits-as-remarks'

Summary: The new way of checking fix-its is `%check_analyzer_fixit`.

Reviewed By: NoQ, Szelethus, xazax.hun

Differential Revision: https://reviews.llvm.org/D73729

4 years ago[analyzer] FixItHint: Apply and test hints with the Clang-Tidy's script
Charusso [Wed, 4 Mar 2020 05:24:52 +0000 (06:24 +0100)]
[analyzer] FixItHint: Apply and test hints with the Clang-Tidy's script

Summary:
This patch introduces a way to apply the fix-its by the Analyzer:
`-analyzer-config apply-fixits=true`.

The fix-its should be testable, therefore I have copied the well-tested
`check_clang_tidy.py` script. The idea is that the Analyzer's workflow
is different so it would be very difficult to use only one script for
both Tidy and the Analyzer, the script would diverge a lot.
Example test: `// RUN: %check-analyzer-fixit %s %t -analyzer-checker=core`

When the copy-paste happened the original authors were:
@alexfh, @zinovy.nis, @JonasToth, @hokein, @gribozavr, @lebedev.ri

Reviewed By: NoQ, alexfh, zinovy.nis

Differential Revision: https://reviews.llvm.org/D69746

4 years ago[HIP] Make sure, unused hip-pinned-shadow global var is kept within device code
hsmahesha [Wed, 4 Mar 2020 05:23:32 +0000 (10:53 +0530)]
[HIP] Make sure, unused hip-pinned-shadow global var is kept within device code

Summary:
hip-pinned-shadow global var should remain in the final code object irrespective
of whether it is used or not within the code. Add it to used list, so that it
will not get eliminated when it is unused.

Reviewers: yaxunl, tra, hliao

Reviewed By: yaxunl

Subscribers: hliao, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D75402

4 years ago[ValueTracking] Let isGuaranteedNotToBeUndefOrPoison look into branch conditions...
Juneyoung Lee [Sat, 29 Feb 2020 06:45:04 +0000 (15:45 +0900)]
[ValueTracking] Let isGuaranteedNotToBeUndefOrPoison look into branch conditions of dominating blocks' terminators

Summary:
```
  br i1 c, BB1, BB2:
BB1:
  use1(c)
BB2:
  use2(c)
```

In BB1 and BB2, c is never undef or poison because otherwise the branch would have triggered UB.

Checked with Alive2

Reviewers: xbolva00, spatel, lebedev.ri, reames, jdoerfert, nlopes, sanjoy

Reviewed By: reames

Subscribers: jdoerfert, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D75401

4 years ago[GlobalISel][Localizer] Enable intra-block localization of already-local uses.
Amara Emerson [Tue, 3 Mar 2020 19:36:47 +0000 (11:36 -0800)]
[GlobalISel][Localizer] Enable intra-block localization of already-local uses.

This changes the localizer to attempt intra-block localizer of instructions
that have local uses. This is useful because sometimes the entry block itself
has many uses of constant-like instructions, which would benefit from shortening
live ranges. Previously if an inst had no non-local uses, we wouldn't add it to
the list of instructions to attempt further intra-block localization.

This gives a 0.7% geomean code size improvement on CTMark.

Differential Revision: https://reviews.llvm.org/D75555

4 years ago[MC][test] Improve some llvm-objdump -t tests
Fangrui Song [Wed, 4 Mar 2020 01:14:25 +0000 (17:14 -0800)]
[MC][test] Improve some llvm-objdump -t tests

Delete two redundant tests.

4 years ago[MLIR][NFC] Fix for VS2017 bug.
Frank Laub [Wed, 4 Mar 2020 00:24:03 +0000 (16:24 -0800)]
[MLIR][NFC] Fix for VS2017 bug.

Apparently there is a bug in VS2017 concerning compile-time constant
expressions.
https://developercommunityapi.westus.cloudapp.azure.com/content/problem/110435/not-compile-time-constant-expression.html

This change works with any C++11 compiler (including VS2017) and is a little bit
easier to read.

Reviewers: stella.stamenova, nicolasvasilache

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D75584