platform/upstream/llvm.git
2 years ago[DeadArgElim] Use structure bindings in foreach loops. NFC
Pavel Samolysov [Wed, 31 Aug 2022 14:44:34 +0000 (17:44 +0300)]
[DeadArgElim] Use structure bindings in foreach loops. NFC

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

2 years ago[gn build] Port d931ac9e27ca
LLVM GN Syncbot [Thu, 1 Sep 2022 10:19:04 +0000 (10:19 +0000)]
[gn build] Port d931ac9e27ca

2 years ago[clang][dataflow] Generalise match switch utility to other AST types and add a `CFGMa...
Wei Yi Tee [Thu, 1 Sep 2022 08:39:59 +0000 (08:39 +0000)]
[clang][dataflow] Generalise match switch utility to other AST types and add a `CFGMatchSwitch` which currently handles `CFGStmt` and `CFGInitializer`.

`MatchSwitch` currently takes in matchers and functions for the `Stmt` class.

This patch generalises the match switch utility (renamed to `ASTMatchSwitch`) to work for different AST node types by introducing a template argument which is the base type for the AST nodes that the match switch will handle.

A `CFGMatchSwitch` is introduced as a wrapper around multiple `ASTMatchSwitch`s for different base types. It works by unwrapping `CFGElement`s into their contained AST nodes and passing the nodes to the relevant `ASTMatchSwitch`. The `CFGMatchSwitch` currently only handles `CFGStmt` and `CFGInitializer`.

Reviewed By: gribozavr2, sgatev

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

2 years ago[clang][WebAssembly] Pass `-Wa,--no-type-check` through to the MC layer
Sam Clegg [Thu, 4 Aug 2022 23:03:21 +0000 (16:03 -0700)]
[clang][WebAssembly] Pass `-Wa,--no-type-check` through to the MC layer

I took as an example the `-Wa,--noexecstack` clang flag that maps down
to `cc1 -mnoexecstack`.

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

2 years ago[LLDB] Simplify cmake for instruction emulation unit tests
David Spickett [Wed, 31 Aug 2022 14:41:57 +0000 (14:41 +0000)]
[LLDB] Simplify cmake for instruction emulation unit tests

I got suspicious because of checking "ARM" for an "ARM64" plugin.
As far as I can tell these never needed an llvm target to function.

Looking at the corresponding cmake for the libraries under test they
don't reference target libraries either.

Reviewed By: labath

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

2 years ago[OpenCL][SPIR-V] Test extern functions with a pointer arg.
Anastasia Stulova [Thu, 1 Sep 2022 09:18:03 +0000 (10:18 +0100)]
[OpenCL][SPIR-V] Test extern functions with a pointer arg.

Added a test case that enhances coverage of opaque pointers
particularly for the problematic case with extern functions
for which there is no solution found for type recovery.

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

2 years ago[NFC][clang] LLVM_FALLTHROUGH => [[fallthrough]]
Sheng [Thu, 1 Sep 2022 09:17:46 +0000 (09:17 +0000)]
[NFC][clang] LLVM_FALLTHROUGH => [[fallthrough]]

2 years ago[LLVM] Add missing stdint include to Bit.h
David Spickett [Thu, 1 Sep 2022 08:54:57 +0000 (08:54 +0000)]
[LLVM] Add missing stdint include to Bit.h

To fix failing builds on Windows on Arm:
https://lab.llvm.org/staging/#/builders/59/builds/928/steps/4/logs/stdio

<...>/ADT/bit.h(50,5): error: unknown type name 'uint32_t'
    uint32_t v = Value;
    ^

2 years agoRevert "[test][msan] Basic debug info test"
Douglas Yung [Thu, 1 Sep 2022 09:09:04 +0000 (02:09 -0700)]
Revert "[test][msan] Basic debug info test"

This reverts commit ed241e873009dd0a32c6eb0dc02885d37c05e1cd.

This test is failing on many bots:

https://lab.llvm.org/buildbot/#/builders/3/builds/12656
https://lab.llvm.org/buildbot/#/builders/6/builds/12696
https://lab.llvm.org/buildbot/#/builders/9/builds/12687
https://lab.llvm.org/buildbot/#/builders/58/builds/25332
https://lab.llvm.org/buildbot/#/builders/67/builds/8059
https://lab.llvm.org/buildbot/#/builders/117/builds/8806
https://lab.llvm.org/buildbot/#/builders/139/builds/27430
https://lab.llvm.org/buildbot/#/builders/164/builds/24139
https://lab.llvm.org/buildbot/#/builders/216/builds/9144

2 years ago[LLDB] Make build.py use uname to set platform
Muhammad Omair Javaid [Wed, 31 Aug 2022 11:33:45 +0000 (16:33 +0500)]
[LLDB] Make build.py use uname to set platform

This patch makes build helper script build.py to use platform.uname for
machine/architecture detection. Visual studio environment when set using
various batch files like vcvars*.bat set PLATFORM environment variable
however VsDevCmd.bat does not set PLATFORM variable.

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

2 years ago[LLDB] Make API tests to run using MSYS tools
Muhammad Omair Javaid [Wed, 31 Aug 2022 08:08:57 +0000 (13:08 +0500)]
[LLDB] Make API tests to run using MSYS tools

MSYS 'uname' on windows returns "MSYS_NT*" instead of windows32 and also
MSYS 'pwd' returns non-windows path string.
This patch fixes Makefile.rules to make adjustments required to run LLDB
API tests using MSYS tools.

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

2 years ago[InstCombine] Fold extractvalue of phi
Nikita Popov [Thu, 1 Sep 2022 08:48:49 +0000 (10:48 +0200)]
[InstCombine] Fold extractvalue of phi

Just as we do for most other operations, we should push
extractvalue instructions through phis, if this does not increase
unfolded instruction count.

2 years ago[InstCombine] Add tests for extractvalue of phi (NFC)
Nikita Popov [Thu, 1 Sep 2022 08:46:44 +0000 (10:46 +0200)]
[InstCombine] Add tests for extractvalue of phi (NFC)

2 years ago[NFC] Emit builtin coroutine calls uniforally
Chuanqi Xu [Thu, 1 Sep 2022 08:30:43 +0000 (16:30 +0800)]
[NFC] Emit builtin coroutine calls uniforally

All the coroutine builtins were emitted in EmitCoroutineIntrinsic except
__builtin_coro_size. This patch tries to emit all the corotine builtins
uniformally.

2 years ago[MC][WebAssembly] Allow accurate errors in doBeforeLabelEmit
Sam Clegg [Wed, 31 Aug 2022 12:50:11 +0000 (05:50 -0700)]
[MC][WebAssembly] Allow accurate errors in doBeforeLabelEmit

Although we only currently have one error produced in this function I am
working on changes right now that add some more.  This change makes the
error location more accurate.

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

2 years ago[RISCV] When ISD::SETUGT && Imm == -1, has processed before lowering
liqinweng [Thu, 1 Sep 2022 07:38:09 +0000 (15:38 +0800)]
[RISCV] When ISD::SETUGT && Imm == -1, has processed before lowering

When ISD::SETUGT && Imm == -1, has processed before lowering. Use assert replace it

Reviewed By: craig.topper

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

2 years ago[RISCV][NFC] Add cost model tests of llvm.fmuladd
liqinweng [Thu, 1 Sep 2022 07:33:02 +0000 (15:33 +0800)]
[RISCV][NFC] Add cost model tests of llvm.fmuladd

Reviewed By: benshi001

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

2 years ago[clang][analyzer] Errno modeling code refactor (NFC).
Balázs Kéri [Thu, 1 Sep 2022 06:31:17 +0000 (08:31 +0200)]
[clang][analyzer] Errno modeling code refactor (NFC).

Some of the code used in StdLibraryFunctionsChecker is applicable to
other checkers, this is put into common functions. Errno related
parts of the checker are simplified and renamed. Documentations in
errno_modeling functions are updated.

This change makes it available to have more checkers that perform
modeling of some standard functions. These can set the errno state
with common functions and the bug report messages (note tags) can
look similar.

Reviewed By: steakhal, martong

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

2 years ago[mlir][interfaces] Drop `dest`/`tileDestOperands` from TilingInterface
Matthias Springer [Wed, 31 Aug 2022 13:57:40 +0000 (15:57 +0200)]
[mlir][interfaces] Drop `dest`/`tileDestOperands` from TilingInterface

`getTiledImplementation`/`generateResultTileValue` only computes the tiled operation, but does not insert the result into any tensor.

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

2 years agobazel fixes for c55b41d5199d2394dd6cdb8f52180d8b81d809d4
Tres Popp [Thu, 1 Sep 2022 06:19:50 +0000 (08:19 +0200)]
bazel fixes for c55b41d5199d2394dd6cdb8f52180d8b81d809d4

2 years ago[clang] trim trailing space in format tests. NFC
YingChi Long [Thu, 1 Sep 2022 03:25:41 +0000 (11:25 +0800)]
[clang] trim trailing space in format tests. NFC

Found in https://reviews.llvm.org/D132568

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

2 years ago[test][msan] Basic debug info test
Vitaly Buka [Thu, 1 Sep 2022 04:46:17 +0000 (21:46 -0700)]
[test][msan] Basic debug info test

2 years ago[ELF] --gdb-index: error if constant pool size exceeds UINT32_MAX
Fangrui Song [Thu, 1 Sep 2022 04:10:01 +0000 (21:10 -0700)]
[ELF] --gdb-index: error if constant pool size exceeds UINT32_MAX

If so, the last symbol's name_offset likely exceeds 0xffffffff and is not
supported by the format
(https://sourceware.org/gdb/onlinedocs/gdb/Index-Section-Format.html#Index-Section-Format).
I have seen an internal oversized executable with such a corrupted .gdb_index

2 years ago[ELF] Correctly compute .gdb_index size when symbol's name offset overflows
Fangrui Song [Thu, 1 Sep 2022 04:04:26 +0000 (21:04 -0700)]
[ELF] Correctly compute .gdb_index size when symbol's name offset overflows

if `nameOff` overflows, `size` may be underestimated.
In writeTo, `memcpy(buf + sym.nameOff, sym.name.data(), sym.name.size());` may
cause an out-of-bounds write, leading to a SIGSEGV.

2 years ago[LoongArch] Support ISD::BR_CC and branch according to condition flag register
gonglingqin [Thu, 1 Sep 2022 02:42:19 +0000 (10:42 +0800)]
[LoongArch] Support ISD::BR_CC and branch according to condition flag register

Use bceqz/bcnez instead of movcf2gr + bnez/beqz for branch jumps.

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

2 years ago[NFC][LICM] Stop passing around unused BFI
Arthur Eubanks [Thu, 1 Sep 2022 02:14:58 +0000 (19:14 -0700)]
[NFC][LICM] Stop passing around unused BFI

Uses of this were removed in 1a25d0bfbb6b587caa03bacd121b67086a774598.

2 years ago[clang][Sema] check default argument promotions for printf
YingChi Long [Fri, 26 Aug 2022 11:26:32 +0000 (19:26 +0800)]
[clang][Sema] check default argument promotions for printf

The main focus of this patch is to make ArgType::matchesType check for
possible default parameter promotions when the argType is not a pointer.
If so, no warning will be given for `int`, `unsigned int` types as
corresponding arguments to %hhd and %hd. However, the usage of %hhd
corresponding to short is relatively rare, and it is more likely to be a
misuse. This patch keeps the original behavior of clang like this as
much as possible, while making it more convenient to consider the
default arguments promotion.

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

Reviewed By: aaron.ballman, nickdesaulniers, #clang-language-wg

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

2 years ago[NFC] Fix typo
Mark Zhuang [Thu, 1 Sep 2022 02:07:57 +0000 (19:07 -0700)]
[NFC] Fix typo

Reviewed By: eopXD

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

2 years ago[runtimes] Shrink the set of runtimes included in the bootstrapping build by default
Louis Dionne [Tue, 23 Aug 2022 15:14:15 +0000 (11:14 -0400)]
[runtimes] Shrink the set of runtimes included in the bootstrapping build by default

This patch is in preparation for removing libcxx, libcxxabi and libunwind
from LLVM_ENABLE_PROJECTS. When we make that switch, folks who were
previously using LLVM_ENABLE_PROJECTS=all in order to build those
runtimes will be able to add LLVM_ENABLE_RUNTIMES=all to start building
those projects using the bootstrapping build.

This is technically a breaking change for folks who had been using
LLVM_ENABLE_RUNTIMES=all, however I suspect the set of people currently
doing that is extremely small, so this is likely acceptable (more than
breaking folks who are using LLVM_ENABLE_PROJECTS=all).

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

2 years ago[X86][bugfix] redefine __SSC_MARK to escape cpp string literal concatenation problem
Xiang1 Zhang [Thu, 25 Aug 2022 07:06:41 +0000 (15:06 +0800)]
[X86][bugfix] redefine __SSC_MARK to escape cpp string literal concatenation problem

Reviewed By: pengfei, RKSimon

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

2 years ago[Driver] Remove unimplemented Joined -a / --profile-blocks
Fangrui Song [Thu, 1 Sep 2022 01:13:16 +0000 (18:13 -0700)]
[Driver] Remove unimplemented Joined -a / --profile-blocks

GCC removed the option on 2010-08-03.
We support a few -a*. Having the Joined -a may make typos unnoticed.

2 years ago[Driver][test] Fix incorrect -arch= -amx-int8
Fangrui Song [Thu, 1 Sep 2022 01:08:19 +0000 (18:08 -0700)]
[Driver][test] Fix incorrect -arch= -amx-int8

This is not a driver option. It happens to work because of an ignored Joined -a.

2 years agoFix a bug in lldb-dotest that was uncovered by setting no value for dotest_args_str.
Jim Ingham [Thu, 1 Sep 2022 01:00:18 +0000 (18:00 -0700)]
Fix a bug in lldb-dotest that was uncovered by setting no value for dotest_args_str.
We were splitting the string, and adding that array to cmd.  But split generated
[''] which shows up later on as an empty "test directory search path".  That got
extended to the CWD + "" which generally doesn't have any tests, so

lldb-dotest -p SomeRealTest.py

would fail with a no matching tests error.

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

2 years ago[Driver] Remove Joined -Z and err_drv_use_of_Z_option
Fangrui Song [Thu, 1 Sep 2022 00:58:04 +0000 (17:58 -0700)]
[Driver] Remove Joined -Z and err_drv_use_of_Z_option

This takes a detour to report an error, but we can just remove Joined -Z
which is rejected by GCC.

2 years ago[test][msan] Re-format RUN lines
Vitaly Buka [Thu, 1 Sep 2022 00:54:59 +0000 (17:54 -0700)]
[test][msan] Re-format RUN lines

2 years agoApply clang-tidy fixes for readability-identifier-naming in TosaToLinalg.cpp (NFC)
Mehdi Amini [Mon, 29 Aug 2022 10:27:59 +0000 (10:27 +0000)]
Apply clang-tidy fixes for readability-identifier-naming in TosaToLinalg.cpp (NFC)

2 years agoApply clang-tidy fixes for readability-simplify-boolean-expr in SPIRVToLLVM.cpp ...
Mehdi Amini [Mon, 29 Aug 2022 10:25:52 +0000 (10:25 +0000)]
Apply clang-tidy fixes for readability-simplify-boolean-expr in SPIRVToLLVM.cpp (NFC)

2 years ago[Driver] Remove Joined -X
Fangrui Song [Thu, 1 Sep 2022 00:30:51 +0000 (17:30 -0700)]
[Driver] Remove Joined -X

The untested option triggers an IgnoredGCCCompat warning while GCC reports an error.
We support a few -X{assembler,linker,...}. Having the Joined -X may make typos unnoticed.

2 years ago[test][msan] Re-format RUN lines
Vitaly Buka [Wed, 31 Aug 2022 23:59:11 +0000 (16:59 -0700)]
[test][msan] Re-format RUN lines

2 years ago[lldb] Correctly add runtime test dependencies
Jonas Devlieghere [Wed, 31 Aug 2022 23:33:54 +0000 (16:33 -0700)]
[lldb] Correctly add runtime test dependencies

When a runtime is enabled through LLVM_ENABLE_RUNTIMES, it is loaded
after other projects (i.e. after LLDB). This means that the
corresponding targets don't exist when LLDB is configured. To support
runtimes being enable this way, we need to check if they're listed in
LLVM_ENABLE_RUNTIMES. For runtimes being enabled as projects (i.e.
through LLVM_ENABLE_RUNTIMES) we need to check for the target.

This patch unifies things and correctly adds compiler-rt and libcxx as
test dependencies in both scenarios.

2 years ago[mlir][tosa] Bitwidth mismatch should be long-long not long
Rob Suderman [Wed, 31 Aug 2022 23:02:29 +0000 (16:02 -0700)]
[mlir][tosa] Bitwidth mismatch should be long-long not long

Reviewed By: scotttodd

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

2 years ago[mlir] Ensure index attrs are always 64-bit APInts
Jeff Niu [Wed, 31 Aug 2022 22:05:41 +0000 (15:05 -0700)]
[mlir] Ensure index attrs are always 64-bit APInts

This patch ensures that index integer attributes can only be
constructed with APInts whose widths are equal to the index
internal storage bitwidth (64).

Reviewed By: rriddle

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

2 years ago[MachineCSE] Use TargetInstrInfo::isAsCheapAsAMove in isPRECandidate.
Craig Topper [Wed, 31 Aug 2022 22:05:35 +0000 (15:05 -0700)]
[MachineCSE] Use TargetInstrInfo::isAsCheapAsAMove in isPRECandidate.

Some targets like RISC-V require operands to be inspected to
determine if an instruction is similar to a move.

Spotted while investigating code differences between using an ADDI
vs an ADDIW. RISC-V has the isAsCheapAsAMove flag for ADDI, but
the TII hook checks the immediate is 0 or the register is X0. ADDIW
is never generated with X0 or with an immediate of 0 so it doesn't
have the isAsCheapAsAMove flag.

I don't know enough about the PRE code to write a test for this yet.

Reviewed By: reames

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

2 years ago[nfc][msan] Prepare the code for check sorting
Vitaly Buka [Wed, 31 Aug 2022 22:28:28 +0000 (15:28 -0700)]
[nfc][msan] Prepare the code for check sorting

2 years ago[lld][WebAssemby] Allow import module names to be empty strings.
Dan Gohman [Wed, 31 Aug 2022 18:41:25 +0000 (11:41 -0700)]
[lld][WebAssemby] Allow import module names to be empty strings.

The component-model [canonical ABI] is currently using import names with
empty strings. Remove the special cases for empty strings from
WasmObjectFile.cpp so that they can pass through as-is.

[canonical ABI]: https://github.com/WebAssembly/component-model/blob/main/design/mvp/CanonicalABI.md

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

2 years ago[mlir][amdgpu] Fix signed/unsigned comparison for abid/cbsz comparison
Rob Suderman [Wed, 31 Aug 2022 22:29:27 +0000 (15:29 -0700)]
[mlir][amdgpu] Fix signed/unsigned comparison for abid/cbsz comparison

Unsigned/signed comparison failure due to implicit signed value.

Reviewed By: stella.stamenova

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

2 years ago[flang] Generate DOT_PRODUCT runtime call based on the result type.
Slava Zakharin [Wed, 31 Aug 2022 16:55:24 +0000 (09:55 -0700)]
[flang] Generate DOT_PRODUCT runtime call based on the result type.

We used to select the runtime function based on the first argument's
type, which was not correct behavior. The selection is done using
the result type now.

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

2 years ago[flang][runtime] Enable real/complex kind 10 and 16 variants of dot_product.
Slava Zakharin [Wed, 31 Aug 2022 20:42:39 +0000 (13:42 -0700)]
[flang][runtime] Enable real/complex kind 10 and 16 variants of dot_product.

HasCppTypeFor<> used to evaluate to false always, so kind 10 and 16
variants of dot_product were not instantiated even though the host
supported 80- and 128-bit real and complex data types.
In addition, HAS_FLOAT128 was not enabling complex kind=16 variant
of dot_product. This is fixed now.

Note that the change for HasCppTypeFor<> may also affect other
functions such as matmul, i.e. kind 10 and 16 variants of them
may become available now (depending on the build host).

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

2 years ago[mlir][sparse] Introduce new sparse_tensor.storage_get/set to access memory that...
Peiming Liu [Wed, 31 Aug 2022 20:44:41 +0000 (20:44 +0000)]
[mlir][sparse] Introduce new sparse_tensor.storage_get/set to access memory that stores the handle of a sparse tensor

Introduce new sparse_tensor.storage_get/set to access memory that stores the handle of a sparse tensor. The sparse tensor storage are represented as a tuple, these operation will later be eliminated and the tuple will be flattened after sparse tensor codegen

Reviewed By: aartbik

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

2 years ago[mlir][sparse] sparse storage scheme type conversion
Aart Bik [Wed, 31 Aug 2022 20:46:24 +0000 (13:46 -0700)]
[mlir][sparse] sparse storage scheme type conversion

This builds a compound type for the buffers required for the sparse storage scheme defined by the MLIR sparse tensor types. The use of a tuple allows for a simple 1:1 type conversion. A subsequent pass can expand this tuple into its component with an isolated 1:N type conversion.

Reviewed By: Peiming

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

2 years ago[RISCV] Slightly simplify coode in combineVWADD_W_VL_VWSUB_W_VL and combineMUL_VLToVW...
Craig Topper [Wed, 31 Aug 2022 21:10:02 +0000 (14:10 -0700)]
[RISCV] Slightly simplify coode in combineVWADD_W_VL_VWSUB_W_VL and combineMUL_VLToVWMUL_VL. NFC

Use computeMaxSignificantBits instead of ComputeNumSignBits. Create
APInt as part of call to MaskedValueIsZero instead of creating
a named temporary.

2 years ago[mlir][tosa] Fix left shift that was implicitly converted to 64-bit
Rob Suderman [Wed, 31 Aug 2022 21:55:34 +0000 (14:55 -0700)]
[mlir][tosa] Fix left shift that was implicitly converted to 64-bit

Missing long specifier so that a shift would occur in 64-bits rather
than implicitly in 32-bits.

Reviewed By: NatashaKnk

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

2 years ago[WebAssembly][MC] Update tests after recent removal of .size directives for functions
Sam Clegg [Wed, 31 Aug 2022 21:53:02 +0000 (14:53 -0700)]
[WebAssembly][MC] Update tests after recent removal of .size directives for functions

These were missing from https://reviews.llvm.org/D132929

2 years ago[MLIR] Keep but deprecate old autogenerated pass base classes
Michele Scuttari [Wed, 31 Aug 2022 21:38:31 +0000 (23:38 +0200)]
[MLIR] Keep but deprecate old autogenerated pass base classes

Restore the generation of the old pass base classes for better transitioning of external projects relying on them. They were eliminated with 67d0d7ac0acb0665d6a09f61278fbcf51f0114c2.

Reviewed By: rsmith

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

2 years ago[lld][WebAssembly] Rename SymbolTable::getSymbols to match ELF backend. NFC
Sam Clegg [Fri, 5 Aug 2022 19:54:29 +0000 (12:54 -0700)]
[lld][WebAssembly] Rename SymbolTable::getSymbols to match ELF backend. NFC

The ELF backend originally used `getSymbols()` but went though a
sequence of changes that resulted in this method being called
`symbols()`.

d8f8abbd4a2823f223bd7bc56445541fb221b512 replaced `getSymbols()` with
`forEachSymbol`.

a2fc96441788fba1e4709d63677f34ed8e321dae replaced `forEachSymbol` with
`llvm::iterator_range`.

e9262edf0d11a907763098d8e101219ccd9c43e9 replaced `llvm::iterator_range`
with `symbols()`.

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

2 years ago[WebAssembly][MC] Avoid the need for .size directives for functions
Sam Clegg [Tue, 30 Aug 2022 11:09:44 +0000 (04:09 -0700)]
[WebAssembly][MC] Avoid the need for .size directives for functions

Warn if `.size` is specified for a function symbol.  The size of a
function symbol is determined solely by its content.

I noticed this simplification was possible while debugging #57427, but
this change doesn't fix that specific issue.

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

2 years ago[lldb] Make the rumtimes target a test dependency
Jonas Devlieghere [Wed, 31 Aug 2022 21:23:57 +0000 (14:23 -0700)]
[lldb] Make the rumtimes target a test dependency

Make the rumtimes target a test dependency. This is needed or the parts
of the test suite that rely on the libcxx and libcxxabi.

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

2 years ago[mlir][AMDGPU] Define amdgpu.mfma operator
Krzysztof Drewniak [Tue, 30 Aug 2022 17:12:10 +0000 (17:12 +0000)]
[mlir][AMDGPU] Define amdgpu.mfma operator

The amdgpu.mfma operator is a wrapper around the Matrix Fused Multiply
Add (MFMA) instructions on some AMD GPUs (the CDNA-based MI-* cards).

This interface allows for selecting the operation to be performed by
specifying the dimensions of the multiplication to be performed and
any additional attributes (such as whether to use reduced-precision
floating-point math) that are needed to select the relevant mfma
instruction and set its parameters.

Reviewed By: ThomasRaoux, nirvedhmeshram

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

2 years agoreland: [Local] Allow creating callbr with duplicate successors
Nikita Popov [Wed, 31 Aug 2022 20:08:20 +0000 (13:08 -0700)]
reland: [Local] Allow creating callbr with duplicate successors

Since D129288, callbr is allowed to have duplicate successors. This patch removes a limitation which prevents optimizations from actually producing such callbrs.

This is probably the riskiest of all the recent callbr changes, because code with incorrect assumptions might be lurking somewhere. I fixed the one case I encountered ahead of time in https://github.com/llvm/llvm-project/commit/8201e3ef5c84561260218bc041209611aac690e3.

Reviewed By: nickdesaulniers

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

Originally landed as
commit 08860f525a23 ("[Local] Allow creating callbr with duplicate successors")

Reverted in
commit 1cf6b93df168 ("Revert "[Local] Allow creating callbr with duplicate successors"")

2 years ago[NFC][libc++] char_traits code cleanups.
Mark de Wever [Thu, 4 Aug 2022 17:44:21 +0000 (19:44 +0200)]
[NFC][libc++] char_traits code cleanups.

These cleanups were identified while working on D130295.

Reviewed By: #libc, ldionne, philnik

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

2 years ago[Frontend] Restore Preprocessor::getPredefines()
Roy Jacobson [Wed, 31 Aug 2022 19:27:09 +0000 (22:27 +0300)]
[Frontend] Restore Preprocessor::getPredefines()

https://reviews.llvm.org/rG6bbf51f3ed59ae37f0fec729f25af002111c9e74 from May removed Preprocessor::getPredefines() from Clang's API, presumably as a cleanup because this method is unused in the LLVM codebase.

However, it was/is used by a small number of third-party tools and is pretty harmless, so this patch adds it back and documents why it's here.

The issue was raised in https://github.com/llvm/llvm-project/issues/57483, it would be nice to be able to land it into Clang 15 as it breaks those third-party tools and we can't easily add it back in bug fix releases.

Reviewed By: brad.king, thieta

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

2 years ago[msan] Use Debug Info to point to affected fields
Vitaly Buka [Tue, 30 Aug 2022 03:43:08 +0000 (20:43 -0700)]
[msan] Use Debug Info to point to affected fields

Reviewed By: kstoimenov

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

2 years ago[llvm][TailDuplicator] don't taildup isInlineAsmBrIndirectTargets
Nick Desaulniers [Wed, 31 Aug 2022 19:52:52 +0000 (12:52 -0700)]
[llvm][TailDuplicator] don't taildup isInlineAsmBrIndirectTargets

This fixes a crash observed after
https://reviews.llvm.org/D129997.

Similar to D88823.

Reviewed By: efriedma

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

2 years ago[SLP][NFC]Add a check for SelectInst to match description, NFC.
Alexey Bataev [Wed, 31 Aug 2022 20:03:33 +0000 (13:03 -0700)]
[SLP][NFC]Add a check for SelectInst to match description, NFC.

2 years ago[llvm][test] precommit test for D130127
Nick Desaulniers [Wed, 31 Aug 2022 19:40:46 +0000 (12:40 -0700)]
[llvm][test] precommit test for D130127

Add a FIXME that will be immediately removed in D130127.

Reviewed By: nikic

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

2 years ago[SLP][NFC]Fix comment and make function following naming standard, NFC.
Alexey Bataev [Wed, 31 Aug 2022 19:24:42 +0000 (12:24 -0700)]
[SLP][NFC]Fix comment and make function following naming standard, NFC.

2 years ago[mlir] Avoid nullptr as memcpy arguments after D132758
Vitaly Buka [Wed, 31 Aug 2022 19:29:04 +0000 (12:29 -0700)]
[mlir] Avoid nullptr as memcpy arguments after D132758

2 years ago[cmake] Disable the -Wmisleading-indentation warning with GCC
Martin Storsjö [Tue, 30 Aug 2022 07:42:31 +0000 (10:42 +0300)]
[cmake] Disable the -Wmisleading-indentation warning with GCC

We do keep using the flag with Clang, which should keep catching
such issues in buildbots.

With GCC, the warning can cause lots of loud notes about the
warning logic getting disabled in large source files.

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

2 years ago[SLP] Simplify getOperandInfo implementation and be consistent
Philip Reames [Wed, 31 Aug 2022 19:20:12 +0000 (12:20 -0700)]
[SLP] Simplify getOperandInfo implementation and be consistent

This is NOT nfc.  Specifically, the following behavior changes:
* Pointers are now allowed.  Both uniform, and constants.
* FP uniform non-constants can now be recognized.
* FP undefs are no longer considered constant.  This matches int behavior which we had tests for.  FP behavior was untested.  Its not clear to me int behavior is reasonable, but it's what tests seem to expect, so go with minimum impact for now.

2 years agoRe-add the REQUIRES line to fix a failed build on builder llvm-clang-win-x-aarch64.
Ying Yi [Wed, 31 Aug 2022 19:16:22 +0000 (20:16 +0100)]
Re-add the REQUIRES line to fix a failed build on builder llvm-clang-win-x-aarch64.

2 years ago[CodeGen] fix misnamed "not" operation; NFC
Sanjay Patel [Wed, 31 Aug 2022 18:20:54 +0000 (14:20 -0400)]
[CodeGen] fix misnamed "not" operation; NFC

Seeing the wrong instruction for this name in IR is confusing.
Most of the tests are not even checking a subsequent use of
the value, so I just deleted the over-specified CHECKs.

2 years ago[flang] Write semantics test for atomic_fetch_or
Katherine Rasmussen [Wed, 17 Aug 2022 16:53:40 +0000 (09:53 -0700)]
[flang] Write semantics test for atomic_fetch_or

Write a semantics test for the atomic intrinsic subroutine,
atomic_fetch_or.

Reviewed By: rouson

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

2 years ago[gn build] Port 74c8d9d5fc83
LLVM GN Syncbot [Wed, 31 Aug 2022 18:52:31 +0000 (18:52 +0000)]
[gn build] Port 74c8d9d5fc83

2 years agoRevert "[clang][dataflow] Generalise match switch utility to other AST types and...
Wei Yi Tee [Wed, 31 Aug 2022 18:49:56 +0000 (18:49 +0000)]
Revert "[clang][dataflow] Generalise match switch utility to other AST types and add a `CFGMatchSwitch` which currently handles `CFGStmt` and `CFGInitializer`."

This reverts commit c9033eeb2e59c0157b84adfc6b0fe345f6f03113.
https://lab.llvm.org/buildbot#builders/57/builds/21618
Build failure due to comparison between unsigned int and const int
originating from EXPECT_EQ.

2 years ago[test][InstCombine] Precommit some undef/noundef tests
Arthur Eubanks [Wed, 31 Aug 2022 18:19:07 +0000 (11:19 -0700)]
[test][InstCombine] Precommit some undef/noundef tests

2 years ago[RISCV][CodeGen] add assertion to RISCVTargetStreamer getTargetStreamer()
Michael Maitland [Wed, 31 Aug 2022 18:03:55 +0000 (11:03 -0700)]
[RISCV][CodeGen] add assertion to RISCVTargetStreamer getTargetStreamer()

X86 and ARM AsmParsers have this same assertion. This assertion provides better reporting when the RISCVTargetStreamer is null and helps to prevent null pointer access.

Reviewed By: bkramer

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

2 years ago[VP] Correct the LEGALPOS for VP_STORE.
Craig Topper [Wed, 31 Aug 2022 18:03:39 +0000 (11:03 -0700)]
[VP] Correct the LEGALPOS for VP_STORE.

VP_STORE has a Chain for operand 0, so the LEGALPOS should be 1.

VP_STORE is always considered Legal for MVT::Other. So I suspect this
was causing vp_store to be ignored by LegalizeVectorOps and instead
handled in LegalizeDAG.

VP_LOAD is Custom expanded in LegalizeVectorOps for RISC-V.

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

2 years ago[gn build] port d45c04da7cc5f (TestingADTTests)
Nico Weber [Wed, 31 Aug 2022 18:15:17 +0000 (14:15 -0400)]
[gn build] port d45c04da7cc5f (TestingADTTests)

2 years ago[libc++][format] Fixes broken CI.
Mark de Wever [Wed, 31 Aug 2022 18:14:10 +0000 (20:14 +0200)]
[libc++][format] Fixes broken CI.

Some of the merged patches didn't have conflicts but were not
compatible. This should fix it.

2 years ago[libc] Add arm-32 syscall implementation.
Siva Chandra Reddy [Fri, 26 Aug 2022 21:17:34 +0000 (21:17 +0000)]
[libc] Add arm-32 syscall implementation.

The implementation currently supports only non-thumb mode. As a test for
the implementation, mmap and munmap functions have been enabled.

Reviewed By: michaelrj

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

2 years ago[libc] Fix typo in lseek syscall number macro.
Dong-hee Na [Wed, 31 Aug 2022 17:29:55 +0000 (17:29 +0000)]
[libc] Fix typo in lseek syscall number macro.

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

2 years ago[libc++] Reduces the number of transitive includes.
Mark de Wever [Sat, 20 Aug 2022 08:34:26 +0000 (10:34 +0200)]
[libc++] Reduces the number of transitive includes.

This defines a new policy for removal of transitive includes.
The goal of the policy it to make it relatively easy to remove
headers when needed, but avoid breaking developers using and
vendors shipping libc++.

The method used is to guard transitive includes based on the
C++ language version. For the upcoming C++23 we can remove
headers when we want, but for other language versions we try
to keep it to a minimum.

In this code the transitive include of `<chrono>` is removed
since D128577 introduces a header cycle between `<format>`
and `<chrono>`. This cycle is indirectly required by the
Standard. Our cycle dependency tool basically is a grep based
tool, so it needs some hints to ignore cycles. With the input
of our transitive include tests we can create a better tool.
However that's out of the scope of this patch.

Note the flag `_LIBCPP_REMOVE_TRANSITIVE_INCLUDES` remains
unchanged. So users can still opt-out of transitives includes
entirely.

Reviewed By: #libc, ldionne, philnik

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

2 years ago[libc][cmake] split fputil into individual targets
Michael Jones [Tue, 30 Aug 2022 22:06:52 +0000 (15:06 -0700)]
[libc][cmake] split fputil into individual targets

The libc.src.__support.FPUtil.fputil target encompassed many unrelated
files, and provided a lot of hidden dependencies. This patch splits out
all of these files into component parts and cleans up the cmake files
that used them. It does not touch any source files for simplicity, but
there may be changes made to them in future patches.

Reviewed By: lntue

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

2 years ago[llvm][ADT] Overload output stream operator `<<` for `StringMapEntry` and `StringMap`.
Wei Yi Tee [Wed, 31 Aug 2022 17:21:33 +0000 (17:21 +0000)]
[llvm][ADT] Overload output stream operator `<<` for `StringMapEntry` and `StringMap`.

Printing support enables the production of more useful error messages in unit testing e.g. when using matchers such as `UnorderedElementsAre()` to inspect the contents of a `StringMap`.

Reviewed By: gribozavr2, sgatev, ymandel

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

2 years ago[Driver][test] Test -dumpmachine
Fangrui Song [Wed, 31 Aug 2022 17:31:45 +0000 (10:31 -0700)]
[Driver][test] Test -dumpmachine

2 years ago[libc++][format] Fixes floating-point formatting.
Mark de Wever [Sat, 6 Aug 2022 19:30:22 +0000 (21:30 +0200)]
[libc++][format] Fixes floating-point formatting.

Formatting the alternate form for the general categories should keep the
trailing zeros. This was reported by @fsb4000 in D131336.

The default format uses general formatting but this should not keep the
trailing zeros so the default format is not passed to the formatter.

While testing I found an off by one error; finding the exponent character
`e` in 1e+03 will start at after the `1` so a size of `4` can contain an
exponent.

Reviewed By: fsb4000, ldionne, #libc

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

2 years ago[NFC] clang-format Any.h
Arthur Eubanks [Wed, 31 Aug 2022 16:59:21 +0000 (09:59 -0700)]
[NFC] clang-format Any.h

To trigger some bots.

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

2 years ago[NFC][libc++][format] Renames __char_type concept.
Mark de Wever [Thu, 4 Aug 2022 15:54:20 +0000 (17:54 +0200)]
[NFC][libc++][format] Renames __char_type concept.

Move the concept to the concepts header and uses a name in the style of
P2286.

Reviewed By: #libc, ldionne

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

2 years ago[libc++][format] Allows width arg-id with value 0.
Mark de Wever [Wed, 27 Jul 2022 17:17:08 +0000 (19:17 +0200)]
[libc++][format] Allows width arg-id with value 0.

Implements:
- LWG3721 Allow an arg-id with a value of zero for width in std-format-spec

Reviewed By: ldionne, #libc

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

2 years ago[libc++][CI] increases constexpr evaluation limit.
Mark de Wever [Sat, 13 Aug 2022 13:05:10 +0000 (15:05 +0200)]
[libc++][CI] increases constexpr evaluation limit.

This was discovered as an issue in D131317.

Depends on D131835

Reviewed By: #libc, var-const, ldionne, philnik

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

2 years ago[libc++] Tests transitive includes for all C++03.
Mark de Wever [Wed, 24 Aug 2022 18:39:41 +0000 (20:39 +0200)]
[libc++] Tests transitive includes for all C++03.

A followup of D132534 with C++03 enabled after fixing the experimental
PMR issues.

Depends on D132582

Reviewed By: ldionne, #libc

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

2 years ago[libc++][experimental] Disables PMR in C++03.
Mark de Wever [Wed, 24 Aug 2022 18:22:22 +0000 (20:22 +0200)]
[libc++][experimental] Disables PMR in C++03.

While working on D132534 it appeared the experimental PMR code doesn't
have version guards and fails to compile on C++03. This adds the guards
for that version. It seems the tests already were only disabled for
C++03.

Reviewed By: ldionne, #libc

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

2 years ago[libc++] Inlines format_error for clang-cl DLL.
Mark de Wever [Thu, 25 Aug 2022 15:37:02 +0000 (17:37 +0200)]
[libc++] Inlines format_error for clang-cl DLL.

This version is build without support for the experimental library but
the code still wants to link this function. Inlining the function solves
the issue.

Reviewed By: ldionne, #libc

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

2 years ago[gn build] Port c9033eeb2e59
LLVM GN Syncbot [Wed, 31 Aug 2022 17:02:52 +0000 (17:02 +0000)]
[gn build] Port c9033eeb2e59

2 years ago[clang][dataflow] Generalise match switch utility to other AST types and add a `CFGMa...
Wei Yi Tee [Wed, 31 Aug 2022 16:27:37 +0000 (16:27 +0000)]
[clang][dataflow] Generalise match switch utility to other AST types and add a `CFGMatchSwitch` which currently handles `CFGStmt` and `CFGInitializer`.

