platform/upstream/llvm.git
2 years agoAMDGPU: Regenerate some mir test checks with -NEXT
Matt Arsenault [Sat, 18 Dec 2021 15:07:00 +0000 (10:07 -0500)]
AMDGPU: Regenerate some mir test checks with -NEXT

2 years ago[clang-format] extern with new line brace without indentation
mydeveloperday [Sat, 18 Dec 2021 14:10:14 +0000 (14:10 +0000)]
[clang-format] extern with new line brace without indentation

https://github.com/llvm/llvm-project/issues/49804

Interaction between IndentExternBlock and AfterExternBlock means you cannot have AfterExternBlock = true and IndentExternBlock = NoIndent/Indent

This patch resolves that
```
BraceWrapping:
  AfterExternBlock: true
IndentExternBlock: AfterExternBlock
```
Fixes: #49804

Reviewed By: HazardyKnusperkeks, curdeius, owenpan

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

2 years ago[libcxx][test][NFC] noexcept tests for std::array
Konstantin Boyarinov [Sat, 18 Dec 2021 13:05:16 +0000 (16:05 +0300)]
[libcxx][test][NFC] noexcept tests for std::array

Minor change - add tests that std::array methods (data, (c/r)begin,
(c/r)end) are noexcept

Reviewed By: ldionne, rarutyun, #libc

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

2 years ago[clang-format] Extra spaces surrounding arrow in templated member call in variable...
mydeveloperday [Fri, 17 Dec 2021 18:33:17 +0000 (18:33 +0000)]
[clang-format] Extra spaces surrounding arrow in templated member call in variable decl

https://github.com/llvm/llvm-project/issues/43196

Fixes #43196

-> is incorrectly interpreted as a TrailingReturnArrow if we've seen an auto

```
auto p = new A;
auto x = p -> foo<1>();
```

Reviewed By: curdeius

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

2 years agoRevert "[DSE] Remove calls with known writes to dead memory"
Nikita Popov [Sat, 18 Dec 2021 08:11:33 +0000 (09:11 +0100)]
Revert "[DSE] Remove calls with known writes to dead memory"

This reverts commit a8a51fe55649f5e07f9f2973507dc20bc4e40765.

This breaks the strncpy-overflow.cpp test case.

2 years ago[ELF] Parallelize MergeNoTailSection::writeTo
Fangrui Song [Sat, 18 Dec 2021 07:30:42 +0000 (23:30 -0800)]
[ELF] Parallelize MergeNoTailSection::writeTo

With this patch, writing .debug_str is significantly for a program with
1.5G .debug_str:

* .debug_info 1.22s
* .debug_str 2.57s decreases to 0.66

2 years ago[clang] Strip redundant lambda (NFC)
Kazu Hirata [Sat, 18 Dec 2021 04:55:10 +0000 (20:55 -0800)]
[clang] Strip redundant lambda (NFC)

2 years ago[ELF] Use SmallVector for many SyntheticSections. NFC
Fangrui Song [Sat, 18 Dec 2021 03:22:15 +0000 (19:22 -0800)]
[ELF] Use SmallVector for many SyntheticSections. NFC

This decreases struct sizes and usually decreases the lld executable
size (39KiB for my x86-64 executable) (unless in some cases smaller
SmallVector leads to more inlining, e.g. StringTableBuilder).
For --gdb-index, there may be memory usage saving.

2 years ago[doc] Fix regex in ClangFormatStyleOptions for IncludeCategories
Joshua Huels [Sat, 18 Dec 2021 02:37:55 +0000 (18:37 -0800)]
[doc] Fix regex in ClangFormatStyleOptions for IncludeCategories

This fixes the regex in ClangFormatStyleOptions for IncludeCategories
to match anything starting with < or starting with | AND followed by
(gtest|gmock|isl|json) then /.

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

2 years agoUse DenseMap::lookup (NFC)
Kazu Hirata [Sat, 18 Dec 2021 02:19:24 +0000 (18:19 -0800)]
Use DenseMap::lookup (NFC)

2 years ago[lldb] Remove reproducer replay functionality
Jonas Devlieghere [Fri, 17 Dec 2021 22:45:24 +0000 (14:45 -0800)]
[lldb] Remove reproducer replay functionality

This is part of a bigger rework of the reproducer feature. See [1] for
more details.

[1] https://lists.llvm.org/pipermail/lldb-dev/2021-September/017045.html

2 years ago[clang] Use llvm::reverse (NFC)
Kazu Hirata [Sat, 18 Dec 2021 00:51:42 +0000 (16:51 -0800)]
[clang] Use llvm::reverse (NFC)

2 years agoWinMsvc.cmake: try lower-case include/lib when searching for windows SDK
Yuanfang Chen [Sat, 18 Dec 2021 00:26:08 +0000 (16:26 -0800)]
WinMsvc.cmake: try lower-case include/lib when searching for windows SDK

if the pascal case ones failed. Some tools, like msvc-wine/xwin, use the
lower case.

2 years ago[TSan][Darwin] Fix shadow mapping for iOS simulator on Apple Silicon
Julian Lettner [Thu, 16 Dec 2021 03:33:51 +0000 (19:33 -0800)]
[TSan][Darwin] Fix shadow mapping for iOS simulator on Apple Silicon

With the introduction of Apple Silicon `defined(__aarch64__)` is not a
reliable way to check for the platform anymore.

We want to use the "normal" `Mapping48AddressSpace` mapping everywhere
except devices, including the iOS simulators on AS.

