platform/upstream/llvm.git
2 years ago[libc++] Refactor stride_counting_iterator
Louis Dionne [Tue, 18 Jan 2022 15:34:32 +0000 (10:34 -0500)]
[libc++] Refactor stride_counting_iterator

Instead of storing the wrapped iterator inside the stride_counting_iterator,
store its base so we can have e.g. a stride_counting_iterator of an
input_iterator (which was previously impossible because input_iterators
are not copyable). Also a few other simplifications in stride_counting_iterator.

As a fly-by fix, remove the member base() functions, which are super
confusing.

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

2 years ago[libc++] Split a few utilities out of __threading_support
Louis Dionne [Mon, 10 Jan 2022 14:43:29 +0000 (09:43 -0500)]
[libc++] Split a few utilities out of __threading_support

This change is the basis for a further refactoring where I'm going to
split up the various implementations we have in __threading_support to
make that code easier to understand.

Note that I had to make __convert_to_timespec a template to break
circular dependencies. Concretely, we never seem to use it with anything
other than ::timespec, but I am wary of hardcoding that assumption as
part of this change, since I suspect there's a reason for going through
these hoops in the first place.

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

2 years ago[llvm] Remove uses of `std::vector<bool>`
Jan Svoboda [Tue, 18 Jan 2022 17:01:24 +0000 (18:01 +0100)]
[llvm] Remove uses of `std::vector<bool>`

LLVM Programmer’s Manual strongly discourages the use of `std::vector<bool>` and suggests `llvm::BitVector` as a possible replacement.

This patch does just that for llvm.

Reviewed By: dexonsmith

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

2 years ago[mlir] Replace StrEnumAttr -> EnumAttr in core dialects
Mogball [Tue, 18 Jan 2022 16:53:55 +0000 (16:53 +0000)]
[mlir] Replace StrEnumAttr -> EnumAttr in core dialects

Removes uses of `StrEnumAttr` in core dialects

Reviewed By: mehdi_amini, rriddle

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

2 years ago[SDAG] remove duplicate functionality when getting shift type for demanded bits;...
Sanjay Patel [Tue, 18 Jan 2022 16:07:17 +0000 (11:07 -0500)]
[SDAG] remove duplicate functionality when getting shift type for demanded bits; NFCI

This was noted as a potential cleanup in D117508.
getShiftAmountTy() has checks for vector, phase, etc. so it should
handle anything that the caller was trying to account for.

2 years ago[InstCombine] reduce code duplication; NFC
Sanjay Patel [Tue, 18 Jan 2022 16:02:12 +0000 (11:02 -0500)]
[InstCombine] reduce code duplication; NFC

2 years ago[InstCombine] add tests for fsub with fmul/fdiv operand; NFC
Sanjay Patel [Tue, 18 Jan 2022 14:13:03 +0000 (09:13 -0500)]
[InstCombine] add tests for fsub with fmul/fdiv operand; NFC

2 years ago[AIX] Support of Big archive (read)
zhijian [Mon, 17 Jan 2022 15:37:08 +0000 (10:37 -0500)]
[AIX] Support of Big archive (read)

Summary:

The patch is based on the EGuesnet's implement of the "Support of Big archive (read)
the first commit of the patch is come from https://reviews.llvm.org/D100651.

the rest of commits of the patch

1  Addressed the comments on the https://reviews.llvm.org/D100651
2  according to https://www.ibm.com/docs/en/aix/7.2?topic=formats-ar-file-format-big
using the "fl_fstmoff" for the first object file number, using "char ar_nxtmem[20]" to get next object file ,
using the "char fl_lstmoff[20]" for the last of the object file will fix the following problems:
   2.1 can not correct reading a archive files which has padding data between too object file
   2.2 can not correct reading a archive files from which some object file has be deleted

3 introduce a new derived class BigArchive for big ar file.

Reviewers: James Henderson
Differential Revision: https://reviews.llvm.org/D111889

2 years agoFix pair construction with an implicit constructor inside.
Tres Popp [Tue, 18 Jan 2022 17:00:47 +0000 (18:00 +0100)]
Fix pair construction with an implicit constructor inside.

2 years ago[clangd][clang-tidy] Remove uses of `std::vector<bool>`
Jan Svoboda [Tue, 18 Jan 2022 16:58:57 +0000 (17:58 +0100)]
[clangd][clang-tidy] Remove uses of `std::vector<bool>`

LLVM Programmer’s Manual strongly discourages the use of `std::vector<bool>` and suggests `llvm::BitVector` as a possible replacement.

This patch does just that for clangd and clang-tidy.

Reviewed By: dexonsmith

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

2 years agoFix a failed assertion on an invalid typename requirement
Aaron Ballman [Tue, 18 Jan 2022 16:57:59 +0000 (11:57 -0500)]
Fix a failed assertion on an invalid typename requirement

The parsing code for a typename requirement currently asserts when
given something which is not a valid type-requirement
(http://eel.is/c++draft/expr.prim.req.type#nt:type-requirement). This
removes the assertion to continue on to the proper diagnostic.

This resolves PR53057.

Note that in that PR, it is using _BitInt(N) as a dependent type name.
This patch does not attempt to support that as it is not clear that is
a valid type requirement (it does not match the grammar production for
one). The workaround in the PR, however, is definitely valid and works
as expected.

2 years ago[mlir] Drop the leading space when printing regions
Mogball [Tue, 18 Jan 2022 07:47:25 +0000 (07:47 +0000)]
[mlir] Drop the leading space when printing regions

The leading space that is always printed at the beginning of regions is not consistent with other parts of the printing API. Moreover, this leading space can lead to undesirable assembly formats:

```
attr-dict-with-keyword $region
```

Prints as:

```
// Two spaces between `}` and `{`
attributes {foo}  { ... }
```

Moreover, the leading space results in the odd generic op format:

```
"test.op"() ( {...}) : () -> ()
```

Reviewed By: rriddle, mehdi_amini

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

2 years agoRevert "[MemCpyOpt] Make capture check during call slot optimization more precise"
Hans Wennborg [Tue, 18 Jan 2022 16:30:27 +0000 (17:30 +0100)]
Revert "[MemCpyOpt] Make capture check during call slot optimization more precise"

This casued a miscompile due to call slot optimization replacing a call
argument without considering the call's !noalias metadata, see discussion on
the code review.

> Call slot optimization is currently supposed to be prevented if
> the call can capture the source pointer. Due to an implementation
> bug, this check currently doesn't trigger if a bitcast of the source
> pointer is passed instead. I'm somewhat afraid of the fallout of
> fixing this bug (due to heavy reliance on call slot optimization
> in rust), so I'd like to strengthen the capture reasoning a bit first.
>
> In particular, I believe that the capture is fine as long as a)
> the call itself cannot depend on the pointer identity, because
> neither dest has been captured before/at nor src before the
> call and b) there is no potential use of the captured pointer
> before the lifetime of the source alloca ends, either due to
> lifetime.end or a return from a function. At that point the
> potentially captured pointer becomes dangling.
>
> Differential Revision: https://reviews.llvm.org/D115615

Also reverting the dependent commit:

