platform/upstream/llvm.git
21 months agoRevert "Fix locating of COMPILER_RT_LIBCXX_PATH"
Vitaly Buka [Wed, 12 Oct 2022 06:24:13 +0000 (23:24 -0700)]
Revert "Fix locating of COMPILER_RT_LIBCXX_PATH"

clang-aarch64-sve-vla crashes in msan
clang-s390x-linux-lnt fails to compile libcxx

This reverts commit 14b2b67cd7d5e439c4bc5c8051f68a5fbb683480.

21 months ago[SimpleLoopUnswitch][NFC] Separate legality checks from cost computation
Max Kazantsev [Wed, 12 Oct 2022 06:17:28 +0000 (13:17 +0700)]
[SimpleLoopUnswitch][NFC] Separate legality checks from cost computation

These are semantically two different stages, but were entwined in the
old implementation. Now cost computation does not do legality checks,
and they all are done beforehead.

21 months ago[NFC] Factor out computation of best unswitch cost candidate
Max Kazantsev [Wed, 12 Oct 2022 05:21:29 +0000 (12:21 +0700)]
[NFC] Factor out computation of best unswitch cost candidate

Split out a major peice of this method to make code more readable.

21 months ago[llvm] [cmake] Support finding both static and shared zstd via FindZstd
Michał Górny [Fri, 7 Oct 2022 16:42:27 +0000 (18:42 +0200)]
[llvm] [cmake] Support finding both static and shared zstd via FindZstd

Improve the logic in FindZstd to support finding both shared and static
variants of the zstd library simultaneously.  Otherwise, if the shared
library is installed, zstd::libzstd_static is not declared at all
and CMake fails if LLVM_USE_STATIC_ZSTD is used.

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

21 months ago[clang] Do not override libclang.so's SOVERSION if CLANG_FORCE_MATCHING_LIBCLANG_SOVE...
Michał Górny [Tue, 11 Oct 2022 18:01:11 +0000 (20:01 +0200)]
[clang] Do not override libclang.so's SOVERSION if CLANG_FORCE_MATCHING_LIBCLANG_SOVERSION

Instead of setting libclang.so's SOVERSION to CLANG_MAJOR_VERSION
when CLANG_FORCE_MATCHING_LIBCLANG_SOVERSION is enabled, do not override
it and let LLVM set the correct SOVERSION.  This fixes libclang.so
missing LLVM_VERSION_SUFFIX, and harmonizes the SOVERSION with other
shared libraries.

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

21 months ago[mlir][async] Fix missing dialect dependency in async-to-async-runtime
rkayaith [Tue, 11 Oct 2022 20:46:26 +0000 (16:46 -0400)]
[mlir][async] Fix missing dialect dependency in async-to-async-runtime

The specific case I hit this was when lowering an `async.execute` that's
not inside a `func.func` op, e.g.:
```
llvm.func @foo() {
  %token = async.execute {
    async.yield
  }
  llvm.return
}
```

Reviewed By: bondhugula

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

21 months agoApply clang-tidy fixes for performance-unnecessary-value-param in TileUsingInterface...
Mehdi Amini [Thu, 6 Oct 2022 19:19:41 +0000 (19:19 +0000)]
Apply clang-tidy fixes for performance-unnecessary-value-param in TileUsingInterface.cpp (NFC)

21 months agoApply clang-tidy fixes for performance-for-range-copy in TileUsingInterface.cpp ...
Mehdi Amini [Thu, 6 Oct 2022 19:19:08 +0000 (19:19 +0000)]
Apply clang-tidy fixes for performance-for-range-copy in TileUsingInterface.cpp (NFC)

21 months agoFix typo in tablegen option: '-gen-typedef-docs' -> '-gen-typedef-doc'
Mehdi Amini [Wed, 12 Oct 2022 05:03:05 +0000 (05:03 +0000)]
Fix typo in tablegen option: '-gen-typedef-docs' -> '-gen-typedef-doc'

21 months agoFix locating of COMPILER_RT_LIBCXX_PATH
Vitaly Buka [Thu, 29 Sep 2022 01:53:39 +0000 (18:53 -0700)]
Fix locating of COMPILER_RT_LIBCXX_PATH

COMPILER_RT_LIBCXX_PATH is required for msan unittests.