Relevant revisions:
https://reviews.llvm.org/D35147
https://reviews.llvm.org/D86377
https://reviews.llvm.org/D107743
https://reviews.llvm.org/D107888

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

2 years ago[TSan][Darwin] Make malloc_size interceptor more robust
Julian Lettner [Fri, 17 Dec 2021 03:33:12 +0000 (19:33 -0800)]
[TSan][Darwin] Make malloc_size interceptor more robust

Previously we would crash in the TSan runtime if the user program passes
a pointer to `malloc_size()` that doesn't point into app memory.

In these cases, `malloc_size()` should return 0.

For ASan, we fixed a similar issue here:
https://reviews.llvm.org/D15008

Radar-Id: rdar://problem/86213149

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

2 years ago[runtimes] Remove LLVM_ENABLE_LLD
Vitaly Buka [Fri, 17 Dec 2021 23:03:57 +0000 (15:03 -0800)]
[runtimes] Remove LLVM_ENABLE_LLD

It was added D115852 and related patches and it brakes https://lab.llvm.org/buildbot/#/builders/fuchsia-x86_64-linux

2 years ago[Hexagon] Use is_contained (NFC)
Kazu Hirata [Fri, 17 Dec 2021 22:34:30 +0000 (14:34 -0800)]
[Hexagon] Use is_contained (NFC)

2 years ago[libomptarget][nfc] Refactor dlwrap.h for easier reuse in D115966 and upcoming patches
Jon Chesterfield [Fri, 17 Dec 2021 22:23:56 +0000 (22:23 +0000)]
[libomptarget][nfc] Refactor dlwrap.h for easier reuse in D115966 and upcoming patches

2 years ago[InstrProf][NFC] Require zlib for debug info tests
Ellis Hoag [Fri, 17 Dec 2021 21:44:16 +0000 (13:44 -0800)]
[InstrProf][NFC] Require zlib for debug info tests

There was a build failure on the `instrprof-debug-info-correlate.c` test
because zlib was missing so we need to require it to run the test.

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

2 years ago[clang-format] Refactor common handling of attributes. NFC.
Marek Kurdej [Fri, 17 Dec 2021 22:02:16 +0000 (23:02 +0100)]
[clang-format] Refactor common handling of attributes. NFC.

Reviewed By: MyDeveloperDay

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

2 years ago[llvm] Use none_of instead of \!any_of (NFC)
Kazu Hirata [Fri, 17 Dec 2021 21:48:56 +0000 (13:48 -0800)]
[llvm] Use none_of instead of \!any_of (NFC)

2 years ago[DSE] Remove calls with known writes to dead memory
Philip Reames [Fri, 17 Dec 2021 21:41:25 +0000 (13:41 -0800)]
[DSE] Remove calls with known writes to dead memory

The majority of this change is sinking logic from instcombine into MemoryLocation such that it can be generically reused. If we have a call with a single analyzable write to an argument, we can treat that as-if it were a store of unknown size.

Merging the code in this was unblocks DSE in the store to dead memory code paths. In theory, it should also enable classic DSE of such calls, but the code appears to not know how to use object sizes to refine unknown access bounds (yet).

In addition, this does make the isAllocRemovable path slightly stronger by reusing the libfunc and additional intrinsics bits which are already in getForDest.

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

2 years ago[lld-macho] Handle $ld$hide[$os] symbols.
Vy Nguyen [Wed, 15 Dec 2021 02:07:06 +0000 (21:07 -0500)]
[lld-macho] Handle $ld$hide[$os] symbols.

PR/52708

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

2 years ago[runtimes] Fix type on flag name in D115852
Vitaly Buka [Fri, 17 Dec 2021 21:36:25 +0000 (13:36 -0800)]
[runtimes] Fix type on flag name in D115852

2 years ago[SDAG] remove FP-to-int cast attribute check in fold to FTRUNC
Sanjay Patel [Fri, 17 Dec 2021 15:58:48 +0000 (10:58 -0500)]
[SDAG] remove FP-to-int cast attribute check in fold to FTRUNC

We were using a function attribute to indicate a non-standard FP mode,
but now we can use intrinsics for that job as shown in the new tests.
Presumably the x86 asm could be improved for that IR with intrinsics,
but I have not worked out exactly how to do that. Note that the
transform to FTRUNC still requires a hacky check for "nsz" (because
FMF are not applied to FP casts).

This is a cleanup based on the clang change in D115804 / 8c7f2a4f87192 .
This is effectively a revert of 5a90285bd98d2 + D46237 .

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

2 years ago[mlir][vscode] Highlight inside c++ raw strings
Jacques Pienaar [Fri, 17 Dec 2021 20:55:44 +0000 (12:55 -0800)]
[mlir][vscode] Highlight inside c++ raw strings

Within C++ raw strings with mlir delimitter use MLIR syntax.

Reviewed By: mehdi_amini

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

2 years ago[SLP][NFC]Adjust type in debug output loop.
Alexey Bataev [Fri, 17 Dec 2021 20:41:47 +0000 (12:41 -0800)]
[SLP][NFC]Adjust type in debug output loop.

The ReuseShuffleIndices indeces are integer, not unsigned, need to fix
the type in the debug print loop.

2 years ago[tests] Precommit tests from D115904
Philip Reames [Fri, 17 Dec 2021 20:42:42 +0000 (12:42 -0800)]
[tests] Precommit tests from D115904