> [MemCpyOpt] Look through pointer casts when checking capture
>
> The user scanning loop above looks through pointer casts, so we
> also need to strip pointer casts in the capture check. Previously
> the source was incorrectly considered not captured if a bitcast
> was passed to the call.

This reverts commit 487a34ed9d7d24a7b1fb388c8856c784a459b22b
and 00e6869463ae6023d0d48f30de8511d6d748b14f.

2 years ago[clang-tidy] Force LF newlines when writing files
Richard [Mon, 3 Jan 2022 17:52:59 +0000 (10:52 -0700)]
[clang-tidy] Force LF newlines when writing files

The recommendation on Windows is to checkout from git with
core.autolf=false in order to preserve LF line endings on
test files.  However, when creating a new check this results
in modified files as having switched all the line endings on
Windows.  Write all files with explicit LF line endings to
prevent this.

Fixes #52968

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

2 years ago[JITLink][ELF] Support duplicated section names from object file
Steven Wu [Tue, 18 Jan 2022 16:38:15 +0000 (08:38 -0800)]
[JITLink][ELF] Support duplicated section names from object file

ELF object files can contain duplicated sections (thus section symbols
as well), espeically when comdats/section groups are present. This patch
adds support for generating LinkGraph from object files that have
duplicated section names. This is the first step to properly model
comdats/section groups.

Reviewed By: lhames

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

2 years ago[ADT] Fix Optional<> with llvm::is_trivially_move_constructible
Steven Wu [Tue, 18 Jan 2022 16:37:22 +0000 (08:37 -0800)]
[ADT] Fix Optional<> with llvm::is_trivially_move_constructible

Fix the compatibility of Optional<> with some GCC versions that it will fail
to compile when T is getting checked for `is_trivially_move_constructible`
as mentioned here: https://reviews.llvm.org/D93510#2538983

Fix the problem by using `llvm::is_trivially_move_constructible`.

Reviewed By: jplayer-nv, tatyana-krasnukha

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

2 years agoAMDGPU/GlobalISel: Regenerate base test checks
Matt Arsenault [Tue, 18 Jan 2022 15:59:27 +0000 (10:59 -0500)]
AMDGPU/GlobalISel: Regenerate base test checks

2 years ago[DebugInstrRef] Add some missing const qualifiers (NFC)
Nikita Popov [Tue, 18 Jan 2022 16:17:40 +0000 (17:17 +0100)]
[DebugInstrRef] Add some missing const qualifiers (NFC)

2 years ago[OpenMP] Add use of TPAUSE
Terry Wilmarth [Tue, 14 Dec 2021 21:04:55 +0000 (15:04 -0600)]
[OpenMP] Add use of TPAUSE

Add use of TPAUSE (from WAITPKG) to the runtime for Intel hardware,
with an envirable to turn it on in a particular C-state.  Always uses
TPAUSE if it is selected and enabled by Intel hardware and presence of
WAITPKG, and if not, falls back to old way of checking
__kmp_use_yield, etc.

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

2 years ago[mlir] handle nested regions in llvm-legalize-for-export
Alex Zinenko [Tue, 18 Jan 2022 09:16:19 +0000 (10:16 +0100)]
[mlir] handle nested regions in llvm-legalize-for-export

The translation from the MLIR LLVM dialect to LLVM IR includes a mechanism that
ensures the successors of a block to be different blocks in case block
arguments are passed to them since the opposite cannot be expressed in LLVM IR.
This mechanism previously only worked for functions because it was written
prior to the introduction of other region-carrying operations such as the
OpenMP dialect, which also translates directly to LLVM IR. Modify this
mechanism to handle all regions in the module and not only functions.

Reviewed By: wsmoses

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

2 years agoRevert "[mlir] fix crash in PybindAdaptors.h"
Alex Zinenko [Tue, 18 Jan 2022 16:05:29 +0000 (17:05 +0100)]
Revert "[mlir] fix crash in PybindAdaptors.h"

This reverts commit 289021a45decdef8ed61d054b9c90ce775ca9c96.

2 years ago[DebugInstrRef] Use DenseMap for ValueToLoc (NFC)
Nikita Popov [Tue, 18 Jan 2022 15:12:17 +0000 (16:12 +0100)]
[DebugInstrRef] Use DenseMap for ValueToLoc (NFC)

Just replacing std::map with DenseMap here is a major regression
-- because this code used an identity hash for ValueIDNum.
Because ValueIDNum is composed of multiple components, it is
important that we use a reasonably good hash function here, so
switch it to hash_value. DenseMapInfo::getHashValue<uint64_t>
would not be sufficient.

This gives a -0.8% geomean improvement on CTMark ReleaseLTO-g.

2 years ago[libc++] Persistently cache memoized operations during Lit configuration
Louis Dionne [Tue, 9 Nov 2021 14:08:08 +0000 (09:08 -0500)]
[libc++] Persistently cache memoized operations during Lit configuration

When invoking Lit repeatedly, we perform all the configuration checks
over and over again, which takes a lot of time. This patch allows caching
the result of configuration checks persistently across Lit invocations to
speed this up.

In theory, this should still be functionally correct since the cache
key should contain everything that determines the output of the
configuration check. However, in cases where e.g. the compiler has
changed but is at the same path as previously, the Lit configuration
checks will be cached even though technically the cache should have
been invalidated.

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

2 years ago[X86] getTargetShuffleInputs - ensure we limit the maximum recursion depth to match...
Simon Pilgrim [Tue, 18 Jan 2022 15:25:08 +0000 (15:25 +0000)]
[X86] getTargetShuffleInputs - ensure we limit the maximum recursion depth to match SelectionDAG::MaxRecursionDepth

Regressions were pre-handled by rG62e36b120749

Fixes Issue #52960

2 years ago[clang][dataflow] Remove obsolete FIXME
Stanislav Gatev [Tue, 18 Jan 2022 15:04:09 +0000 (15:04 +0000)]
[clang][dataflow] Remove obsolete FIXME

The FIXME is no longer relevant as ControlFlowContext centralizes the
construction of the CFG.

This is part of the implementation of the dataflow analysis framework.
See "[RFC] A dataflow analysis framework for Clang AST" on cfe-dev.

Reviewed-by: xazax.hun
Differential Revision: https://reviews.llvm.org/D117563

2 years ago[X86] canLowerByDroppingEvenElements - generalize to drop even or odd elements
Simon Pilgrim [Tue, 18 Jan 2022 14:58:39 +0000 (14:58 +0000)]
[X86] canLowerByDroppingEvenElements - generalize to drop even or odd elements

This allows us to match shuffle<1,3,5,7,9,11,13,15> style shift+trunc/pack patterns as well as the existing shuffle<0,2,4,6,8,10,12,14> style shuffle trunc/pack patterns

In the future, interleaving patterns might benefit from an even more general implementation for higher strides

2 years ago[analyzer][NFC] Refactor GenericTaintChecker to use CallDescriptionMap
Endre Fülöp [Wed, 12 Jan 2022 08:06:27 +0000 (09:06 +0100)]
[analyzer][NFC] Refactor GenericTaintChecker to use CallDescriptionMap

GenericTaintChecker now uses CallDescriptionMap to describe the possible
operation in code which trigger the introduction (sources), the removal
(filters), the passing along (propagations) and detection (sinks) of
tainted values.