21 months agoFix assert in generated `direct` property getter/setters due to removal of `_cmd...
Michael Wyman [Tue, 11 Oct 2022 21:32:21 +0000 (14:32 -0700)]
Fix assert in generated `direct` property getter/setters due to removal of `_cmd` parameter.

This fixes a bug from https://reviews.llvm.org/D131424 that removed the implicit `_cmd` parameter as an argument to `objc_direct` method implementations. In many cases the generated getter/setter will call `objc_getProperty` or `objc_setProperty`, both of which require the selector of the getter/setter; since `_cmd` didn't automatically have backing storage, attempting to load the address asserted.

For direct property generated getters/setters, this now passes an undefined/uninitialized/poison value as the `_cmd` argument to `objc_getProperty`/`objc_setProperty`. Prior to removing the `_cmd` argument from the ABI of direct methods, it was left uninitialized/undefined; although references within hand-implemented methods would load the selector in the method prologue, generated getters/setters never did and just forwarded the undefined value that was passed as the argument.

This change keeps the generated code mostly similar to before, passing an uninitialized/undefined/poison value; for setters, the value argument may be moved to another register.

Added a test that triggers the assert prior to the implementation code.

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

21 months ago[lld-macho] Canonicalize personality pointers in EH frames
Jez Ng [Wed, 12 Oct 2022 03:50:46 +0000 (23:50 -0400)]
[lld-macho] Canonicalize personality pointers in EH frames

We already do this for personality pointers referenced from compact
unwind entries; this patch extends that behavior to personalities
referenced via EH frames as well.

This reduces the number of distinct personalities we need in the final
binary, and helps us avoid hitting the "too many personalities" error.

I renamed `UnwindInfoSection::prepareRelocations()` to simply `prepare`
since we now do some non-reloc-specific stuff within.

Fixes #58277.

Reviewed By: #lld-macho, oontvoo

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

21 months ago[AArch64][Windows] Check sret attribute also for inreg attribute
chenglin.bi [Wed, 12 Oct 2022 01:57:35 +0000 (09:57 +0800)]
[AArch64][Windows] Check sret attribute also for inreg attribute

Fix the issue: #57684

Reviewed By: efriedma

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

21 months ago[RISCV] Add isel patterns for vmacc, vnmsac.
Yeting Kuo [Wed, 5 Oct 2022 15:34:37 +0000 (23:34 +0800)]
[RISCV] Add isel patterns for vmacc, vnmsac.

The patch selects VSELECT/VP_MERGE_VL which uses fmadd/fnmsub as true operand
and the adden of the fmadd/fnmsub as false operand.

Reviewed By: craig.topper

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

21 months agoApply clang-tidy fixes for readability-simplify-boolean-expr in BufferizableOpInterfa...
Mehdi Amini [Thu, 6 Oct 2022 19:16:56 +0000 (19:16 +0000)]
Apply clang-tidy fixes for readability-simplify-boolean-expr in BufferizableOpInterfaceImpl.cpp (NFC)

21 months agoApply clang-tidy fixes for llvm-else-after-return in MultiBuffer.cpp (NFC)
Mehdi Amini [Thu, 6 Oct 2022 19:13:00 +0000 (19:13 +0000)]
Apply clang-tidy fixes for llvm-else-after-return in MultiBuffer.cpp (NFC)

21 months ago[RISCV] Use mask/tail agnostic if tied source is IMPLICIT_DEF regardless of the polic...
Craig Topper [Tue, 11 Oct 2022 23:36:21 +0000 (16:36 -0700)]
[RISCV] Use mask/tail agnostic if tied source is IMPLICIT_DEF regardless of the policy operand.

If the source is implicit_def, the register allocator won't have
any constraint on what register it picks for the destination. This
doesn't give the user much control of what register is being used.

So in my mind that means the only reason to honor the policy operand
is to control what policy is used in vsetvli to maybe avoid a vtype
change. Given the other optimizations we do on the policy field, I
don't think allowing the user this control is reliable.

Therefore, I think we should use agnostic policies if the source is
undef.

This should give better performance on some CPUs for VP intrinsics where
there is no merge operand and the backend adds IMPLICIT_DEF to the instruction.

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

21 months agoRevert "[DAGCombiner] Fold (mul (sra X, BW-1), Y) -> (neg (and (sra X, BW-1), Y))"
Craig Topper [Tue, 11 Oct 2022 23:30:40 +0000 (16:30 -0700)]
Revert "[DAGCombiner] Fold (mul (sra X, BW-1), Y) -> (neg (and (sra X, BW-1), Y))"

This reverts commit 0148df8157f05ecf3b1064508e6f012aefb87dad.

Getting a lit test failures on AMDGPU but I can't reproduce it so far.
Reverting to investigate.

21 months ago[RISCV] Remove unused SchedClass WriteVFCvtFToFV. NFC
Craig Topper [Tue, 11 Oct 2022 23:25:28 +0000 (16:25 -0700)]
[RISCV] Remove unused SchedClass WriteVFCvtFToFV. NFC

This isn't bound to any instruction. From the section comment it
was for single-width F-to-F conversions, but those don't exist.

21 months ago[llvm-ocaml] Replace all typed pointer functions with opaque pointer functions
Alan Hu [Tue, 11 Oct 2022 23:25:29 +0000 (16:25 -0700)]
[llvm-ocaml] Replace all typed pointer functions with opaque pointer functions

Reviewed By: aeubanks

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

21 months ago[mlir][sparse] Add MLIR interface for sparse tensor file input and output.
bixia1 [Tue, 11 Oct 2022 22:28:20 +0000 (15:28 -0700)]
[mlir][sparse] Add MLIR interface for sparse tensor file input and output.

Reviewed By: aartbik, wrengr

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

21 months ago[DAGCombiner] Fold (mul (sra X, BW-1), Y) -> (neg (and (sra X, BW-1), Y))
Craig Topper [Tue, 11 Oct 2022 23:05:04 +0000 (16:05 -0700)]
[DAGCombiner] Fold (mul (sra X, BW-1), Y) -> (neg (and (sra X, BW-1), Y))

(sra X, BW-1) is either 0 or -1. So the multiply is a conditional
negate of Y.

This pattern shows up when type legalizing wide multiplies involving
a sign extended value.

Fixes PR57549.

Reviewed By: RKSimon

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

21 months ago[lld-macho] Add --ignore-auto-link-option
Keith Smiley [Sun, 9 Oct 2022 04:28:02 +0000 (21:28 -0700)]
[lld-macho] Add --ignore-auto-link-option

This provides a workaround for a small difference in ld64 behavior where
ld64 ignores invalid LC_LINKER_OPTIONS unless the link fails. Instead of
fully adopting that behavior, this provides an escape hatch by allowing
users to specify `--ignore-auto-link-option` passing the invalid library
or framework name

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

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

21 months ago[clang][deps] Prevent emitting diagnostics outside of source file
Jan Svoboda [Tue, 11 Oct 2022 22:38:48 +0000 (15:38 -0700)]
[clang][deps] Prevent emitting diagnostics outside of source file

The dependency scanner needs to report the module map file describing the module whose implementation is being compiled (see D134222). However, calling `Preprocessor::getCurrentModuleImplementation()` in the scanner might cause a diagnostic during module map parsing and emitting a diagnostic without being "in" a source file is illegal (e.g. in `TextDiagnosticPrinter`). This patch ensures the module map parse is triggered while the compiler is still "in" a source file, avoiding the failure case.

Reviewed By: Bigcheese

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

21 months ago[clang][deps] Remove more codegen options
Jan Svoboda [Tue, 11 Oct 2022 22:38:41 +0000 (15:38 -0700)]
[clang][deps] Remove more codegen options

Codegen options are typically unused by modules. Reset some of them to increase sharing between TUs with different flags.

Reviewed By: Bigcheese

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

21 months ago[Clang] Do not build the OffloadActionBuilder when using the new driver
Joseph Huber [Tue, 11 Oct 2022 21:11:21 +0000 (16:11 -0500)]
[Clang] Do not build the OffloadActionBuilder when using the new driver

The Offloading toolchain currently has two methods for construction the
requires actions. The "new" driver and the old `OffloadActionBuilder`.
Using either one is mutually exclusive, so we should not initialize this
when using the new driver. This was causing some error messages to be
printed multiple times because we were checking them in both the old and
the new driver.

Reviewed By: tra

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

21 months agoPrevent lldb-vscode tests from source lldbinit file
Jeffrey Tan [Fri, 30 Sep 2022 19:11:58 +0000 (12:11 -0700)]
Prevent lldb-vscode tests from source lldbinit file

lldb-vscode is hard-coded to source .lldbinit file which causes some tests to
fail on my machine.
This patch adds a new option to control this:
1. vscode.py and lldb-vscode tests will not source .lldbinit by default
2. lldb-vscode will source .lldbinit in production if not specified otherwise

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

21 months ago[GlobalISel] Allow vectors in redundant or + add combines
Jessica Paquette [Tue, 11 Oct 2022 21:49:41 +0000 (14:49 -0700)]
[GlobalISel] Allow vectors in redundant or + add combines

We support KnownBits for vectors, so we can enable these.

https://godbolt.org/z/r9a9W4Gj1

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

21 months ago[llvm] Update WPD tests to use opaque pointers
Leonard Chan [Tue, 11 Oct 2022 21:10:07 +0000 (21:10 +0000)]
[llvm] Update WPD tests to use opaque pointers

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

21 months ago[LTO] Make local linkage GlobalValue in non-prevailing COMDAT available_externally
Fangrui Song [Tue, 11 Oct 2022 22:30:07 +0000 (15:30 -0700)]
[LTO] Make local linkage GlobalValue in non-prevailing COMDAT available_externally

For a local linkage GlobalObject in a non-prevailing COMDAT, it remains defined while its
leader has been made available_externally. This violates the COMDAT rule that
its members must be retained or discarded as a unit.

To fix this, update the regular LTO change D34803 to track local linkage
GlobalValues, and port the code to ThinLTO (GlobalAliases are not handled.)

This fixes two problems.

(a) `__cxx_global_var_init` in a non-prevailing COMDAT group used to
linger around (unreferenced, hence benign), and is now correctly discarded.
```
int foo();
inline int v = foo();
```

(b) Fix https://github.com/llvm/llvm-project/issues/58215:
as a size optimization, we place private `__profd_` in a COMDAT with a
`__profc_` key. When FuncImport.cpp makes `__profc_` available_externally due to
a non-prevailing COMDAT, `__profd_` incorrectly remains private. This change
makes the `__profd_` available_externally.

```
cat > c.h <<'eof'
extern void bar();
inline __attribute__((noinline)) void foo() {}
eof
cat > m1.cc <<'eof'
int main() {
  bar();
  foo();
}
eof
cat > m2.cc <<'eof'
__attribute__((noinline)) void bar() {
  foo();
}
eof