2 years ago[lld/mac] Don't lose "weak ref" bit when doing LTO
Nico Weber [Fri, 17 Dec 2021 17:35:52 +0000 (12:35 -0500)]
[lld/mac] Don't lose "weak ref" bit when doing LTO

Fixes #52778.

Probably fixes Chromium crashing on startup on macOS 10.15 (and older) systems
when building with LTO, but I haven't verified that yet.

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

2 years ago[lldb] Remove --reproducer-finalize and associated functionality
Jonas Devlieghere [Fri, 17 Dec 2021 20:18:22 +0000 (12:18 -0800)]
[lldb] Remove --reproducer-finalize and associated functionality

This is part of a bigger rework of the reproducer feature. See [1] for
more details.

[1] https://lists.llvm.org/pipermail/lldb-dev/2021-September/017045.html

2 years agoFix macOS buildbots after https://reviews.llvm.org/D115324.
Greg Clayton [Fri, 17 Dec 2021 20:14:44 +0000 (12:14 -0800)]
Fix macOS buildbots after https://reviews.llvm.org/D115324.

The test was attempting to make a universal x86_64/arm64 binary, but some older bots don't have a macOS SDK that can handle this. Switching over to using a yaml file instead should solve the problem.

2 years ago[SLP][NFC]Use 'llvm::copy' instead of element-by-elemen copying.
Alexey Bataev [Fri, 17 Dec 2021 18:57:44 +0000 (10:57 -0800)]
[SLP][NFC]Use 'llvm::copy' instead of element-by-elemen copying.

2 years ago[DSE] Make isRemovable() for calls more robust (NFCI)
Nikita Popov [Fri, 17 Dec 2021 19:44:15 +0000 (20:44 +0100)]
[DSE] Make isRemovable() for calls more robust (NFCI)

We can only drop calls if they have an analyzable write, the return
value is not used, they don't throw and they don't diverge. The last
two conditions were previously not checked, because all the libcalls
with analyzable writes already happened to satisfy those conditions
anyway. This may not be true for generalizations (with D115904 in mind).

No test changes because the necessary attributes are already inferred
for currently supported libcalls.

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

2 years ago[Bitcode] Avoid setting invalid comdat pointer (NFC)
Nikita Popov [Fri, 17 Dec 2021 19:25:32 +0000 (20:25 +0100)]
[Bitcode] Avoid setting invalid comdat pointer (NFC)

Instead track global objects with implicit comdat in a separate
set. The current approach of temporarily assigning an invalid
comdat pointer is incompatible with D115864.

2 years ago[gn build] Port 65d7fd0239bf
LLVM GN Syncbot [Fri, 17 Dec 2021 18:52:31 +0000 (18:52 +0000)]
[gn build] Port 65d7fd0239bf

2 years ago[llvm] Strip redundant lambda (NFC)
Kazu Hirata [Fri, 17 Dec 2021 18:51:39 +0000 (10:51 -0800)]
[llvm] Strip redundant lambda (NFC)

2 years ago[openmp][amdgpu][nfc] Mark all external functions extern C to get type checking
Jon Chesterfield [Fri, 17 Dec 2021 18:32:17 +0000 (18:32 +0000)]
[openmp][amdgpu][nfc] Mark all external functions extern C to get type checking

2 years ago[Try2][InstrProf] Add Correlator class to read debug info
Ellis Hoag [Thu, 16 Dec 2021 22:45:54 +0000 (14:45 -0800)]
[Try2][InstrProf] Add Correlator class to read debug info

Extend `llvm-profdata` to read in a `.proflite` file and also a debug info file to generate a normal `.profdata` profile. This reduces the binary size by 8.4% when building an instrumented Clang binary without value profiling (164 MB vs 179 MB).

This work is part of the "lightweight instrumentation" RFC: https://groups.google.com/g/llvm-dev/c/r03Z6JoN7d4

This was first landed in https://reviews.llvm.org/D114566 but had to be reverted due to build errors.

Reviewed By: kyulee

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

2 years ago[clang-format] Fix formatting of the code that follows C# Lambda Expressions
Peter Stys [Fri, 17 Dec 2021 18:26:29 +0000 (10:26 -0800)]
[clang-format] Fix formatting of the code that follows C# Lambda Expressions

The alignment fix introduced by https://reviews.llvm.org/D104388 caused a regression whereby formatting of code that follows the lambda block is incorrect i.e. separate expressions are put on the same line.

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

2 years ago[gn build] Port cc324af0d64c
LLVM GN Syncbot [Fri, 17 Dec 2021 18:41:48 +0000 (18:41 +0000)]
[gn build] Port cc324af0d64c

2 years agoRevert "Port __sanitizer::StopTheWorld to Windows"
Martin Storsjö [Fri, 17 Dec 2021 18:37:25 +0000 (20:37 +0200)]
Revert "Port __sanitizer::StopTheWorld to Windows"

This reverts commit 3f5f687e2e8bf8b68c8a6ae0e000a8a78bfa70e5.

That commit broke building for mingw, where the sanitizers are
built with -nostdinc++, while the added source file includes
the C++ standard library's <algorithm>.

Additionally, the new code fails to build for i386, as it
unconditionally uses the CONTEXT member Rsp.

2 years ago[libc][Obvious] Change func_ to <func>_ in add_math_function.md.
Tue Ly [Fri, 17 Dec 2021 18:30:41 +0000 (13:30 -0500)]
[libc][Obvious] Change func_ to <func>_ in add_math_function.md.