Reviewed By: steakhal, NoQ

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

2 years ago[clang][lex] NFC: Simplify calls to `LookupFile`
Jan Svoboda [Tue, 18 Jan 2022 14:44:24 +0000 (15:44 +0100)]
[clang][lex] NFC: Simplify calls to `LookupFile`

The `{HeaderSearch,Preprocessor}::LookupFile()` functions take an out-parameter `const DirectoryLookup *&`. Most callers end up creating a `const DirectoryLookup *` variable that's otherwise unused.

This patch changes the out-parameter from reference to a pointer, making it possible to simply pass `nullptr` to the function without the ceremony.

Reviewed By: ahoppen

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

2 years ago[clang] NFC: Remove unused `DirectoryLookup`
Jan Svoboda [Tue, 18 Jan 2022 14:13:49 +0000 (15:13 +0100)]
[clang] NFC: Remove unused `DirectoryLookup`

This patch removes bitrotten/dead uses of `DirectoryLookup` in `InclusionRewriter.cpp`.

Reviewed By: ahoppen

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

2 years ago[MachineSink] Allow sinking of constant or ignorable physreg uses
Vang Thao [Tue, 18 Jan 2022 13:53:41 +0000 (13:53 +0000)]
[MachineSink] Allow sinking of constant or ignorable physreg uses

For AMDGPU, any use of the physical register EXEC prevents sinking even if it is not a real physical register read. Add check to see if a physical
register use can be ignored for sinking.

Also perform same constant and ignorable physical register check when considering sinking in loops.

https://reviews.llvm.org/D116053

2 years ago[Driver] Pass the flag -dI to cc1 invocation
Qichao Gu [Tue, 18 Jan 2022 14:15:13 +0000 (06:15 -0800)]
[Driver] Pass the flag -dI to cc1 invocation

Hook up the flag -dI in the driver to pass it to cc1 invocation.

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

2 years ago[analyzer] Produce SymbolCast symbols for integral types in SValBuilder::evalCast
Denys Petrov [Fri, 2 Jul 2021 13:04:07 +0000 (16:04 +0300)]
[analyzer] Produce SymbolCast symbols for integral types in SValBuilder::evalCast

Summary: Produce SymbolCast for integral types in `evalCast` function. Apply several simplification techniques while producing the symbols. Added a boolean option `handle-integral-cast-for-ranges` under `-analyzer-config` flag. Disabled the feature by default.

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

2 years ago[lldb] Delete TestStopReplyContainsThreadPcs
Pavel Labath [Tue, 18 Jan 2022 13:04:05 +0000 (14:04 +0100)]
[lldb] Delete TestStopReplyContainsThreadPcs

This was meant to be a replacement for the lldb-server sub-test suite of
the API tests, but it never got off the ground and it's making the
windows bot flaky.

Deleting it does not reduce test coverage as the original api test is
still around.

2 years agoRevert "[AArch64] Revive optimize add/sub with immediate through MIPeepholeOpt"
Florian Hahn [Tue, 18 Jan 2022 12:58:50 +0000 (12:58 +0000)]
Revert "[AArch64] Revive optimize add/sub with immediate through MIPeepholeOpt"

This reverts commit e6698f09929a134bf0f46d9347142b86d8f636a2.

This commit appears to introduce new machine verifier failures when
building the llvm-test-suite with `-mllvm -verify-machineinstrs` enabled:

https://green.lab.llvm.org/green/job/test-suite-verify-machineinstrs-aarch64-O3/11061/