`MatchSwitch` currently takes in matchers and functions for the `Stmt` class.

This patch generalises the match switch utility (renamed to `ASTMatchSwitch`) to work for different AST node types by introducing a template argument which is the base type for the AST nodes that the match switch will handle.

A `CFGMatchSwitch` is introduced as a wrapper around multiple `ASTMatchSwitch`s for different base types. It works by unwrapping `CFGElement`s into their contained AST nodes and passing the nodes to the relevant `ASTMatchSwitch`. The `CFGMatchSwitch` currently only handles `CFGStmt` and `CFGInitializer`.

Reviewed By: gribozavr2, sgatev

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

2 years ago[AArch64][CostModel][NFC] Specify target datalayout explicitly for cost analysis...
Mingming Liu [Mon, 29 Aug 2022 21:30:52 +0000 (14:30 -0700)]
[AArch64][CostModel][NFC] Specify target datalayout explicitly for cost analysis test.

- Use linux little endian data layout string.

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

2 years ago[Symbolizer] Handle {{{bt}}} symbolizer markup element.
Daniel Thornburgh [Fri, 5 Aug 2022 21:58:44 +0000 (14:58 -0700)]
[Symbolizer] Handle {{{bt}}} symbolizer markup element.

This adds support for backtrace generation to the llvm-symbolizer markup
filter, which is likely the largest use case.