2 years ago[clang-format] Formatter does not handle c++11 string literal prefix with stringize #
mydeveloperday [Fri, 17 Dec 2021 18:26:55 +0000 (18:26 +0000)]
[clang-format] Formatter does not handle c++11 string literal prefix with stringize #

https://github.com/llvm/llvm-project/issues/27740

Ensure
```
```
behave the same as
```
```

when formatted, ensure clang-format follows the conventions for `L` `u` `U` `u8`

https://docs.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp?redirectedfrom=MSDN&view=msvc-170

Fixes #27740

Reviewed By: curdeius, owenpan

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

2 years ago[OPENMP]Look through member function call base during implicit DSA analysis.
Alexey Bataev [Thu, 16 Dec 2021 21:25:24 +0000 (13:25 -0800)]
[OPENMP]Look through member function call base during implicit DSA analysis.

Need to look through the base of the member function calls at the DSA
analysis stage to correctly capture implicit class instances.

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

2 years ago[Target] Use range-based for loops (NFC)
Kazu Hirata [Fri, 17 Dec 2021 18:11:08 +0000 (10:11 -0800)]
[Target] Use range-based for loops (NFC)

2 years ago[funcattrs] Use early return to clarify code in determinePointerAccessAttrs [NFC]
Philip Reames [Fri, 17 Dec 2021 17:52:05 +0000 (09:52 -0800)]
[funcattrs] Use early return to clarify code in determinePointerAccessAttrs [NFC]

Instead of having the speculative path be the untaken path in the branch, explicitly have it return.  This does require tail duplicating one call, but the resulting code is shorter and easier to understand.  Also rewrite the condition using appropriate accessors.

2 years ago[OpenMP][NFC] update status for 5.1 'fail' atomic extension
Deepak Eachempati [Fri, 17 Dec 2021 17:44:46 +0000 (11:44 -0600)]
[OpenMP][NFC] update status for 5.1 'fail' atomic extension

Update status for the atomic 'fail' clause to "worked on".

Reviewed By: cchen

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

2 years ago[CodeGen] Fix an unused variable warning
Kazu Hirata [Fri, 17 Dec 2021 17:43:42 +0000 (09:43 -0800)]
[CodeGen] Fix an unused variable warning

This patch fixes:

  llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:22617:11: error:
  unused variable 'Ops' [-Werror,-Wunused-variable]

2 years ago[funcattrs] Use getDataOperandNo where appropriate [NFC]
Philip Reames [Fri, 17 Dec 2021 17:34:40 +0000 (09:34 -0800)]
[funcattrs] Use getDataOperandNo where appropriate [NFC]

We'd manually duplicated the same logic and assertions; we can use the utility instead.

2 years agoFix MSVC shadow variable warning. NFC.
Simon Pilgrim [Fri, 17 Dec 2021 17:31:39 +0000 (17:31 +0000)]
Fix MSVC shadow variable warning. NFC.

2 years ago[DAG] SimplifyVBinOp - remove FoldConstantArithmetic call.
Simon Pilgrim [Fri, 17 Dec 2021 17:22:10 +0000 (17:22 +0000)]
[DAG] SimplifyVBinOp - remove FoldConstantArithmetic call.

Constant folding (scalar/vector) is now consistently handled before the SimplifyVBinOp calls.

2 years ago[capturetracking] Explicitly check for callee operand [NFC]
Philip Reames [Fri, 17 Dec 2021 17:20:10 +0000 (09:20 -0800)]
[capturetracking] Explicitly check for callee operand [NFC]

Pull out an explicit check rather than relying on the fact that the callee operand is not a data operand.  The only real value is it gives us a clear place to move the comment, and makes the code slightly more understandable.

2 years ago[RISCV} Add FSGNJ_H to isAsCheapAsAMove and isCopyInstrImpl.
Craig Topper [Fri, 17 Dec 2021 16:58:28 +0000 (08:58 -0800)]
[RISCV} Add FSGNJ_H to isAsCheapAsAMove and isCopyInstrImpl.

This matches FSGNJ_S and FSGNJ_D.

2 years ago[DAG] Constant fold + canonicalize fp binops before SimplifyVBinOp call
Simon Pilgrim [Fri, 17 Dec 2021 17:01:17 +0000 (17:01 +0000)]
[DAG] Constant fold + canonicalize fp binops before SimplifyVBinOp call

Replace custom constant scalar/splat folding with FoldConstantArithmetic call and canonicalize commutative constant ops to the RHS before the SimplifyVBinOp call

2 years ago[libc++] Add a bunch of missing inline and _LIBCPP_HIDE_FROM_ABI in __threading_support
Louis Dionne [Thu, 16 Dec 2021 21:59:56 +0000 (16:59 -0500)]
[libc++] Add a bunch of missing inline and _LIBCPP_HIDE_FROM_ABI in __threading_support

The inline keyword is required on those functions because they are defined
in the headers, so we need them to be inline to avoid ODR violations.
While we're at it, slap _LIBCPP_HIDE_FROM_ABI on them because they are
implementation details and we don't want them to be part of our ABI under
any circumstances.

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

2 years ago[funcattrs] Consistently treat calling a function pointer as a non-capturing read
Philip Reames [Fri, 17 Dec 2021 16:32:43 +0000 (08:32 -0800)]
[funcattrs] Consistently treat calling a function pointer as a non-capturing read