FAILED: MultiSource/Benchmarks/Olden/health/CMakeFiles/health.dir/health.c.o
/Users/buildslave/jenkins/workspace/test-suite-verify-machineinstrs-aarch64-O3/test-suite-build/tools/timeit --summary MultiSource/Benchmarks/Olden/health/CMakeFiles/health.dir/health.c.o.time /Users/buildslave/jenkins/workspace/test-suite-verify-machineinstrs-aarch64-O3/compiler/bin/clang -DNDEBUG  -B /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin    -Wno-unused-command-line-argument -mllvm -verify-machineinstrs -O3 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.5.sdk   -w -Werror=date-time -DTORONTO -MD -MT MultiSource/Benchmarks/Olden/health/CMakeFiles/health.dir/health.c.o -MF MultiSource/Benchmarks/Olden/health/CMakeFiles/health.dir/health.c.o.d -o MultiSource/Benchmarks/Olden/health/CMakeFiles/health.dir/health.c.o   -c /Users/buildslave/jenkins/workspace/test-suite-verify-machineinstrs-aarch64-O3/test-suite/MultiSource/Benchmarks/Olden/health/health.c
*** Bad machine code: Illegal virtual register for instruction ***
- function:    alloc_tree
- basic block: %bb.1 if.else (0x7fc0db8f8bb0)
- instruction: %31:gpr64 = nsw MADDXrrr killed %39:gpr64sp, killed %25:gpr64, $xzr
- operand 1:   killed %39:gpr64sp
Expected a GPR64 register, but got a GPR64sp register
fatal error: error in backend: Found 1 machine code errors.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /Users/buildslave/jenkins/workspace/test-suite-verify-machineinstrs-aarch64-O3/compiler/bin/clang -DNDEBUG -B /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin -Wno-unused-command-line-argument -mllvm -verify-machineinstrs -O3 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.5.sdk -w -Werror=date-time -DTORONTO -MD -MT MultiSource/Benchmarks/Olden/health/CMakeFiles/health.dir/health.c.o -MF MultiSource/Benchmarks/Olden/health/CMakeFiles/health.dir/health.c.o.d -o MultiSource/Benchmarks/Olden/health/CMakeFiles/health.dir/health.c.o -c /Users/buildslave/jenkins/workspace/test-suite-verify-machineinstrs-aarch64-O3/test-suite/MultiSource/Benchmarks/Olden/health/health.c
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module '/Users/buildslave/jenkins/workspace/test-suite-verify-machineinstrs-aarch64-O3/test-suite/MultiSource/Benchmarks/Olden/health/health.c'.
4. Running pass 'Verify generated machine code' on function '@alloc_tree'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  clang         0x000000011191896b llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 43
1  clang         0x00000001119179b5 llvm::sys::RunSignalHandlers() + 85
2  clang         0x00000001119180e2 llvm::sys::CleanupOnSignal(unsigned long) + 210
3  clang         0x0000000111849f6a (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) + 106
4  clang         0x0000000111849ee8 llvm::CrashRecoveryContext::HandleExit(int) + 24
5  clang         0x0000000111914acc llvm::sys::Process::Exit(int, bool) + 44
6  clang         0x000000010f4e9be9 LLVMErrorHandler(void*, char const*, bool) + 89
7  clang         0x0000000114eba333 llvm::report_fatal_error(llvm::Twine const&, bool) + 323
8  clang         0x0000000110d8c620 (anonymous namespace)::MachineVerifier::BBInfo::~BBInfo() + 0
9  clang         0x0000000110cdddca llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 378
10 clang         0x00000001110b0154 llvm::FPPassManager::runOnFunction(llvm::Function&) + 1092
11 clang         0x00000001110b6268 llvm::FPPassManager::runOnModule(llvm::Module&) + 72
12 clang         0x00000001110b074a llvm::legacy::PassManagerImpl::run(llvm::Module&) + 986
13 clang         0x0000000111c20ad4 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream> >) + 3764
14 clang         0x0000000111f6dd31 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) + 1905
15 clang         0x00000001131a28b3 clang::ParseAST(clang::Sema&, bool, bool) + 643
16 clang         0x00000001122b02a4 clang::FrontendAction::Execute() + 84
17 clang         0x000000011222d6a9 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 873
18 clang         0x000000011232faf5 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 661
19 clang         0x000000010f4e9860 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 2544
20 clang         0x000000010f4e7168 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) + 312
21 clang         0x00000001120ab187 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, bool*) const::$_1>(long) + 23
22 clang         0x0000000111849eb4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 228
23 clang         0x00000001120aac24 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, bool*) const + 324
24 clang         0x000000011207b85d clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const + 221
25 clang         0x000000011207bdad clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*> >&) const + 125
26 clang         0x0000000112092f7c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*> >&) + 204
27 clang         0x000000010f4e6977 main + 10375
28 libdyld.dylib 0x00007fff6be90cc9 start + 1
29 libdyld.dylib 0x0000000000000018 start + 18446603338705728336
clang-14: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 14.0.0 (https://github.com/llvm/llvm-project.git c90d136be4e055f1b409f38706d0fe3e2211af08)
Target: arm64-apple-darwin19.5.0
Thread model: posix
InstalledDir: /Users/buildslave/jenkins/workspace/test-suite-verify-machineinstrs-aarch64-O3/compiler/bin
clang-14: note: diagnostic msg:
********************

2 years ago[X86][SSE] Add some additional shuffle tests for mask/shift + packus/packss style...
Simon Pilgrim [Tue, 18 Jan 2022 12:50:41 +0000 (12:50 +0000)]
[X86][SSE] Add some additional shuffle tests for mask/shift + packus/packss style patterns

2 years ago[InstCombine] Simplify addends reordering logic
Daniil Kovalev [Tue, 18 Jan 2022 12:48:33 +0000 (15:48 +0300)]
[InstCombine] Simplify addends reordering logic

Previously some constants were not pushed to the top of the resulting
expression tree as intended by the algorithm. We can remove the logic
from simplifyFAdd and rely on SimplifyAssociativeOrCommutative to do
that.

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

2 years agoTableGen: sort SearchableTable emission order by fields, not top-level name
Tim Northover [Tue, 2 Nov 2021 10:42:27 +0000 (10:42 +0000)]
TableGen: sort SearchableTable emission order by fields, not top-level name

This is often used for anonymous definitions, so we were sorting by
"anonymous_1234" record names, which while less bad than pointers can be easily
perturbed by adding code even in completely unrelated systems. That causes test
failures on AArch64 when sysregs with multiple valid names suddenly start
printing a different one.

2 years agoRevert "[AIX] Support of Big archive (read)"
Florian Hahn [Tue, 18 Jan 2022 12:41:45 +0000 (12:41 +0000)]
Revert "[AIX] Support of Big archive (read)"

This appears to be causing the following build failures on green
dragon during stage2 builds on macOS:

 /System/Volumes/Data/jenkins/workspace/apple-clang-stage2-configure-RA_osceola/clang.roots/BuildRecords/clang-9999.99_install/Objects/obj-llvm/./bin/clang++ -fno-stack-protector -fno-common -Wno-profile-instr-unprofiled -Wno-unknown-warning-option -Werror=unguarded-availability-new -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -fmodules -fmodules-cache-path=/System/Volumes/Data/jenkins/workspace/apple-clang-stage2-configure-RA_osceola/clang.roots/BuildRecords/clang-9999.99_install/Objects/obj-llvm/tools/clang/stage2-bins/module.cache -fcxx-modules -Xclang -fmodules-local-submodule-visibility -gmodules -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-class-memaccess -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -O2 -gline-tables-only -DNDEBUG -arch x86_64 -arch arm64 -arch arm64e -isysroot /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk -mmacosx-version-min=10.10 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -Wl,-dead_strip tools/llvm-cov/CMakeFiles/llvm-cov.dir/llvm-cov.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/gcov.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/CodeCoverage.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/CoverageExporterJson.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/CoverageExporterLcov.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/CoverageFilters.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/CoverageReport.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/CoverageSummaryInfo.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/SourceCoverageView.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/SourceCoverageViewHTML.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/SourceCoverageViewText.cpp.o tools/llvm-cov/CMakeFiles/llvm-cov.dir/TestingSupport.cpp.o -o bin/llvm-cov  -Wl,-rpath,@loader_path/../lib  lib/libLLVMCore.a  lib/libLLVMSupport.a  lib/libLLVMObject.a  lib/libLLVMCoverage.a  lib/libLLVMProfileData.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMObject.a  lib/libLLVMBitReader.a  lib/libLLVMCore.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMMCParser.a  lib/libLLVMTextAPI.a  lib/libLLVMMC.a  lib/libLLVMBinaryFormat.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMSupport.a  -lm  /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/usr/lib/libz.tbd  /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/usr/lib/libcurses.tbd  lib/libLLVMDemangle.a && cd /System/Volumes/Data/jenkins/workspace/apple-clang-stage2-configure-RA_osceola/clang.roots/BuildRecords/clang-9999.99_install/Objects/obj-llvm/tools/clang/stage2-bins/tools/llvm-cov && xcrun dsymutil -o=llvm-cov.dSYM /System/Volumes/Data/jenkins/workspace/apple-clang-stage2-configure-RA_osceola/clang.roots/BuildRecords/clang-9999.99_install/Objects/obj-llvm/tools/clang/stage2-bins/bin/llvm-cov
Undefined symbols for architecture x86_64:
  "llvm::object::CommonArchiveMemberHeader<llvm::object::BigArMemHdrType>::getRawAccessMode() const", referenced from:
      vtable for llvm::object::BigArchiveMemberHeader in libLLVMObject.a(Archive.cpp.o)
  "llvm::object::CommonArchiveMemberHeader<llvm::object::BigArMemHdrType>::getRawUID() const", referenced from:
      vtable for llvm::object::BigArchiveMemberHeader in libLLVMObject.a(Archive.cpp.o)
  "llvm::object::CommonArchiveMemberHeader<llvm::object::BigArMemHdrType>::getRawGID() const", referenced from:
      vtable for llvm::object::BigArchiveMemberHeader in libLLVMObject.a(Archive.cpp.o)
  "llvm::object::CommonArchiveMemberHeader<llvm::object::UnixArMemHdrType>::getRawAccessMode() const", referenced from:
      vtable for llvm::object::ArchiveMemberHeader in libLLVMObject.a(Archive.cpp.o)
  "llvm::object::CommonArchiveMemberHeader<llvm::object::UnixArMemHdrType>::getRawLastModified() const", referenced from:
      vtable for llvm::object::ArchiveMemberHeader in libLLVMObject.a(Archive.cpp.o)
  "llvm::object::CommonArchiveMemberHeader<llvm::object::BigArMemHdrType>::getRawLastModified() const", referenced from:
      vtable for llvm::object::BigArchiveMemberHeader in libLLVMObject.a(Archive.cpp.o)
  "llvm::object::CommonArchiveMemberHeader<llvm::object::BigArMemHdrType>::getOffset() const", referenced from:
      vtable for llvm::object::BigArchiveMemberHeader in libLLVMObject.a(Archive.cpp.o)
  "llvm::object::CommonArchiveMemberHeader<llvm::object::UnixArMemHdrType>::getRawUID() const", referenced from:
      vtable for llvm::object::ArchiveMemberHeader in libLLVMObject.a(Archive.cpp.o)
  "llvm::object::CommonArchiveMemberHeader<llvm::object::UnixArMemHdrType>::getRawGID() const", referenced from:
      vtable for llvm::object::ArchiveMemberHeader in libLLVMObject.a(Archive.cpp.o)
  "llvm::object::CommonArchiveMemberHeader<llvm::object::UnixArMemHdrType>::getOffset() const", referenced from:
      vtable for llvm::object::ArchiveMemberHeader in libLLVMObject.a(Archive.cpp.o)
ld: symbol(s) not found for architecture x86_64

https://smooshbase.apple.com/ci/job/apple-clang-stage2-configure-RA_osceola/30276/console

2 years ago[LoopVectorize][AArch64] Use get.active.lane.mask intrinsic when SVE is enabled
David Sherwood [Mon, 6 Dec 2021 16:02:30 +0000 (16:02 +0000)]
[LoopVectorize][AArch64] Use get.active.lane.mask intrinsic when SVE is enabled

When SVE is enabled for AArch64 targets it makes more sense to use the
get.active.lane.mask intrinsic, because SVE has an exact 1-1 mapping
from the intrinsic to the 'whilelo' instruction for legal vector types.
This instruction neatly takes overflow into account as well. This patch
fixes an issue in VPInstruction::generateInstruction that assumed we are
only dealing with fixed-width vectors.

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

2 years ago[clang][dataflow] Add transfer function for addrof
Stanislav Gatev [Mon, 17 Jan 2022 16:23:24 +0000 (16:23 +0000)]
[clang][dataflow] Add transfer function for addrof

This is part of the implementation of the dataflow analysis framework.
See "[RFC] A dataflow analysis framework for Clang AST" on cfe-dev.

Reviewed-by: xazax.hun
Differential Revision: https://reviews.llvm.org/D117496

2 years ago[AttrBuilder] Add string attribute getter (NFC)
Nikita Popov [Tue, 18 Jan 2022 11:12:22 +0000 (12:12 +0100)]
[AttrBuilder] Add string attribute getter (NFC)

This avoids the need to scan through td_attrs() in AutoUpgrade,
decoupling it from AttrBuilder implementation details.

2 years ago[VE] VECustomDAG builder class
Simon Moll [Tue, 18 Jan 2022 10:32:19 +0000 (11:32 +0100)]
[VE] VECustomDAG builder class

VECustomDAG's functions simplify emitting VE custom ISD nodes. The class
is just a stub now. We add more functions, in particular for the
VP->VVP->VE lowering, to VECustomDAG as we build up vector isel.

Reviewed By: kaz7

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

2 years ago[VE] vp_select+vectorBinOp passthru isel and tests
Simon Moll [Tue, 18 Jan 2022 09:29:22 +0000 (10:29 +0100)]
[VE] vp_select+vectorBinOp passthru isel and tests

Extend the VE binaryop vector isel patterns to use passthru when the
result of a SDNode is used in a vector select or merge.

Reviewed By: kaz7

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

2 years ago[LVI] Handle implication from icmp of trunc (PR51867)
Nikita Popov [Tue, 18 Jan 2022 09:54:06 +0000 (10:54 +0100)]
[LVI] Handle implication from icmp of trunc (PR51867)

Similar to the existing urem code, if we have (trunc X) >= C,
then also X >= C.

Proof: https://alive2.llvm.org/ce/z/RF4YR2

Fixes https://github.com/llvm/llvm-project/issues/51867.

2 years ago[LegalizeTypes][VP] Add widening support for vp.reduce.*
Victor Perez [Tue, 18 Jan 2022 09:30:31 +0000 (09:30 +0000)]
[LegalizeTypes][VP] Add widening support for vp.reduce.*

When widening these intrinsics, we do not have to insert neutral
elements at the end of the vector as when widening vector.reduce.*
intrinsics, thanks to vector predication semantics.

Reviewed By: craig.topper

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

2 years ago[CVP] Add tests for icmp of trunc implication (NFC)
Nikita Popov [Tue, 18 Jan 2022 10:07:48 +0000 (11:07 +0100)]
[CVP] Add tests for icmp of trunc implication (NFC)

2 years agoRevert "[DAG] Extend SearchForAndLoads with any_extend handling"
Hans Wennborg [Tue, 18 Jan 2022 09:50:55 +0000 (10:50 +0100)]
Revert "[DAG] Extend SearchForAndLoads with any_extend handling"

This caused builds to fail with

  llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:5638:
  bool (anonymous namespace)::DAGCombiner::BackwardsPropagateMask(llvm::SDNode *):
  Assertion `NewLoad && "Shouldn't be masking the load if it can't be narrowed"' failed.

See the code review for a link to a reproducer.

> This extends the code in SearchForAndLoads to be able to look through
> ANY_EXTEND nodes, which can be created from mismatching IR types where
> the AND node we begin from only demands the low parts of the register.
> That turns zext and sext into any_extends as only the low bits are
> demanded. To be able to look through ANY_EXTEND nodes we need to handle
> mismatching types in a few places, potentially truncating the mask to
> the size of the final load.
>
> Differential Revision: https://reviews.llvm.org/D117457

This reverts commit 578008789fd061a88ce47dac6ff627001b404348.

2 years ago[LVI] Handle commuted SPF min/max operands
Nikita Popov [Tue, 18 Jan 2022 09:42:45 +0000 (10:42 +0100)]
[LVI] Handle commuted SPF min/max operands

We need to check that the operands of the min/max are the operands
of the select, but we don't care which order they are in.

2 years ago[LVI] Compute SPF range even if one operands is overdefined
Nikita Popov [Mon, 17 Jan 2022 16:21:41 +0000 (17:21 +0100)]
[LVI] Compute SPF range even if one operands is overdefined

If we have a constant range for one operand but not the other,
we can generally still compute a useful results for SPF min/max.

2 years ago[lldb] s/dyn_cast/isa in TypeSystemClang
Pavel Labath [Tue, 18 Jan 2022 09:33:40 +0000 (10:33 +0100)]
[lldb] s/dyn_cast/isa in TypeSystemClang

2 years ago[lldb] Fix compiler warning in CommunicationTest
Pavel Labath [Tue, 18 Jan 2022 09:30:33 +0000 (10:30 +0100)]
[lldb] Fix compiler warning in CommunicationTest

"0x80 changes value when converted to char"

2 years ago[mlir][Linalg] NFC - Drop vectorization reliance on ConvolutionOpInterface
Nicolas Vasilache [Tue, 18 Jan 2022 08:54:42 +0000 (08:54 +0000)]
[mlir][Linalg] NFC - Drop vectorization reliance on ConvolutionOpInterface

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

2 years ago[LegalizeTypes][VP] Add splitting support for vp.reduction.*
Victor Perez [Mon, 17 Jan 2022 15:55:18 +0000 (15:55 +0000)]
[LegalizeTypes][VP] Add splitting support for vp.reduction.*

Split vp.reduction.* intrinsics by splitting the vector to reduce in
two halves, perform the reduction operation in each one of them and
accumulate the results of both operations.

Reviewed By: craig.topper

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

2 years ago[lldb/python] Use PythonObject in LLDBSwigPython functions
Pavel Labath [Mon, 17 Jan 2022 10:29:35 +0000 (11:29 +0100)]
[lldb/python] Use PythonObject in LLDBSwigPython functions

Return our PythonObject wrappers instead of raw PyObjects (obfuscated as
void *). This ensures that ownership (reference counts) of python
objects is automatically tracked.

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

2 years ago[mlir][Linalg] Drop deprecated convolution vectorization patterns
Nicolas Vasilache [Tue, 18 Jan 2022 08:22:50 +0000 (08:22 +0000)]
[mlir][Linalg] Drop deprecated convolution vectorization patterns

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

2 years ago[mlir] fix crash in PybindAdaptors.h
Alex Zinenko [Mon, 17 Jan 2022 13:48:28 +0000 (14:48 +0100)]
[mlir] fix crash in PybindAdaptors.h

The constructor function was being defined without indicating its "__init__"
name, which made it interpret it as a regular fuction rather than a
constructor. When overload resolution failed, Pybind would attempt to print the
arguments actually passed to the function, including "self", which is not
initialized since the constructor couldn't be called. This would result in
"__repr__" being called with "self" referencing an uninitialized MLIR C API
object, which in turn would cause undefined behavior when attempting to print
in C++.

Fix this by specifying the correct name.

This in turn uncovers the fact the the mechanism used by PybindAdaptors.h to
bind constructors directly as "__init__" functions taking "self" is deprecated
by Pybind. Instead, leverage the fact that the adaptors are intended for
attrbutes/types that cannot have additional data members and are all ultimately
instances of "PyAttribute"/"PyType" C++ class. In constructors of derived
classes, construct an instance of the base class first, then steal its internal
pointer to the C++ object to construct the instance of the derived class.

On top of that, the definition of the function was incorrectly indicated as the
method on the "None" object instead of being the method of its parent class.
This would result in a second problem when Pybind would attempt to print
warnings pointing to the parent class since the "None" does not have a
"__name__" field or its C API equivalent.

Fix this by specifying the correct parent class by looking it up by name in the
parent module.

Reviewed By: stellaraccident

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

2 years ago[clangd] Bring back early-claim approach to fix a selection-tree regression.
Haojian Wu [Mon, 17 Jan 2022 13:27:29 +0000 (14:27 +0100)]
[clangd] Bring back early-claim approach to fix a selection-tree regression.

The early-claim hack was removed in 96f5cc1ee417f863f85756d1e56b1bed1bd76a7e,
we see a regression about captured var-decl in lambda.

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

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

2 years ago[LVI] Consistently intersect assumes
Nikita Popov [Tue, 18 Jan 2022 08:51:12 +0000 (09:51 +0100)]
[LVI] Consistently intersect assumes

Integrate intersection with assumes into getBlockValue(), to ensure
that it is consistently performed.

We were doing it in nearly all places, but for example missed it
for select inputs.

2 years ago[CVP] Add test for select with assumes (NFC)
Nikita Popov [Tue, 18 Jan 2022 08:56:46 +0000 (09:56 +0100)]
[CVP] Add test for select with assumes (NFC)

The incoming values of selects are currently not intersected with
assumes.

2 years ago[Chrono] Add missing include <ratio>.
Florian Hahn [Tue, 18 Jan 2022 08:53:57 +0000 (08:53 +0000)]
[Chrono] Add missing include <ratio>.

The file uses std::ratio without including the correct header.
Previously ratio was indirectly provided through chrono in libc++ but
that's not the case any longer.

This should fix a build failure with modules enabled:
https://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/5185/console

2 years ago[DwarfDebug] Restore code that make comments stay aligned in DwarfDebug::emitDebugLoc...
Bjorn Pettersson [Sun, 16 Jan 2022 22:12:21 +0000 (23:12 +0100)]
[DwarfDebug] Restore code that make comments stay aligned in DwarfDebug::emitDebugLocEntry

Commit 2bddab25dba8d4b0 removed a piece of code from
DwarfDebug::emitDebugLocEntry that according to code comments
"Make sure comments stay aligned".

This patch restores that piece of code, together with the addition
of some extra checks in an existing lit test to work as a regression
test. Without this patch we incorrectly get
  .byte   159                             # 0
instead of
  .byte   159                             # DW_OP_stack_value

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

2 years ago[clangd] Remove redundant check for renamed symbol origin
Kirill Bobyrev [Tue, 18 Jan 2022 08:43:40 +0000 (09:43 +0100)]
[clangd] Remove redundant check for renamed symbol origin

This is a follow-up on D116643. `isInSystemHeader` check already detects
symbols coming from the Standard Library, so searching for the qualified name
in StdSymbolMap.inc is no longer necessary.

The tests filtering out purely based on the symbol qualified names are removed.

Reviewed By: hokein

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

2 years agoRevert "[CodeGen][AArch64] Ensure isSExtCheaperThanZExt returns true for negative...
David Sherwood [Tue, 18 Jan 2022 08:40:01 +0000 (08:40 +0000)]
Revert "[CodeGen][AArch64] Ensure isSExtCheaperThanZExt returns true for negative constants"

This reverts commit 197f3c0deb76951315118ef13937b67ea9cbd5aa.

Reverting after miscompilation errors discovered with ffmpeg.

2 years ago[SimplifyCFG] Fix assertion failure when reusing table switch comparison
pvellien [Tue, 18 Jan 2022 08:27:40 +0000 (09:27 +0100)]
[SimplifyCFG] Fix assertion failure when reusing table switch comparison

After D116332, some icmps no longer fold with the target-independent
constant folder. The SimplifyCFG code assumed that the comparison
would always fold, which is not guaranteed. Explicitly check that the
result is either true or false.

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

2 years ago[clang] Add include path for cppwinrt on Windows SDK 10.0.17134+
Kagami Sascha Rosylight [Tue, 18 Jan 2022 08:13:42 +0000 (09:13 +0100)]
[clang] Add include path for cppwinrt on Windows SDK 10.0.17134+

This fixes https://github.com/llvm/llvm-project/issues/53112 by adding
cppwinrt to the include path when the SDK version is higher than
10.0.17134.0.

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

2 years ago[AMDGPU] Disable optimizeEndCf at -O0
Christudasan Devadasan [Fri, 7 Jan 2022 16:52:00 +0000 (11:52 -0500)]
[AMDGPU] Disable optimizeEndCf at -O0

Reviewed By: rampitec

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

2 years ago[RISCV] Add instruction schedule for Zbc extension and Zbs extension
Lian Wang [Tue, 18 Jan 2022 07:30:26 +0000 (07:30 +0000)]
[RISCV] Add instruction schedule for Zbc extension and Zbs extension

Zbc extension:
CLMUL/CLMULR/CLMULH are grouped together, defined one schedule class.

Zbs extension:
BCLR/BSET/BINV/BEXT are grouped together, defined one schedule class.
BCLRI/BSETI/BINVI/BEXTI are grouped together, defined one schedule class.

Reviewed By: craig.topper

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

2 years ago[clang][dataflow] Replace initValueInStorageLocation with createValue
Stanislav Gatev [Mon, 17 Jan 2022 15:17:05 +0000 (15:17 +0000)]
[clang][dataflow] Replace initValueInStorageLocation with createValue

Since Environment's setValue method already does part of the work that
initValueInStorageLocation does, we can factor out a new createValue
method to reduce the duplication.

This is part of the implementation of the dataflow analysis framework.
See "[RFC] A dataflow analysis framework for Clang AST" on cfe-dev.

Reviewed-by: ymandel, xazax.hun
Differential Revision: https://reviews.llvm.org/D117493

2 years ago[AMDGPU] Autogenerate wqm.ll
Carl Ritson [Tue, 18 Jan 2022 02:47:48 +0000 (11:47 +0900)]
[AMDGPU] Autogenerate wqm.ll

Switch wqm.ll to be autogenerated.
Replace gfx6 and gfx8 targets with gfx9 (wave64) and gfx10 (wave32).

Reviewed By: kmitropoulou

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

2 years agoFix flang build after MLIR API change
Mehdi Amini [Tue, 18 Jan 2022 06:59:53 +0000 (06:59 +0000)]
Fix flang build after MLIR API change

In c8e047f5e1 the default for useDefault{Type/Attribute}PrinterParser
was changed in ODS, restore the old value explicitly for the FirDialect.

2 years ago[RISCV] Add patterns for vector widening floating-point multiply
jacquesguan [Tue, 18 Jan 2022 03:02:20 +0000 (11:02 +0800)]
[RISCV] Add patterns for vector widening floating-point multiply

Add patterns for vector widening floating-point multiply

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

2 years agoUse reference for large object passed by value at the moment in MLIR TableGen (NFC)
Mehdi Amini [Tue, 18 Jan 2022 06:47:33 +0000 (06:47 +0000)]
Use reference for large object passed by value at the moment in MLIR TableGen (NFC)

Also make the ODS Operator class have const iterator, and use const
references for existing API taking Operator by reference.

Reviewed By: rriddle

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

2 years agoUse more references in MLIR Diagnostic handling (NFC)
Mehdi Amini [Tue, 18 Jan 2022 06:23:31 +0000 (06:23 +0000)]
Use more references in MLIR Diagnostic handling (NFC)

This saves some copies of non-trivial objects, flagged by Coverity.

Reviewed By: rriddle

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

2 years ago[libcxx][libcxxabi][libunwind][cmake] Use `GNUInstallDirs` to support custom installa...
John Ericson [Sun, 16 Jan 2022 06:00:29 +0000 (06:00 +0000)]
[libcxx][libcxxabi][libunwind][cmake] Use `GNUInstallDirs` to support custom installation dirs

I am breaking apart D99484 so the cause of build failures is easier to
understand.

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

2 years agoEnable useDefault{Type/Attribute}PrinterParser by default in ODS Dialect definition
Mehdi Amini [Tue, 18 Jan 2022 06:33:21 +0000 (06:33 +0000)]
Enable useDefault{Type/Attribute}PrinterParser by default in ODS Dialect definition

The majority of dialects reimplement the same boilerplate over and over,
switching the default makes it for better discoverability and make it simpler
to implement new dialects.

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

2 years ago[ORC] Add Platform::teardownJITDylib method.
Lang Hames [Tue, 18 Jan 2022 04:58:45 +0000 (15:58 +1100)]
[ORC] Add Platform::teardownJITDylib method.

This is a counterpart to Platform::setupJITDylib, and is called when JITDylib
instances are removed (via ExecutionSession::removeJITDylib).

Upcoming MachOPlatform patches will use this to clear per-JITDylib data when
JITDylibs are removed.

2 years ago[RISCV] Provide VLOperand in td.
Han-Kuan Chen [Tue, 18 Jan 2022 04:25:23 +0000 (20:25 -0800)]
[RISCV] Provide VLOperand in td.

Currently, users expected VL is the last operand. However, since some
intrinsics has tail policy in the last operand, this rule cannot be used
anymore.

Reviewed By: craig.topper, frasercrmck

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

2 years ago[RISCV] Make SplatOperand start from 0.
Han-Kuan Chen [Tue, 18 Jan 2022 04:14:05 +0000 (20:14 -0800)]
[RISCV] Make SplatOperand start from 0.

Current SplatOperand starts from 1 because operand 0 (or 1) is intrinsic
id in SelectionDAG.

Reviewed By: craig.topper

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

2 years ago[RISCV] Add patterns for vector widening floating-point add/subtract instructions
jacquesguan [Mon, 17 Jan 2022 12:08:36 +0000 (20:08 +0800)]
[RISCV] Add patterns for vector widening floating-point add/subtract instructions

Add patterns for Vector Widening Floating-Point Add/Subtract Instructions

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

2 years ago[lld] Fix typo. NFC
Alexander Shaposhnikov [Tue, 18 Jan 2022 02:31:08 +0000 (02:31 +0000)]
[lld] Fix typo. NFC

2 years ago[ORC] Fix a stale comment: lookupInitSymbolsAsync does not build a result map.
Lang Hames [Tue, 18 Jan 2022 00:55:23 +0000 (11:55 +1100)]
[ORC] Fix a stale comment: lookupInitSymbolsAsync does not build a result map.

2 years ago[NFC][SDNode] Use `StringSwitch` instead of `if`
Shao-Ce SUN [Mon, 17 Jan 2022 04:19:26 +0000 (12:19 +0800)]
[NFC][SDNode] Use `StringSwitch` instead of `if`

Reviewed By: craig.topper

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

2 years ago[SDAG] add demanded bits transform for bswap
Sanjay Patel [Mon, 17 Jan 2022 23:23:32 +0000 (18:23 -0500)]
[SDAG] add demanded bits transform for bswap

A possible codegen regression for PowerPC is noted in D117406
because we don't recognize a pattern that demands only 1 byte
from a bswap.

This fold  has existed in IR since close to the beginning of LLVM:
https://github.com/llvm/llvm-project/blame/main/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp#L794
...so this patch copies that code as much as possible and adapts
it for SDAG.

The test for PowerPC that would change in D117406 is over-reduced
with undefs, so I recreated it for AArch64 and x86 by passing in
pointer args and renamed the values to make the logic clearer.

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

2 years agoPass options by const ref in TestLinalgCodegenStrategy (NFC)
Mehdi Amini [Mon, 17 Jan 2022 23:16:18 +0000 (23:16 +0000)]
Pass options by const ref in TestLinalgCodegenStrategy (NFC)

These aren't small object, fix Coverity report.

2 years ago[GlobalOpt] Generalize malloc-to-global for any allocation function
Philip Reames [Mon, 17 Jan 2022 23:06:23 +0000 (15:06 -0800)]
[GlobalOpt] Generalize malloc-to-global for any allocation function

We can generalize the malloc-to-global transform for other allocation functions which are both a) removable, and b) have a known initialization value.

One subtlety that I want to point out - mostly because I hadn't realized it was true until I took a closer look - is that the existing code doesn't prove that initialization/malloc happens only once. The initialization function can be called multiple times. This is correct without special handling for malloc as undef can map to any value previously written, but a non-undef initializing allocation it means we may end up memseting the new global repeatedly. In particular, this means it's not legal to fold the memset into the initializer of the global.

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

2 years ago[test] precommit new test for D117503
Philip Reames [Mon, 17 Jan 2022 22:56:49 +0000 (14:56 -0800)]
[test] precommit new test for D117503

2 years ago[RISCV] When expanding CONCAT_VECTORS, don't create INSERT_SUBVECTORS for undef subve...
Craig Topper [Mon, 17 Jan 2022 22:40:57 +0000 (14:40 -0800)]
[RISCV] When expanding CONCAT_VECTORS, don't create INSERT_SUBVECTORS for undef subvectors.

For fixed vectors, the undef will get expanded to an all zeros
build_vector. We don't want that so suppress creating the
insert_subvector.

Reviewed By: frasercrmck

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

2 years ago[RISCV] Legalize fixed length (insert_subvector undef, X, 0) to a scalable insert.
Craig Topper [Mon, 17 Jan 2022 22:31:28 +0000 (14:31 -0800)]
[RISCV] Legalize fixed length (insert_subvector undef, X, 0) to a scalable insert.

We were considering this legal, but later the undef would become an all
zeros vector. This would cause us to need to re-legalize the insert later
into a vslideup with zero vector.

This patch catches the case and directly legalizes it to a scalable
insert.

Reviewed By: frasercrmck

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

2 years ago[Libomptarget] Add `cold` to KeepAlive attributes
Joseph Huber [Mon, 17 Jan 2022 22:03:33 +0000 (17:03 -0500)]
[Libomptarget] Add `cold` to KeepAlive attributes

This patch adds the `cold` attribute to the keepAlive functions in the
RTL. This dummy function exists to keep certain RTL calls alive without
them being optimized out, but it is never called and can be declared
cold. This also helps some erroneous remarks being given on this
function because it has weak linkage and cannot be made internal.

Reviewed By: tianshilei1992

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

2 years ago[ELF] EhInputSection::split: remove unneeded check
Fangrui Song [Mon, 17 Jan 2022 21:59:51 +0000 (13:59 -0800)]
[ELF] EhInputSection::split: remove unneeded check

2 years ago[libc++] [API BREAK] Change `fs::path::iterator::iterator_category` to `input_iterato...
Arthur O'Dwyer [Sun, 2 Jan 2022 00:39:16 +0000 (19:39 -0500)]
[libc++] [API BREAK] Change `fs::path::iterator::iterator_category` to `input_iterator_tag`.

This essentially reverts e02ed1c255d71 and puts in a new fix, which makes `path::iterator`
a true C++20 `bidirectional_iterator`, but downgrades it to an `input_iterator` in C++17.

Fixes #37852.

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

2 years ago[libc++] [test] UNSUPPORTED my new uniform_int_distribution test on MinGW.
Arthur O'Dwyer [Mon, 17 Jan 2022 21:29:02 +0000 (16:29 -0500)]
[libc++] [test] UNSUPPORTED my new uniform_int_distribution test on MinGW.

After 9fe67486cc, this test fails on MinGW for some reason.
https://buildkite.com/llvm-project/libcxx-ci/builds/7922#9e267294-441d-4b79-8a19-30fdb5599c1f
All it says in the build output is

    note: command had no output on stdout or stderr
    error: command failed with exit status: 4294967295

2 years ago[gn build] Port e69a3d18f48b
LLVM GN Syncbot [Mon, 17 Jan 2022 21:32:04 +0000 (21:32 +0000)]
[gn build] Port e69a3d18f48b

2 years ago[lldb] [gdb-remote] Support client fallback for servers without reg defs
Michał Górny [Sun, 9 Jan 2022 18:35:22 +0000 (19:35 +0100)]
[lldb] [gdb-remote] Support client fallback for servers without reg defs

Provide minimal register definition defaults for working with servers
that implement neither target.xml nor qRegisterInfo packets.  This is
useful e.g. when interacting with FreeBSD's kernel minimal gdbserver
that does not send target.xml but uses the same layout for its supported
register subset as GDB.

The prerequisite for this is the ability to determine the correct
architecture, e.g. from the target executable.

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

2 years ago[PowerPC][AIX] Fallback to DAG-ISEL if global has toc-data attribute.
Sean Fertile [Mon, 17 Jan 2022 21:20:28 +0000 (16:20 -0500)]
[PowerPC][AIX] Fallback to DAG-ISEL if global has toc-data attribute.

FAST-ISEL should fall back to DAG-ISEL when a global variable has the
toc-data attribute. A number of the checks were duplicated in the lit
test becuase of
1) Slightly different output between -O0 and -O2 due to FAST-ISEL vs
   DAG-ISEL codegen.