clang -O2 -fprofile-generate=./t m1.cc m2.cc -flto -fuse-ld=lld -o t_gen
rm -fr t && ./t_gen && llvm-profdata show -function=foo t/default_*.profraw

clang -O2 -fprofile-generate=./t m1.cc m2.cc -flto=thin -fuse-ld=lld -o t_gen
rm -fr t && ./t_gen && llvm-profdata show -function=foo t/default_*.profraw
```

Reviewed By: tejohnson

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

21 months ago[mlir][sparse] Add rewriting rules for the sparse_tensor.new operator.
bixia1 [Tue, 11 Oct 2022 20:47:45 +0000 (13:47 -0700)]
[mlir][sparse] Add rewriting rules for the sparse_tensor.new operator.

Reviewed By: aartbik

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

21 months ago[MC] .addrsig_sym: ignore unregistered symbols
Fangrui Song [Tue, 11 Oct 2022 22:07:14 +0000 (15:07 -0700)]
[MC] .addrsig_sym: ignore unregistered symbols

.addrsig_sym forces registering the symbol regardless whether it is otherwise
registered. This creates an undefined symbol which is inconvenient/undesired:

* `extern int x; void f() { (void)x; }` has inconsistent behavior whether `x` is emitted as an undefined symbol.
  `-O0 -faddrsig` makes `x` undefined while other -O levels and -fno-addrsig eliminate the symbol.
* In ThinLTO, after a non-prevailing linkonce_odr definition is converted to available_externally, and then a declaration,
  the addrsig code emits a symbol while the symbol is otherwise unseen.

D135427 fixed a bug that a non-prevailing `__cxx_global_var_init` was
incorrectly retained. However, the IR declaration causes an undesired
`.addrsig_sym __cxx_global_var_init`. This can be addressed in a way similar
to D101512 (`isTransitiveUsedByMetadataOnly`) but the increased
`OutStreamer->emitAddrsigSym(getSymbol(&GV));` complexity makes me nervous.
Just ignoring unregistered symbols circumvents the problem.

Reviewed By: rnk

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

21 months ago[mlir][sparse] Renaming mlir_sparse_tensor_utils library to SparseTensorRuntime
wren romano [Mon, 10 Oct 2022 20:41:58 +0000 (13:41 -0700)]
[mlir][sparse] Renaming mlir_sparse_tensor_utils library to SparseTensorRuntime

The "mlir_xxx_utils" naming scheme is reserved/intended for shared libraries, whereas this library must be static due to issues of linking DLLs on Windows.  So we rename the library to avoid any potential confusion.   In addition we also rename the ExecutionEngine/SparseTensorUtils.{h,cpp} files to match the new library name.

Reviewed By: aartbik, stella.stamenova

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

21 months ago[CallGraph] Port -print-callgraph-sccs to new pass manager
Arthur Eubanks [Fri, 7 Oct 2022 21:08:43 +0000 (14:08 -0700)]
[CallGraph] Port -print-callgraph-sccs to new pass manager

And remove the legacy opt-specific pass.

Reviewed By: asbirlea

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

21 months ago[mlir][sparse] Move a few routines to CodegenUtils.
bixia1 [Tue, 11 Oct 2022 20:22:14 +0000 (13:22 -0700)]
[mlir][sparse] Move a few routines to CodegenUtils.

Move a few supporting routines for generating function calls to CodegenUtils so
that they can be used by the codegen path for sparse tensor file input and
output.

Reviewed By: aartbik

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

21 months ago[flang] Use the ShapedType::kDynamicSize constant instead of hardcoding it.
Alexander Belyaev [Tue, 11 Oct 2022 14:26:42 +0000 (16:26 +0200)]
[flang] Use the ShapedType::kDynamicSize constant instead of hardcoding it.

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

21 months ago[SystemZ][NFC] Opaque pointer migration.
Kai Nacke [Tue, 11 Oct 2022 20:59:16 +0000 (20:59 +0000)]
[SystemZ][NFC] Opaque pointer migration.

The LIT test cases were migrated with the script provided by
Nikita Popov.

No manual changes were made. Committed without review since
no functional changes, after consultation with uweigand.

21 months ago[mlir][sparse] Converting SparseTensorCOO to use standard C++-style iterators.
wren romano [Fri, 7 Oct 2022 21:21:02 +0000 (14:21 -0700)]
[mlir][sparse] Converting SparseTensorCOO to use standard C++-style iterators.

This differential comprises three related changes: (1) it gives SparseTensorCOO standard C++-style iterators; (2) it removes the old iterator stuff from SparseTensorCOO; and (3) it introduces SparseTensorIterator which behaves like the old SparseTensorCOO iterator stuff used to.

The SparseTensorIterator class is needed because the MLIR codegen cannot easily use the C++-style iterators (hence why SparseTensorCOO had the old iterator stuff).  Distinguishing SparseTensorIterator from SparseTensorCOO also helps improve API hygiene since these two classes are used for distinct purposes.  And having SparseTensorIterator as its own class enables changing the underlying implementation in the future, without needing to worry about updating all the codegen tests etc.

Reviewed By: aartbik

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

21 months ago[clang][codegen] Don't emit atomic loads for threadsafe init if they aren't inline
Eli Friedman [Tue, 11 Oct 2022 21:00:33 +0000 (14:00 -0700)]
[clang][codegen] Don't emit atomic loads for threadsafe init if they aren't inline

Performing a load before calling __cxa_guard_acquire is supposed to be
an optimization, but it isn't much of one if we're just going to emit a
call to __atomic_load_1 instead.  Instead, just skip the load, and
let __cxa_guard_acquire do whatever it wants.

(In practice, on such targets, the C++ library is just built with
threading turned off, so the result isn't actually threadsafe, but
there's not really anything clang can do about that.)

The alternative here is that we try to define some ABI for threadsafe
init that allows the speculative load without full atomics.  Almost any
target without full atomics has a load that's s "atomic enough" for this
purpose. But it's not clear how we emit an "atomic enough" load in LLVM
IR, and there isn't any ABI document we can refer to.

Or I guess we could turn off -fthreadsafe-statics by default on
Cortex-M0, but that seems like it would be surprising.

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

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

21 months ago[clang/Sema] Follow-up for fix of non-deterministic order of `-Wunused-variable`...
Argyrios Kyrtzidis [Fri, 7 Oct 2022 20:51:00 +0000 (13:51 -0700)]
[clang/Sema] Follow-up for fix of non-deterministic order of `-Wunused-variable` diagnostic

Commit `371883f46dc23f8464cbf578e2d12a4f92e61917` caused a noticeable compile-time regression (about 0.4% geomean at -O0):
http://llvm-compile-time-tracker.com/compare.php?from=92233159035d1b50face95d886901cf99035bd99&to=371883f46dc23f8464cbf578e2d12a4f92e61917&stat=instructions

To address this switch `Scope::DeclSetTy` back to a `SmallPtrSet` and change `Sema::ActOnPopScope` to explicitly order the diagnostics that this function emits.

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

21 months ago[Sema] Fix `ExtVectorElementExpr` tree transform for the `isArrow` case.
Michele Scandale [Tue, 11 Oct 2022 20:28:59 +0000 (13:28 -0700)]
[Sema] Fix `ExtVectorElementExpr` tree transform for the `isArrow` case.

Make sure we propagate the value for `IsArrow` to
`RebuildExtVectorElementExpr` in order to be able to handle correctly
vector component accesses where the base value is a pointer.

Reviewed By: rjmccall

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

21 months ago[libc++][NFC] Change _VSTD to std as a prereq for D122780
Louis Dionne [Tue, 11 Oct 2022 19:58:35 +0000 (15:58 -0400)]
[libc++][NFC] Change _VSTD to std as a prereq for D122780

21 months ago[MC] [NFC] replace tabs with space in test
Florian Mayer [Tue, 11 Oct 2022 19:37:02 +0000 (12:37 -0700)]
[MC] [NFC] replace tabs with space in test

21 months ago[TokenLexer][NFC] Rename the InstLoc to ExpandLoc
Haojian Wu [Tue, 11 Oct 2022 12:58:22 +0000 (14:58 +0200)]
[TokenLexer][NFC] Rename the InstLoc to ExpandLoc

We don't use the "instantiate" word for the macro expansion in LLVM,
see c9c8419c383d0b53c40973f7587003ef45daf481.

21 months agoReenable gdb pretty printers, and update them.
Sterling Augustine [Mon, 10 Oct 2022 22:26:14 +0000 (15:26 -0700)]
Reenable gdb pretty printers, and update them.

Libcxx gdb pretty printers were disabled due to an old version
of gdb in the release testing. This reenables them, and fixes
various bit rot issues from not running them.

21 months ago[DX] Add analysis and printer for shader flags
Chris Bieneman [Tue, 11 Oct 2022 17:09:30 +0000 (12:09 -0500)]
[DX] Add analysis and printer for shader flags

This adds infrastructural pieces for an analysis to compute the DXIL
shader flags. In this state the analysis can compute two fairly
straightforward feature flags for use of double-precision floating
point values and the DX 11.1 extended double support.

This patch does conflict with D135190, conflicts will be resolved prior
to merging.

Reviewed By: python3kgae

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

# Conflicts:
# llvm/lib/Target/DirectX/CMakeLists.txt
# llvm/lib/Target/DirectX/DirectXTargetMachine.cpp

21 months ago[NFC] Test commit.
Michele Scandale [Tue, 11 Oct 2022 19:26:08 +0000 (12:26 -0700)]
[NFC] Test commit.

21 months ago[runtimes] Add the ability to customize the output name of libc++, libc++abi and...
Louis Dionne [Tue, 11 Oct 2022 14:05:56 +0000 (10:05 -0400)]
[runtimes] Add the ability to customize the output name of libc++, libc++abi and libunwind

We already had the ability to do that for libc++.dylib, so this only adds
consistency for all the runtime libraries. This should allow working around
difficulties on AIX as described in https://llvm.org/D134221.

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

21 months ago[libunwind] Install the headers by default
Louis Dionne [Tue, 11 Oct 2022 13:19:55 +0000 (09:19 -0400)]
[libunwind] Install the headers by default

Just like we install libc++ and libc++abi headers by default when we
install the library, it makes sense to install the libunwind headers
by default when we build libunwind. In the current state of things,
there is an increased risk that folks are using older (previously
installed) libunwind headers along with a recent libunwind dylib,
which is not ideal.

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

21 months ago[OpenMP] Fix `-foffload-lto` for offloading to Nvidia
Joseph Huber [Tue, 11 Oct 2022 18:39:06 +0000 (13:39 -0500)]
[OpenMP] Fix `-foffload-lto` for offloading to Nvidia

Summary:
A previous patch ensured that we can't use `-foffload-lto` with CUDA in
non-RDC mode. This did not correctly check for if we were actually
offloading to CUDA so it ended up preventing us from using LTO for
OpenMP.

21 months ago[OpenMP][Docs] Add documentation for linking OpenMP with CUDA/HIP
Joseph Huber [Tue, 11 Oct 2022 17:00:06 +0000 (12:00 -0500)]
[OpenMP][Docs] Add documentation for linking OpenMP with CUDA/HIP

Summary:
This patch adds an entry to the FAQ that shows how to link CUDA with
OpenMP.

21 months ago[Clang] Fix use of `hasArg` when `hasFlag` should be used instead
Joseph Huber [Tue, 11 Oct 2022 16:42:40 +0000 (11:42 -0500)]
[Clang] Fix use of `hasArg` when `hasFlag` should be used instead

Summary:
This option forwards a clang flag with a `-no` variant to the Clang
compiler. It should use the `hasFlag` so it works properly when the
option is overridden.

21 months ago[OpenMP][Docs] Document multi-architecture binary handling
Joseph Huber [Tue, 11 Oct 2022 16:30:03 +0000 (11:30 -0500)]
[OpenMP][Docs] Document multi-architecture binary handling

Summary:
This patch adds some documentation in the FAQ regarding
multi-architecture binary support using the `--offload-arch` flag.

21 months ago[docs] Fix warning in AMDGPUUsage.rst after 3d9f011a9c624b3128bc6b5e71ed456eb92e268c
Abinav Puthan Purayil [Tue, 11 Oct 2022 18:24:01 +0000 (23:54 +0530)]
[docs] Fix warning in AMDGPUUsage.rst after 3d9f011a9c624b3128bc6b5e71ed456eb92e268c

21 months ago[mlir][arith] Improve EmulateWideInt diagnostics
Jakub Kuderski [Tue, 11 Oct 2022 18:24:38 +0000 (14:24 -0400)]
[mlir][arith] Improve EmulateWideInt diagnostics

Print unsupported types on match failures.

Suggested by @Mogball and @jpienaar in D135204.

Reviewed By: Mogball

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

21 months ago[LLDB] Fix crash when printing a struct with a static wchar_t member
Arthur Eubanks [Fri, 7 Oct 2022 17:08:25 +0000 (10:08 -0700)]
[LLDB] Fix crash when printing a struct with a static wchar_t member

Similar to D135170.

Reviewed By: DavidSpickett

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

21 months ago[AMDGPU] Make the uses_dynamic_stack field in the kernel descriptor and the metadata...
Abinav Puthan Purayil [Tue, 27 Sep 2022 05:36:35 +0000 (11:06 +0530)]
[AMDGPU] Make the uses_dynamic_stack field in the kernel descriptor and the metadata map specific to code object v5 and later

Unfortunately, we have a broken handling of this in the runtime of rocm
5.3. The runtime is expected to handle this correctly when v5 becomes
the default.

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

21 months ago[clang-format] update --files help description
Yuanfang Chen [Tue, 11 Oct 2022 17:18:11 +0000 (10:18 -0700)]
[clang-format] update --files help description

correlates the option with reponse file concept.

Reviewed By: HazardyKnusperkeks

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

21 months ago[PPC] Opaque pointer migration, part 2.
Kai Nacke [Fri, 7 Oct 2022 18:34:40 +0000 (18:34 +0000)]
[PPC] Opaque pointer migration, part 2.

The LIT test cases were migrated with the script provided by
Nikita Popov. Due to the size of the change it is split into
several parts.

Reviewed By: nemanja, nikic

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

21 months ago[PPC] Opaque pointer migration, part 1.
Kai Nacke [Fri, 7 Oct 2022 17:50:35 +0000 (17:50 +0000)]
[PPC] Opaque pointer migration, part 1.

The LIT test cases were migrated with the script provided by
Nikita Popov. Due to the size of the change it is split into
several parts.

Reviewed By: nemanja, amyk, nikic, PowerPC

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

21 months ago[NFC][libc++][format] Improves tests.
Mark de Wever [Wed, 5 Oct 2022 17:21:43 +0000 (19:21 +0200)]
[NFC][libc++][format] Improves tests.

This is mainly to improve the readability of the tests. As a side
effects the tests run faster too,

Reviewed By: ldionne, #libc

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

21 months agoApply clang-tidy fixes for llvm-qualified-auto in Tiling.cpp (NFC)
Mehdi Amini [Thu, 6 Oct 2022 19:07:20 +0000 (19:07 +0000)]
Apply clang-tidy fixes for llvm-qualified-auto in Tiling.cpp (NFC)

21 months agoApply clang-tidy fixes for readability-identifier-naming in GPUTransformOps.cpp ...
Mehdi Amini [Thu, 6 Oct 2022 18:58:57 +0000 (18:58 +0000)]
Apply clang-tidy fixes for readability-identifier-naming in GPUTransformOps.cpp (NFC)

21 months ago[GlobalISel] Combine (X op Y) == X --> Y == 0
Jessica Paquette [Thu, 6 Oct 2022 18:03:43 +0000 (11:03 -0700)]
[GlobalISel] Combine (X op Y) == X --> Y == 0

This matches patterns of the form

```
(X op Y) == X
```

And transforms them to

```
Y == 0
```

where appropriate.

Example: https://godbolt.org/z/hfW811c7W

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

21 months ago[SDAG] Treat DemandedElts argument to isSplatVector as splat for scalable vectors...
Philip Reames [Tue, 11 Oct 2022 16:32:49 +0000 (09:32 -0700)]
[SDAG] Treat DemandedElts argument to isSplatVector as splat for scalable vectors [nfc]

The previous code used a APInt(1, 0) to represent the demanded elts of a scalable vector, and then ignored that argument if type was scalable.  This was inconsistent with the UndefElts parameter which is set to either APInt(1, 0) or APInt(1,1) - that is, implicitly broadcast across all lanes.  Particularly since the undef code relied on the DemandedElts parameter having bitwidth 1 to achieve that result!

This change switches the demanded parameter to APInt(1,1), documents the broadcast semantics, and takes advantage of it to remove one special case for scalable vectors which is no longer required.

21 months ago[HLSL] Add Resource kind for HLSLResourceAttr.
Xiang Li [Thu, 6 Oct 2022 00:35:32 +0000 (17:35 -0700)]
[HLSL] Add Resource kind for HLSLResourceAttr.

A new EnumArgument ResourceKind is added for HLSLResourceAttr.
This will be use to get resource kind instead of parse it from the type name.

Reviewed By: aaron.ballman

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

21 months ago[flang] Fix buildbot failure after D135610.
Slava Zakharin [Tue, 11 Oct 2022 15:54:58 +0000 (08:54 -0700)]
[flang] Fix buildbot failure after D135610.

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

21 months ago[mlir] generate docs for GPU transform extension
Alex Zinenko [Tue, 11 Oct 2022 15:31:51 +0000 (15:31 +0000)]
[mlir] generate docs for GPU transform extension

21 months ago[AMDGPU] Make disassembler convertFMAanyK call more generic
Joe Nash [Tue, 11 Oct 2022 14:24:52 +0000 (10:24 -0400)]
[AMDGPU] Make disassembler convertFMAanyK call more generic

Make support more generic to support future instructions.
Currently NFC.

Reviewed By: foad, arsenm

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

21 months ago[Hexagon] Remove unused function, NFC
Krzysztof Parzyszek [Tue, 11 Oct 2022 15:04:07 +0000 (08:04 -0700)]
[Hexagon] Remove unused function, NFC

21 months ago[gn build] Reformat all build files
Nico Weber [Tue, 11 Oct 2022 14:26:00 +0000 (10:26 -0400)]
[gn build] Reformat all build files

Ran:

    git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format

21 months ago[GISel] Add redundant bitcast folding combine
Pierre van Houtryve [Tue, 4 Oct 2022 11:06:15 +0000 (11:06 +0000)]
[GISel] Add redundant bitcast folding combine

Simply folds away bitcasts that cancel each other.

Reviewed By: arsenm

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

21 months ago[libc++] static_assert that rebinding the allocator works as expected
Nikolas Klauser [Sat, 8 Oct 2022 20:17:32 +0000 (22:17 +0200)]
[libc++] static_assert that rebinding the allocator works as expected

Reviewed By: ldionne, #libc

Spies: libcxx-commits

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

21 months ago[Intrinsics] Remove duplicate ImmArg attribute on amdgcn.global.load.lds
Nikita Popov [Tue, 11 Oct 2022 14:32:18 +0000 (16:32 +0200)]
[Intrinsics] Remove duplicate ImmArg attribute on amdgcn.global.load.lds

21 months ago[gn build] port 243da90ea535 more
Nico Weber [Tue, 11 Oct 2022 14:28:56 +0000 (10:28 -0400)]
[gn build] port 243da90ea535 more

21 months ago[SDAG] Clarify behavior of scalable demanded/undef elts in isSplatValue [nfc]
Philip Reames [Tue, 11 Oct 2022 14:26:44 +0000 (07:26 -0700)]
[SDAG] Clarify behavior of scalable demanded/undef elts in isSplatValue [nfc]

Update comment, and add an assertion to check property expected by sole (non-test) caller.  Remove tests which appear to have been copied from fixed vector tests, and whose demanded bits don't correspond to the way this interface is otherwise used.

21 months ago[LoopRotation] Also drop block dispositions.
Florian Hahn [Tue, 11 Oct 2022 14:25:27 +0000 (15:25 +0100)]
[LoopRotation] Also drop block dispositions.

LoopRotation may also fold basic blocks, so cached block dispositions
also need to be dropped.

Fixes #58291.

21 months ago[gn build] (semi-automatically) port 243da90ea535
Nico Weber [Tue, 11 Oct 2022 14:24:17 +0000 (10:24 -0400)]
[gn build] (semi-automatically) port 243da90ea535

21 months ago[NVPTX] Fix a segfault for bitcasted calls with byval params
Luke Drummond [Fri, 23 Sep 2022 15:50:51 +0000 (16:50 +0100)]
[NVPTX] Fix a segfault for bitcasted calls with byval params

`getFunctionParamOptimizedAlign` was being passed a null function
argument when getting the callee of a bitcasted function symbol. This is
because `CallBase::getCalledFunction` does not look through bitcasts.

There is already code to handle this case in
`NVPTXTargetLowering::getArgumentAlignment`, which is now hoisted into
an NVPTX util.

The alignment computation now gracefully handles computing alignment of
virtual functions with a check for null.

21 months ago[LLDB] Change RegisterValue::GetAsMemoryData to const RegisterInfo&
David Spickett [Wed, 28 Sep 2022 14:00:02 +0000 (14:00 +0000)]
[LLDB] Change RegisterValue::GetAsMemoryData to const RegisterInfo&

Most of the paths to this never passed nullptr intentionally. Those
that possibly could have were assuming it was not null elsehwere,
so would have crashed.

I've added asserts in those cases.

At least one case was relying on GetAsMemoryData to return an error
when it was given nullptr. So I've hoisted that error setting code
out into the caller.

Depends on D134963

Reviewed By: clayborg

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

21 months ago[InstCombine] try harder to cancel out mul/div
Sanjay Patel [Tue, 11 Oct 2022 13:28:09 +0000 (09:28 -0400)]
[InstCombine] try harder to cancel out mul/div

((Op1 * X) / Y) / Op1 --> X / Y
https://alive2.llvm.org/ce/z/JYxWjA

InstSimplify handles the more basic mul+div pattern with
shared operand, but we don't seem to have any reassociation
folds to handle cases where the common op is further away.

This is a generalization of 9cff4711ac72 and another
transform derived from issue #58137.

21 months ago[InstCombine] add tests for div with common mul operand; NFC
Sanjay Patel [Tue, 11 Oct 2022 12:39:10 +0000 (08:39 -0400)]
[InstCombine] add tests for div with common mul operand; NFC

21 months ago[mlir][Bazel] Remove unused dependency.
Adrian Kuegel [Tue, 11 Oct 2022 13:39:28 +0000 (15:39 +0200)]
[mlir][Bazel] Remove unused dependency.

21 months agoMake windows resource generation more robust
Anush Elangovan [Tue, 11 Oct 2022 13:30:15 +0000 (06:30 -0700)]
Make windows resource generation more robust

This is another attempt at https://reviews.llvm.org/D110489.

When build IREE we run into cases where we don't have / need
LLVM_VERSION_* etc set. Compilation fails if it isn't an integer.

Reviewed By: stellaraccident

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

21 months ago[LLDB] Switch to RegisterInfo& for EmulateInstruction::WriteRegister
David Spickett [Wed, 28 Sep 2022 13:15:44 +0000 (13:15 +0000)]
[LLDB] Switch to RegisterInfo& for EmulateInstruction::WriteRegister

WriteRegister and WriteRegisterUnsigned were never pased nullptr,
and only one of them appeared to handle it. Switch to ref to make
the intent clear.

Depends on D134962

Reviewed By: clayborg

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

21 months ago[mlir][llvm] Introduce a mapValue function in LLVMIR import (nfc).
Tobias Gysi [Tue, 11 Oct 2022 12:58:32 +0000 (15:58 +0300)]
[mlir][llvm] Introduce a mapValue function in LLVMIR import (nfc).

The revision adds a mapValue function to the Importer, which can be used
in the MLIR builders to provide controlled accesses to the result
mapping of the imported instructions. Additionally, the change allows us
to avoid accessing a private member variable of the Importer class,
which simplifies future refactorings that aim at factoring out a
conversion interface (similar to the MLIR to LLVM translation). The
revision also renames the variables used when emitting the MLIR builders
to prepare the generalization to non-intrinsic instructions. In
particular, it renames callInst to inst and it passes in the instruction
arguments using an llvmOperands array rather than accessing the call
arguments directly.

Reviewed By: ftynse

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

21 months ago[TableGen] Change representation of ArgumentAttributes (NFC)
Nikita Popov [Tue, 11 Oct 2022 13:01:48 +0000 (15:01 +0200)]
[TableGen] Change representation of ArgumentAttributes (NFC)

Instead of a flat list that includes the argument index, use a
nested vector, where each inner vector is the attribute set for
a single argument. This is more obvious and makes followup changes
simpler.

21 months ago[libclang] CIndex: Visit UsingTypeLoc as TypeRef
Kai Stierand [Tue, 11 Oct 2022 12:32:43 +0000 (14:32 +0200)]
[libclang] CIndex: Visit UsingTypeLoc as TypeRef

Reviewed By: sammccall

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

21 months ago[libc++] Add the C++17 <memory_resource> header (mono-patch)
Arthur O'Dwyer [Thu, 6 Oct 2022 20:53:30 +0000 (16:53 -0400)]
[libc++] Add the C++17 <memory_resource> header (mono-patch)

This patch is the rebase and squash of three earlier patches.
It supersedes all three of them.

- D47111: experimental monotonic_buffer_resource.
- D47358: experimental pool resources.
- D47360: Copy std::experimental::pmr to std::pmr.

The significant difference between this patch and the-sum-of-those-three
is that this patch does not add `std::experimental::pmr::monotonic_buffer_resource`
and so on. This patch simply adds the C++17 standard facilities, and
leaves the `std::experimental` namespace entirely alone.

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

21 months agoReland "[clang][LoongArch] Set MaxAtomicInlineWidth and MaxAtomicPromoteWidth for...
wanglei [Tue, 11 Oct 2022 12:23:03 +0000 (20:23 +0800)]
Reland "[clang][LoongArch] Set MaxAtomicInlineWidth and MaxAtomicPromoteWidth for LoongArch"

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

21 months ago[NFC] Factor out collection of unswitch candidate to a separate function
Max Kazantsev [Tue, 11 Oct 2022 11:01:58 +0000 (18:01 +0700)]
[NFC] Factor out collection of unswitch candidate to a separate function

Just to make the code more structured and easier to understand.

21 months ago[NFC] Refine API in SimpleLoopUnswitch: add missing const notions
Max Kazantsev [Tue, 11 Oct 2022 11:53:44 +0000 (18:53 +0700)]
[NFC] Refine API in SimpleLoopUnswitch: add missing const notions

21 months ago[NFC] Refine API: add missing const notion in hasPartialIVCondition
Max Kazantsev [Tue, 11 Oct 2022 11:30:17 +0000 (18:30 +0700)]
[NFC] Refine API: add missing const notion in hasPartialIVCondition

21 months ago[flang] Add cpowi function to runtime and use instead of pgmath
David Truby [Mon, 3 Oct 2022 11:01:50 +0000 (11:01 +0000)]
[flang] Add cpowi function to runtime and use instead of pgmath

This patch adds a cpowi function to the flang runtime, and switches
to using that function instead of pgmath for complex number to
integer power operations.

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

21 months ago[LLDB] Change pointer to ref in EmulateInstruction::ReadRegister methods
David Spickett [Wed, 28 Sep 2022 12:45:18 +0000 (12:45 +0000)]
[LLDB] Change pointer to ref in EmulateInstruction::ReadRegister methods

ReadRegister and ReadRegisterAsUnsigned are always passed valid pointers,
so the parameter should be a ref to make the intent clear.

Reviewed By: clayborg

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

21 months ago[NFC] Pre-commit tests for D135434.
Simon Tatham [Fri, 7 Oct 2022 09:17:29 +0000 (10:17 +0100)]
[NFC] Pre-commit tests for D135434.

pipeliner-preserve-ties.mir demonstrates a current bug in which the
output of the Modulo Software Pipelining pass has left off a tie
between operands in the conditional `t2ADDri` instruction. It should
look like this:

    %19:rgpr = t2ADDri %1, 1, 1 /* CC::ne */, $cpsr, $noreg, implicit %1(tied-def 0)

in which the final input operand is tied to the output, because that's
the input that will become the output value if the conditionalized add
instruction does not execute, and hence, must necessarily be whatever
was in the output register beforehand.

In the input to the pipeliner, those `tied-def` specifications are
present and correct. But when the pipeliner clones MachineInstrs, it
loses them.

pipeliner-inlineasm.mir does not demonstrate any bug: the output is
already correct, because of compensation code in the machine pipeliner
that applies only to INLINEASM instructions. But no test previously
exercised that code, so I add one now before making changes in that
area.

21 months ago[mlir] drop unnecssary transform.with_pdl_patterns from tests, NFC
Alex Zinenko [Tue, 11 Oct 2022 11:44:58 +0000 (11:44 +0000)]
[mlir] drop unnecssary transform.with_pdl_patterns from tests, NFC

Many tests wrap the piece of the IR related to the transform dialect
into `transform.with_pdl_patterns` without actually using PDL patterns
inside. Some of these are leftovers from migration to `structured.match`
and some others are cargo cult, both are useless and pollute the tests.

Reviewed By: guraypp

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

21 months agoReland "[Clang][LoongArch] Add inline asm support for constraints k/m/ZB/ZC"
Weining Lu [Tue, 11 Oct 2022 11:13:18 +0000 (19:13 +0800)]
Reland "[Clang][LoongArch] Add inline asm support for constraints k/m/ZB/ZC"

Reference: https://gcc.gnu.org/onlinedocs/gccint/Machine-Constraints.html

k: A memory operand whose address is formed by a base register and
(optionally scaled) index register.

m: A memory operand whose address is formed by a base register and
offset that is suitable for use in instructions with the same
addressing mode as st.w and ld.w.

ZB: An address that is held in a general-purpose register. The offset
is zero.

ZC: A memory operand whose address is formed by a base register and
offset that is suitable for use in instructions with the same
addressing mode as ll.w and sc.w.

Note:
The INLINEASM SDNode flags in below tests are updated because the new
introduced enum `Constraint_k` is added before `Constraint_m`.
  llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-inline-asm.ll
  llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-inline-asm.ll
  llvm/test/CodeGen/X86/callbr-asm-kill.mir

This patch passes `ninja check-all` on a X86 machine with all official
targets and the LoongArch target enabled.

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

21 months ago[AMDGPU][MC] Correct image_gather4h
Dmitry Preobrazhensky [Tue, 11 Oct 2022 11:40:23 +0000 (14:40 +0300)]
[AMDGPU][MC] Correct image_gather4h

Correct encoding of image_gather4h for GFX9; disable this instruction for SI, CI and VI.

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

21 months ago[AArch64] Add SEH_Nop opcodes for BTI hints
Martin Storsjö [Wed, 5 Oct 2022 10:49:20 +0000 (13:49 +0300)]
[AArch64] Add SEH_Nop opcodes for BTI hints

These are harmless for the unwinder - the unwinder doesn't need to
handle them for being able to unwind correctly.

Only add the opcodes when the branch target is in a SEH prologue;
for jumptables e.g. within a function, we shouldn't add any SEH
opcodes.

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