We were being wildly inconsistent about what memory access was implied by an indirect function call. Depending on the call site attributes, you could get anything from a read, to unknown, to none at all. (The last was a miscompile.)

We were also always traversing the uses of a readonly indirect call. This is entirely unneeded as the indirect call does not capture. The callee might capture itself internally, but that has no implications for this caller. (See the nice explanation in the CaptureTracking comments if that case is confusing.)

Note that elsewhere in the same file, we were correctly computing the nocapture attribute for indirect calls. The changed case only resulted in conservatism when computing memory attributes if say the return value was written to.

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

2 years ago[AArch64][SVE] Improve code generation for VLS i1 masks
David Truby [Fri, 17 Dec 2021 15:46:19 +0000 (15:46 +0000)]
[AArch64][SVE] Improve code generation for VLS i1 masks

This patch partially resolves an issue for VLS code generation
where a mask is generated from a smaller width integer comparison
than the instruction using the mask requires.

Instead of sign extending a p register by converting it to a z
register, extending that, and converting back, we instead just
do an unpack of the p register.

A separate issue causes the code generation to still be poor when
the mask generation would fit in a neon register, as we then use
a neon comparison operation and have to convert that to a p register.
This will be resolved in a separate patch.

Reviewed By: peterwaller-arm

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

2 years ago[DAG] Move foldConstantFPMath() inside FoldConstantArithmetic
Simon Pilgrim [Fri, 17 Dec 2021 16:00:30 +0000 (16:00 +0000)]
[DAG] Move foldConstantFPMath() inside FoldConstantArithmetic

Further merging of integer and fp constant folding paths.

This allows us to handle undef vector arguments the same as scalar cases.

2 years ago[X86] Rename funnel-shift X32 check prefixes to X86
Simon Pilgrim [Fri, 17 Dec 2021 15:54:53 +0000 (15:54 +0000)]
[X86] Rename funnel-shift X32 check prefixes to X86

We try to use X32 for gnux32 triple checks only

2 years ago[X86] Rename lzcnt/tzcnt X32 check prefixes to X86
Simon Pilgrim [Fri, 17 Dec 2021 15:53:26 +0000 (15:53 +0000)]
[X86] Rename lzcnt/tzcnt X32 check prefixes to X86

We try to use X32 for gnux32 triple checks only

2 years ago[ConstantFolding] Unify handling of load from uniform value
Nikita Popov [Fri, 17 Dec 2021 09:31:50 +0000 (10:31 +0100)]
[ConstantFolding] Unify handling of load from uniform value

There are a number of places that specially handle loads from a
uniform value where all the bits are the same (zero, one, undef,
poison), because we a) don't care about the load offset in that
case and b) it bypasses casts that might not be legal generally
but do work with uniform values.

We had multiple implementations of this, with a different set of
supported values each time, as well as incomplete type checks in
some cases. In particular, this fixes the assertion reported in
https://reviews.llvm.org/D114889#3198921, as well as a similar
assertion that could be triggered via constant folding.

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

2 years ago[OpenMP][libomptarget] Fix __tgt_rtl_run_target_team_region_async API with missing...
Carlo Bertolli [Fri, 17 Dec 2021 15:56:57 +0000 (15:56 +0000)]
[OpenMP][libomptarget] Fix __tgt_rtl_run_target_team_region_async API with missing parameter
I missed the async info parameter in the first version of this API.

Reviewed By: JonChesterfield

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

2 years ago[x86] add RUN line to test file for 32-bit target; NFC
Sanjay Patel [Fri, 17 Dec 2021 15:38:43 +0000 (10:38 -0500)]
[x86] add RUN line to test file for 32-bit target; NFC

More coverage for D115885

2 years ago[AA] Correctly maintain the sign of PartiaAlias offset
Momchil Velikov [Fri, 17 Dec 2021 15:07:19 +0000 (15:07 +0000)]
[AA] Correctly maintain the sign of PartiaAlias offset

Preserve the invariant that offset reported in the case of a
`PartialAlias` between `Loc1` and `Loc2`, is such that
`Loc1 + Offset = Loc2`, where `Loc1` and `Loc2` are the first and
the second argument, respectively, in alias queries.

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

2 years ago[DAG] foldConstantFPMath - fold vector splats as well as scalar constants
Simon Pilgrim [Fri, 17 Dec 2021 15:19:13 +0000 (15:19 +0000)]
[DAG] foldConstantFPMath - fold vector splats as well as scalar constants

2 years agoRevert rG22dbc7a48bf7a3942a7e5ff57977ef828d240bd3 "[DAG] foldConstantFPMath - fold...
Simon Pilgrim [Fri, 17 Dec 2021 15:03:31 +0000 (15:03 +0000)]
Revert rG22dbc7a48bf7a3942a7e5ff57977ef828d240bd3 "[DAG] foldConstantFPMath - fold vector splats as well as scalar constants"

A followup patch uncovered an issue with allowing undef elements in the splat - I will reapply this with a fixed implementation.

2 years ago[CodeGen] Fix element type for sret argument
Nikita Popov [Fri, 17 Dec 2021 15:12:07 +0000 (16:12 +0100)]
[CodeGen] Fix element type for sret argument

Fix a mistake in 9bf917394eba3ba4df77cc17690c6d04f4e9d57f: sret
arguments use ConvertType, not ConvertTypeForMem, see the handling
in CodeGenTypes::GetFunctionType().

This fixes fp-matrix-pragma.c on s390x.