2) In preperation of a peephole optimization that will run when
   optimizations are enabled.

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

2 years ago[AsyncToLLVM] aligned_alloc requires the size to be a multiple of aignment, so round up
Benjamin Kramer [Mon, 17 Jan 2022 20:48:00 +0000 (21:48 +0100)]
[AsyncToLLVM] aligned_alloc requires the size to be a multiple of aignment, so round up

Fixes a crash with debug malloc.

2 years ago[AArch64][x86] add tests for bswap demanded bits; NFC
Sanjay Patel [Mon, 17 Jan 2022 19:34:24 +0000 (14:34 -0500)]
[AArch64][x86] add tests for bswap demanded bits; NFC

2 years ago[LoopDeletion] Add back statistic update lost in 523573e
Philip Reames [Mon, 17 Jan 2022 20:19:44 +0000 (12:19 -0800)]
[LoopDeletion] Add back statistic update lost in 523573e

Caught by a couple of builders as an unused variable warning (e.g. https://lab.llvm.org/buildbot#builders/57/builds/13973).

2 years ago[clang-tidy] Fix false positives involving type aliases in `misc-unconventional-assig...
Fabian Wolff [Mon, 17 Jan 2022 20:10:22 +0000 (21:10 +0100)]
[clang-tidy] Fix false positives involving type aliases in `misc-unconventional-assign-operator` check

clang-tidy currently reports false positives even for simple cases such as:
```
struct S {
    using X = S;
    X &operator=(const X&) { return *this; }
};
```
This is due to the fact that the `misc-unconventional-assign-operator` check fails to look at the //canonical// types. This patch fixes this behavior.

Reviewed By: aaron.ballman, mizvekov

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

2 years ago[libc++] Install clang-tidy in docker containers
Nikolas Klauser [Mon, 17 Jan 2022 18:56:23 +0000 (19:56 +0100)]
[libc++] Install clang-tidy in docker containers

Install clang-tidy

Reviewed By: ldionne, #libc

Spies: sammccall, mgorny, libcxx-commits, arichardson

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