Reviewed By: peter.smith

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

2 years agoReapply "[clang][deps] Split translation units into individual -cc1 or other commands"
Ben Langmuir [Thu, 25 Aug 2022 16:22:31 +0000 (09:22 -0700)]
Reapply "[clang][deps] Split translation units into individual -cc1 or other commands"

Attempt to fix the test failures observed in CI:
* Add Option dependency, which caused BUILD_SHARED_LIBS builds to fail
* Adapt tests that accidentally depended on the host platform: platforms
  that don't use an integrated assembler (e.g. AIX) get a different set
  of commands from the driver. Most dependency scanner tests can use
  -fsyntax-only or -E instead of -c to avoid this, and in the rare case
  we want to check -c specifically, set an explicit target so the
  behaviour is independent of the host.

Original commit message follows.

---

Instead of trying to "fix" the original driver invocation by appending
arguments to it, split it into multiple commands, and for each -cc1
command use a CompilerInvocation to give precise control over the
invocation.

This change should make it easier to (in the future) canonicalize the
command-line (e.g. to improve hits in something like ccache), apply
optimizations, or start supporting multi-arch builds, which would
require different modules for each arch.

In the long run it may make sense to treat the TU commands as a
dependency graph, each with their own dependencies on modules or earlier
TU commands, but for now they are simply a list that is executed in
order, and the dependencies are simply duplicated. Since we currently
only support single-arch builds, there is no parallelism available in
the execution.

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

2 years ago[libclang] Fix conversion from `StringRef` to `CXString`
Egor Zhdan [Tue, 30 Aug 2022 17:43:17 +0000 (18:43 +0100)]
[libclang] Fix conversion from `StringRef` to `CXString`

`CXString createRef(StringRef String)` used to return an invalid string when invoked with some empty strings:

If a `StringRef` holds a non-nullptr pointer, for instance, pointing into contents of a larger string, and has a zero length, `createRef` previously returned the entire larger string, ignoring the fact that the actual string passed to it as a param is empty.

This was discovered when invoking `c-index-test` to dump the contents of documentation comments, in case the comment contains an empty HTML attribute, such as `src=""`.

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

2 years ago[CostModel][X86] Add and/or/xor general cost kinds support
Simon Pilgrim [Wed, 31 Aug 2022 16:26:05 +0000 (17:26 +0100)]
[CostModel][X86] Add and/or/xor general cost kinds support

Account for double-pumping on early AVX1/AVX2 targets