2 years agoSilence unused variable warning in release builds
Benjamin Kramer [Fri, 17 Dec 2021 15:05:40 +0000 (16:05 +0100)]
Silence unused variable warning in release builds

lldb/source/Core/DataFileCache.cpp:278:10: warning: unused variable 'pos' [-Wunused-variable]
    auto pos = m_string_to_offset.find(s);
         ^
lldb/source/Core/DataFileCache.cpp:277:18: warning: unused variable 'stroff' [-Wunused-variable]
    const size_t stroff = encoder.GetByteSize() - strtab_offset;
                 ^

2 years ago[AArch64][SVE] Teach cost model that masked loads/stores are cheap
Matthew Devereau [Thu, 19 Aug 2021 10:42:20 +0000 (11:42 +0100)]
[AArch64][SVE] Teach cost model that masked loads/stores are cheap

Reduce the cost of VLS masked loads/stores to make the vectorizor emit them more frequently.

2 years ago[DAG][sve] Lowering for VLS masked truncating stores
David Truby [Fri, 17 Dec 2021 14:46:49 +0000 (14:46 +0000)]
[DAG][sve] Lowering for VLS masked truncating stores

This extends the custom lowering for truncating stores on
fixed length vectors in SVE to support masked truncating stores.
It also adds a DAG combine for truncates followed by masked
stores.

Reviewed By: peterwaller-arm, paulwalker-arm

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

2 years ago[gn build] (manually) port fb9a075c813c5
Nico Weber [Fri, 17 Dec 2021 15:02:26 +0000 (10:02 -0500)]
[gn build] (manually) port fb9a075c813c5

2 years ago[lld/test] List one test dep per line
Nico Weber [Fri, 17 Dec 2021 14:50:59 +0000 (09:50 -0500)]
[lld/test] List one test dep per line

Matches llvm's and clang's /test/CMakeLists.txt, makes it easier to
see in diffs which deps get added, and makes it easier to see if
a given dependency is present or not.

No behavior change.

2 years ago[asan/mac] Fix remaining -Wformat warnings
Nico Weber [Fri, 17 Dec 2021 14:36:16 +0000 (09:36 -0500)]
[asan/mac] Fix remaining -Wformat warnings

AARCH64_GET_REG() is used to initialize uptrs, and after D79132
the ptrauth branch of its implementation explicitly casts to uptr.

The non-ptrauth branch returns ucontext->uc_mcontext->__ss.__fp (etc),
which has either type void* or __uint64_t (ref usr/include/mach/arm/_structs.h)
where __uint64_t is a unsigned long long (ref usr/include/arm/_types.h).
uptr is an unsigned long (ref
compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h). So explicitly
cast to uptr in this branch as well, so that AARCH64_GET_REG() has a
well-defined type.

Then change DUMPREGA64() tu use %lx instead of %llx since that's the right type
for uptr. (Most other places in compiler-rt print uptrs as %p and cast the arg
to (void*), but there are explicit 0x%016 format strings in the surroundings,
so be locally consistent with that.)

No behavior change, in the end it's just 64-bit unsigneds by slightly different
names.

2 years ago[DAG] foldConstantFPMath - fold vector splats as well as scalar constants
Simon Pilgrim [Fri, 17 Dec 2021 14:24:26 +0000 (14:24 +0000)]
[DAG] foldConstantFPMath - fold vector splats as well as scalar constants

2 years ago[asan/mac] Fix a few -Wformat warnings
Nico Weber [Fri, 17 Dec 2021 14:16:07 +0000 (09:16 -0500)]
[asan/mac] Fix a few -Wformat warnings

All other places cast uptrs to (void*) when printing it via
%p after D113099, so do that here too.

2 years ago[asan/mac] Fix a -Wformat warning
Nico Weber [Fri, 17 Dec 2021 14:15:06 +0000 (09:15 -0500)]
[asan/mac] Fix a -Wformat warning

internal_getpid() is manually cast to int in all other places that
pass its result to a printf string, so do that here too for now.

2 years agoImplement some constexpr vector unary operators, fix boolean-ops
Erich Keane [Mon, 13 Dec 2021 16:40:03 +0000 (08:40 -0800)]
Implement some constexpr vector unary operators, fix boolean-ops

As requested in the review, this implements unary +,-,~, and ! for
vector types.

All of our boolean operations on vector types should be using something
like vcmpeqd, which results in a mask of '-1' for the 'truth' type. We are
currently instead using '1', which results in some incorrect
calculations when used later (note that it does NOT result in a boolean
vector, as that is not really a thing).

This patch corrects that 1 to be a -1, and updates the affected tests.

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

2 years ago[AArch64] Regenerate concat_vector-truncate-combine.ll tests
Simon Pilgrim [Fri, 17 Dec 2021 13:59:19 +0000 (13:59 +0000)]
[AArch64] Regenerate concat_vector-truncate-combine.ll tests

2 years ago[NFC][SVE] Add missing tests for i32 INC/DEC patterns.
Paul Walker [Thu, 9 Dec 2021 18:30:22 +0000 (18:30 +0000)]
[NFC][SVE] Add missing tests for i32 INC/DEC patterns.

D111441 included trunc isel patterns for sve_int_pred_pattern_a
but no accompanying tests. This patch adds the missing tests and
also simplifies the isel patterns that use sve_cnt_shl_imm.

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

2 years ago[clang][deps] NFC: Unify ErrorOr patterns
Jan Svoboda [Fri, 17 Dec 2021 12:00:52 +0000 (13:00 +0100)]
[clang][deps] NFC: Unify ErrorOr patterns

This patch canonicalized some code into repetitive ErrorOr pattern. This will make refactoring easier if we ever come up with a way to simplify this.

2 years ago[clang][deps] NFC: Take and store entry as reference
Jan Svoboda [Fri, 17 Dec 2021 12:02:34 +0000 (13:02 +0100)]
[clang][deps] NFC: Take and store entry as reference

2 years ago[clang][deps] NFC: Remove explicit call to implicit constructor
Jan Svoboda [Fri, 17 Dec 2021 12:43:12 +0000 (13:43 +0100)]
[clang][deps] NFC: Remove explicit call to implicit constructor

2 years ago[clang][deps] NFC: Rename member variable
Jan Svoboda [Fri, 17 Dec 2021 12:30:38 +0000 (13:30 +0100)]
[clang][deps] NFC: Rename member variable

2 years ago[clang][deps] NFC: Fix whitespace formatting
Jan Svoboda [Fri, 17 Dec 2021 12:34:56 +0000 (13:34 +0100)]
[clang][deps] NFC: Fix whitespace formatting

2 years ago[lldb/qemu] Add emulator-env-vars setting
Pavel Labath [Fri, 17 Dec 2021 12:51:58 +0000 (13:51 +0100)]
[lldb/qemu] Add emulator-env-vars setting

This setting is for variables we want to pass to the emulator only --
then will be automatically removed from the target environment by our
environment diffing code. This variable can be used to pass various
QEMU_*** variables (although most of these can be passed through
emulator-args as well), as well as any other variables that can affect
the operation of the emulator (e.g. LD_LIBRARY_PATH).

2 years ago[DAG] foldConstantFPMath - use APFloat& for read-only constant fold arg. NFC.
Simon Pilgrim [Fri, 17 Dec 2021 12:33:54 +0000 (12:33 +0000)]
[DAG] foldConstantFPMath - use APFloat& for read-only constant fold arg. NFC.

We just need to copy the 1st arg (which we use for the constant fold result) - use a cheaper const reference for the 2nd arg.

2 years ago[gn build] (semiautomatically) port 3f5f687e2e8b
Nico Weber [Fri, 17 Dec 2021 12:26:34 +0000 (07:26 -0500)]
[gn build] (semiautomatically) port 3f5f687e2e8b

2 years ago[FuncSpec] Create helper to update state. NFC.
Sjoerd Meijer [Fri, 17 Dec 2021 12:02:44 +0000 (12:02 +0000)]
[FuncSpec] Create helper to update state. NFC.

This creates a helper function updateSpecializedFuncs and is a NFC just to make
the function that drives the transformation easier to read.

2 years ago[DAG] Constant fold + canonicalize integer binops before SimplifyVBinOp call
Simon Pilgrim [Fri, 17 Dec 2021 12:01:56 +0000 (12:01 +0000)]
[DAG] Constant fold + canonicalize integer binops before SimplifyVBinOp call

SimplifyVBinOp still has a FoldConstantArithmetic call, which now it isn't vector specific we should be able to remove (once fp binops are tidied up); but we can at least clean up the integer opcodes to perform the basic constant/undef handling in common code first.

2 years ago[NFC] Fix type-units-maybe-unused-types.ll from D115325 (78d15a112cbd)
OCHyams [Fri, 17 Dec 2021 11:39:35 +0000 (11:39 +0000)]
[NFC] Fix type-units-maybe-unused-types.ll from D115325 (78d15a112cbd)

78d15a112cbd adds llvm/test/DebugInfo/Generic/type-units-maybe-unused-types.ll

Move the test into llvm/test/DebugInfo/X86 and add -mtriple=x86_64-linux-gnu
because not all platforms support type units.

Example of failing bot: type-units-maybe-unused-types.ll

Original review: https://reviews.llvm.org/D115325

2 years ago[CodeGen] Avoid more pointer element type accesses
Nikita Popov [Fri, 17 Dec 2021 10:00:25 +0000 (11:00 +0100)]
[CodeGen] Avoid more pointer element type accesses

2 years ago[analyzer][NFC] Change return value of StoreManager::attemptDownCast function from...
Denys Petrov [Thu, 16 Dec 2021 16:48:30 +0000 (18:48 +0200)]
[analyzer][NFC] Change return value of StoreManager::attemptDownCast function from SVal to Optional<SVal>

Summary: Refactor return value of `StoreManager::attemptDownCast` function by removing the last parameter `bool &Failed` and replace the return value `SVal` with `Optional<SVal>`.  Make the function consistent with the family of `evalDerivedToBase` by renaming it to `evalBaseToDerived`. Aligned the code on the call side with these changes.

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

2 years ago[AMDGPU] Fixes in ISelDAG path and GlobalISel path for 'bias' operand with A16 bit on
rkorsa [Fri, 17 Dec 2021 07:26:38 +0000 (12:56 +0530)]
[AMDGPU] Fixes in ISelDAG path and GlobalISel path for 'bias' operand with A16 bit on

The LOD bias operand is of type 'half' when the A16-bit is ON' for MIMG instructions.
'bias' is only 16-bit but occupies 32-bits with upper 16-bits containing junk.
The patch fixes both the paths(ISelDAG and GlobalISel) for proper encoding of LOD bias operand.

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

2 years ago[flang][codegen] Add a conversion for `fir.coordinate_of` - part 2
Andrzej Warzynski [Tue, 23 Nov 2021 18:13:51 +0000 (18:13 +0000)]
[flang][codegen] Add a conversion for `fir.coordinate_of` - part 2

This patch extends the `FIRToLLVMLowering` pass in Flang by extending
the hook to transform `fir.coordinate_of` into a sequence of LLVM MLIR
instructions (i.e. `CoordinateOpConversion::doRewrite`). The following
case is added:
  3.1 the input object is inside `!fir.ref` (e.g. `!fir.ref<!fir.array>` or
      `!fir.ref<!fir.type>`).
  3.2 the input object is inside `!fir.ptr` (e.g. `!fir.ptr<!fir.array>` or
      `!fir.ptr<!fir.type>`).
From the point of view of the conversion, 3.1 and 3.2 are currently identical.

This is part of the upstreaming effort from the `fir-dev` branch in [1].

[1] https://github.com/flang-compiler/f18-llvm-project

Originally written by:
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: V Donaldson <vdonaldson@nvidia.com>
Depends on: D114159

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

2 years ago[libc++] Disable _LIBCPP_DEBUG_ASSERT during constant evaluation
Nikolas Klauser [Thu, 16 Dec 2021 13:55:03 +0000 (14:55 +0100)]
[libc++] Disable _LIBCPP_DEBUG_ASSERT during constant evaluation

Disable `_LIBCPP_DEBUG_ASSERT` and debug iterators in <string> during constant evaluation

Reviewed By: ldionne, #libc

Spies: goncharov, libcxx-commits

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

2 years ago[LV] Pass VectorHeader block to emitTransformedIndex (NFC).
Florian Hahn [Mon, 13 Dec 2021 19:12:56 +0000 (19:12 +0000)]
[LV] Pass VectorHeader block to emitTransformedIndex (NFC).

Pass in the vector header instead of relying on ILV::LoopVectorBody.
This reduces the dependence on state from ILV. Where VPTransformState is
available, State.CFG.PrevBB can be used.

2 years ago[DWARF] Fix PR51087 Extraneous enum record in DWARF with type units
OCHyams [Fri, 17 Dec 2021 09:25:52 +0000 (09:25 +0000)]
[DWARF] Fix PR51087 Extraneous enum record in DWARF with type units

Fixes https://llvm.org/PR51087: Extraneous enum record in DWARF with type units.

As explained in PR51087 we sometimes get skeleton DIEs for enums in a Dwarf
Compile Unit (CU) that are not referenced from any CU and are already described
by a type unit.

Types for enums are emitted whether used or not, all together before most types
in the CU. Mechanically, the extraneous CU records are generated because the
enum types are generated with a call to CU->getOrCreateTypeDIE. This function
will recursively get-or-create the parent DIE (in the CU) and the type unit for
each. We don't need the CU-side DIEs if the type units are sucesfully
emitted. Fix by only emitting the type units for enums if possible, falling back
to a call to getOrCreateTypeDIE if not. Do the same for retained types.

Reviewed By: dblaikie

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

2 years ago[flang] Make the frontend driver error out when requesting multiple actions
Andrzej Warzynski [Thu, 14 Oct 2021 08:07:30 +0000 (08:07 +0000)]
[flang] Make the frontend driver error out when requesting multiple actions

With this change, the following invocations will be treated as errors
(multiple actions are specified):
```
$ flang-new -fc1 -E -fsyntax-only file.95
$ flang-new -fc1 -fsyntax-only -fdebug-dump-symbols file.95
```
In the examples above it is not clear whether it is `-fsyntax-only` or
the other action that is run (i.e. `-E` or `-fdebug-dump-symbols`). It
makes sense to disallow such usage. This should also lead to cleaner and
clearer tests (the `RUN` lines using `%flang_fc1` will only allow one
action).

This change means that `flang-new -fc1` and `clang -cc1` will behave
differently when multiple action options are specified. As frontend
drivers are mostly used by compiler developers, this shouldn't affect or
confuse the compiler end-users. Also, `flang-new` and `clang` remain
consistent.

Tests are updated accordingly. More specifically, I've made sure that
every test specifies only one action. I've also taken the opportunity to
simplify "multiple-input-files.f90" a bit.

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

2 years ago[FuncSpec] Respect MaxConstantsThreshold
Sjoerd Meijer [Fri, 17 Dec 2021 09:25:45 +0000 (09:25 +0000)]
[FuncSpec] Respect MaxConstantsThreshold

This is a follow up of D115458 and truncates the worklist of actual arguments
that can be specialised to 'MaxConstantsThreshold' candidates if
MaxConstantsThreshold was exceeded. Thus, this changes the behaviour of option
-func-specialization-max-constants. Before it didn't specialise at all when
this threshold was exceeded, but now it specialises up to MaxConstantsThreshold
candidates from the sorted worklist.

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

2 years ago[ARM] Handle splats of constants for MVE qr instruction
David Green [Fri, 17 Dec 2021 09:16:28 +0000 (09:16 +0000)]
[ARM] Handle splats of constants for MVE qr instruction

Some MVE instructions have qr variants that take a Q and R register,
splatting the R register for each lane. This is usually handled fine for
standard splats as we sink the splat into the loop and combine the
resulting dup into the qr instruction. It does not work for constant
splats though, as we generate a vmovimm or constant pool load instead.

This intercepts that, generating a vdup of the constant instead where we
can turn the result into a qr instruction variant.

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