platform/upstream/llvm.git
13 months ago[NFC][XCOFF] Remove curly braces from single line if statement
Jake Egan [Wed, 19 Jul 2023 03:33:48 +0000 (23:33 -0400)]
[NFC][XCOFF] Remove curly braces from single line if statement

Missed this detail from D155199.

13 months ago[LoongArch] Align functions and loops better according to uarch
WANG Xuerui [Wed, 19 Jul 2023 01:20:53 +0000 (09:20 +0800)]
[LoongArch] Align functions and loops better according to uarch

The LA464 micro-architecture is very sensitive to alignment of hot code,
with performance variation of up to ~12% in the go1 benchmark suite of
the Go language (as observed by me during my work on the Go loong64
port).
[[ https://go.dev/cl/479816 | Manual alignment of certain loops ]] and [[ https://go.dev/cl/479817 | automatic alignment of loop heads ]]
helps a lot there, by reducing much of the random variation and
generally increasing performance, so we naturally want to do the same
here.

Practically, LA464 is the only LoongArch micro-architecture in wide use,
and we are currently supporting just that. The first "4" in "LA464"
stands for "4-issue", in particular its instruction fetch and decode
stages are 4-wide; so functions and branch targets should be preferably
aligned to at least 16 bytes for best throughput.

The Loongson team has benchmarked various combinations of function,
loop, and branch target alignments with GCC.
[[ https://gcc.gnu.org/pipermail/gcc-patches/2023-May/619980.html | The results ]]
show that "16-byte label alignment together with 32-byte function
alignment gives best results in terms of SPEC score". A "label" in GCC
means a branch target; while we don't currently align branch targets,
we do align loops, so in this patch we default to 32-byte function
alignment and 16-byte loop alignment.

Reviewed By: SixWeining

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

13 months ago[mlir] Fix -Wcast-qual in mlir/test/CAPI/ir.c after D153911 (NFC)
Jie Fu [Wed, 19 Jul 2023 03:16:55 +0000 (11:16 +0800)]
[mlir] Fix -Wcast-qual in mlir/test/CAPI/ir.c after D153911 (NFC)

/Users/jiefu/llvm-project/mlir/test/CAPI/ir.c:1120:18: error: cast from 'const void *' to 'unsigned char *' drops const qualifier [-Werror,-Wcast-qual]
      (uint8_t *)mlirDenseElementsAttrGetRawData(uint8Elements);
                 ^
/Users/jiefu/llvm-project/mlir/test/CAPI/ir.c:1121:35: error: cast from 'const void *' to 'signed char *' drops const qualifier [-Werror,-Wcast-qual]
  int8_t *int8RawData = (int8_t *)mlirDenseElementsAttrGetRawData(int8Elements);
                                  ^
/Users/jiefu/llvm-project/mlir/test/CAPI/ir.c:1123:19: error: cast from 'const void *' to 'unsigned int *' drops const qualifier [-Werror,-Wcast-qual]
      (uint32_t *)mlirDenseElementsAttrGetRawData(uint32Elements);
                  ^
/Users/jiefu/llvm-project/mlir/test/CAPI/ir.c:1125:18: error: cast from 'const void *' to 'int *' drops const qualifier [-Werror,-Wcast-qual]
      (int32_t *)mlirDenseElementsAttrGetRawData(int32Elements);
                 ^
/Users/jiefu/llvm-project/mlir/test/CAPI/ir.c:1127:19: error: cast from 'const void *' to 'unsigned long long *' drops const qualifier [-Werror,-Wcast-qual]
      (uint64_t *)mlirDenseElementsAttrGetRawData(uint64Elements);
                  ^
/Users/jiefu/llvm-project/mlir/test/CAPI/ir.c:1129:18: error: cast from 'const void *' to 'long long *' drops const qualifier [-Werror,-Wcast-qual]
      (int64_t *)mlirDenseElementsAttrGetRawData(int64Elements);
                 ^
/Users/jiefu/llvm-project/mlir/test/CAPI/ir.c:1130:34: error: cast from 'const void *' to 'float *' drops const qualifier [-Werror,-Wcast-qual]
  float *floatRawData = (float *)mlirDenseElementsAttrGetRawData(floatElements);
                                 ^
/Users/jiefu/llvm-project/mlir/test/CAPI/ir.c:1132:17: error: cast from 'const void *' to 'double *' drops const qualifier [-Werror,-Wcast-qual]
      (double *)mlirDenseElementsAttrGetRawData(doubleElements);
                ^
/Users/jiefu/llvm-project/mlir/test/CAPI/ir.c:1134:19: error: cast from 'const void *' to 'unsigned short *' drops const qualifier [-Werror,-Wcast-qual]
      (uint16_t *)mlirDenseElementsAttrGetRawData(bf16Elements);
                  ^
/Users/jiefu/llvm-project/mlir/test/CAPI/ir.c:1136:19: error: cast from 'const void *' to 'unsigned short *' drops const qualifier [-Werror,-Wcast-qual]
      (uint16_t *)mlirDenseElementsAttrGetRawData(f16Elements);
                  ^
10 errors generated.

13 months ago[tools] Ignore -Wcast-qual in c-index-test.c after D153911 (NFC)
Jie Fu [Wed, 19 Jul 2023 02:55:12 +0000 (10:55 +0800)]
[tools] Ignore -Wcast-qual in c-index-test.c after D153911 (NFC)

/Users/jiefu/llvm-project/clang/tools/c-index-test/c-index-test.c:234:18: error: cast from 'const char *' to 'char *' drops const qualifier [-Werror,-Wcast-qual]
    free((char *)unsaved_files[i].Filename);
                 ^
/Users/jiefu/llvm-project/clang/tools/c-index-test/c-index-test.c:235:18: error: cast from 'const char *' to 'char *' drops const qualifier [-Werror,-Wcast-qual]
    free((char *)unsaved_files[i].Contents);
                 ^
/Users/jiefu/llvm-project/clang/tools/c-index-test/c-index-test.c:3762:32: error: cast from 'const char *' to 'void *' drops const qualifier [-Werror,-Wcast-qual]
  return (CXIdxClientContainer)"TU";
                               ^
3 errors generated.

13 months ago[RISCV] Use the stack for MVT::f16 for fastcc when there are no other registers available
eopXD [Mon, 17 Jul 2023 19:30:00 +0000 (12:30 -0700)]
[RISCV] Use the stack for MVT::f16 for fastcc when there are no other registers available

In D155502, we added code for the compiler to check GPR-s for f16
under zhinx. This commit adds code to hit the stack when we run out of
GPR-s.

With this patch and D155502, resolves #63922

Reviewed By: craig.topper

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

13 months ago[BOLT][Utils] Pass cmp-rev to nfc-check-setup
Amir Ayupov [Wed, 19 Jul 2023 02:43:08 +0000 (19:43 -0700)]
[BOLT][Utils] Pass cmp-rev to nfc-check-setup

Pass the revision to checkout to (cmp-rev) as nfc-check-setup option.
Simpifies the comparison against arbitrary commit, not just the previous one.

Reviewed By: #bolt, rafauler

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

13 months ago[Clang][RISCV] Improve diagnostic message for full multiply intrinsics
eopXD [Mon, 17 Jul 2023 03:18:11 +0000 (20:18 -0700)]
[Clang][RISCV] Improve diagnostic message for full multiply intrinsics

The full multiply intrinsics are not included for EEW=64 in Zve64*.
They require the V extension to be enabled.

This commit improves diagnostic message from

```
<source>:4:10: error: call to undeclared function '__riscv_vsmul_vv_i64m1';
    4 |   return __riscv_vsmul_vv_i64m1(op1, op2, __RISCV_VXRM_RNU, vl);
```

to

```
test.c:5:10: error: builtin requires: v
    5 |   return __riscv_vsmul_vv_i64m1(op1, op2, __RISCV_VXRM_RNU, vl);
```

Reviewed By: craig.topper

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

13 months ago[NFC][XCOFF] Use common function to calculate file offset
Jake Egan [Wed, 19 Jul 2023 02:08:46 +0000 (22:08 -0400)]
[NFC][XCOFF] Use common function to calculate file offset

The file offset code is repeated in nearly identical form for every derivation of SectionEntry, so make it into a method in SectionEntry instead.

Reviewed By: scott.linder

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

13 months ago[Clang][RISCV] Guard RVV intrinsics types that is not available when ELEN < 64
eopXD [Mon, 17 Jul 2023 02:24:09 +0000 (19:24 -0700)]
[Clang][RISCV] Guard RVV intrinsics types that is not available when ELEN < 64

(ELEN, LMUL) pairs of (8, mf8), (16, mf4), (32, mf2), (64, m1)
requires at least `zve64x`.

Reviewed By: craig.topper

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

13 months ago[clang-format][doc] Replace single back quotes with double ones
Owen Pan [Wed, 19 Jul 2023 01:23:55 +0000 (18:23 -0700)]
[clang-format][doc] Replace single back quotes with double ones

13 months agoFix types of arm64 MSVC __readx18/__writex18 intrinsics
Akira Hatanaka [Wed, 19 Jul 2023 01:15:56 +0000 (18:15 -0700)]
Fix types of arm64 MSVC __readx18/__writex18 intrinsics

Using `L` for type `long` results in clang passing 64-bit integers to
these intrinsics on LP64 operating systems. This isn't correct as the
intrinsics accept 32-bit integers.

Use `N` instead of `L` so that 32-bit integers are passed to the
intrinsics on LP64 operating systems too. This is the same fix as the
following two commits:

33703fb9f908113f93bd9af83a79eb56f5131735
afa47c91ce5085d446ebb5ac1312dc98b6a68a6c

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

13 months ago[gn build] Port ef70fe4d264d
LLVM GN Syncbot [Wed, 19 Jul 2023 01:09:48 +0000 (01:09 +0000)]
[gn build] Port ef70fe4d264d

13 months ago[gn] port 20341c3ad6f64a
Nico Weber [Wed, 19 Jul 2023 01:09:32 +0000 (21:09 -0400)]
[gn] port 20341c3ad6f64a

13 months ago[gn] port 3f65f718332c
Nico Weber [Wed, 19 Jul 2023 01:00:16 +0000 (21:00 -0400)]
[gn] port 3f65f718332c

13 months ago[ELF] --icf: switch to xxh3_64bits
Fangrui Song [Wed, 19 Jul 2023 00:57:31 +0000 (17:57 -0700)]
[ELF] --icf: switch to xxh3_64bits

for more efficient section content hashing. Also clean up the tests a
bit and properly test the formatting of --print-icf-sections.

13 months ago[OpenMP][NFCI] Avoid storing non-constant values in ICV
Johannes Doerfert [Tue, 18 Jul 2023 23:33:31 +0000 (16:33 -0700)]
[OpenMP][NFCI] Avoid storing non-constant values in ICV

If we store a constant in an ICV it is easier for the optimizer to
propagate it. Since we often use the full block for the thread limit and
the parallel team size, we can instead replace that dynamic value with a
constant that otherwise cannot occur, here 0.

13 months ago[OpenMP][NFCI] Split assertion message from assertion expression
Johannes Doerfert [Tue, 18 Jul 2023 23:05:08 +0000 (16:05 -0700)]
[OpenMP][NFCI] Split assertion message from assertion expression

We ended up with `llvm.assume(icmp ne ptr as(4) null, as(4) @str)`
because the string in address space 4 was not known to be non-null.
There is no need to create these assumes.

13 months ago[cmake] Add -Wcast-qual to C flags if LLVM_ENABLE_WARNINGS is defined.
Alex MacLean [Tue, 18 Jul 2023 23:44:26 +0000 (23:44 +0000)]
[cmake] Add -Wcast-qual to C flags if LLVM_ENABLE_WARNINGS is defined.

Disable this warning for specific cast in llvm_regcomp().

Reviewed By: dblaikie

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

13 months agoPseudoObjectExpr: Prefer ArrayRef over iterator_range when iterating with pointers
David Blaikie [Tue, 18 Jul 2023 23:40:19 +0000 (23:40 +0000)]
PseudoObjectExpr: Prefer ArrayRef over iterator_range when iterating with pointers

Simpler to use ArrayRef directly here rather than a more
generic/customizable range helper like iterator_range

13 months ago[RISCV] Simplify VROR_IV_V_X_I multiclass. NFC
Craig Topper [Tue, 18 Jul 2023 23:39:40 +0000 (16:39 -0700)]
[RISCV] Simplify VROR_IV_V_X_I multiclass. NFC

Remove template parameters that always have their default value.

13 months ago[RISCV] Remove unused classes VPseudoTernary, VPseudoTernaryNoMaskNoPolicy, and VPseu...
Michael Maitland [Tue, 18 Jul 2023 20:08:58 +0000 (13:08 -0700)]
[RISCV] Remove unused classes VPseudoTernary, VPseudoTernaryNoMaskNoPolicy, and VPseudoConversionW_V

These classes are dead and can be removed.

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

13 months ago[libc][NFC] reuse variable in printf string conv
Michael Jones [Tue, 11 Jul 2023 22:06:08 +0000 (15:06 -0700)]
[libc][NFC] reuse variable in printf string conv

The amount of spaces to pad with is stored in the variable
padding_spaces, previously the actual write calls used the same formula
to calculate the value. This simplifies and clarifies the values by just
reusing the variable.

Reviewed By: lntue

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

13 months ago[libc] Set min precision for strtofloat fuzz
Michael Jones [Wed, 12 Jul 2023 22:21:52 +0000 (15:21 -0700)]
[libc] Set min precision for strtofloat fuzz

MPFR has a minimum precision of 2, but the strtofloat fuzz sometimes
would request a precision of 1 for the case of the minimum subnormal.
This patch tells the fuzzer to ignore any case where the precision would
go below 2.

Reviewed By: lntue

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

13 months ago[Clang] Add warnings for CWG2521
Po-yao Chang [Thu, 13 Jul 2023 15:42:51 +0000 (23:42 +0800)]
[Clang] Add warnings for CWG2521

1. Teach -Wuser-defined-literals to warn on using double underscores in
   literal suffix identifiers.
2. Add -Wdeprecated-literal-operator to warn about the use of the first
   grammar production of literal-operator-id, which defaults to off for now.

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

13 months ago[lld] A Unified LTO Bitcode Frontend
Matthew Voss [Tue, 18 Jul 2023 23:13:58 +0000 (16:13 -0700)]
[lld] A Unified LTO Bitcode Frontend

The unified LTO pipeline creates a single LTO bitcode structure that can
be used by Thin or Full LTO. This means that the LTO mode can be chosen
at link time and that all LTO bitcode produced by the pipeline is
compatible, from an optimization perspective. This makes the behavior of
LTO a bit more predictable by normalizing the set of LTO features
supported by each LTO bitcode file.

Example usage:

clang -flto -funified-lto -fuse-ld=lld foo.c

clang -flto=thin -funified-lto -fuse-ld=lld foo.c

clang -c -flto -funified-lto foo.c  # -flto={full,thin} are identical in
terms of compilation actions
clang -flto=thin -fuse-ld=lld foo.o # pass --lto=thin to ld.lld

clang -c -flto -funified-lto foo.c clang -flto -fuse-ld=lld foo.o

The RFC discussing the details and rational for this change is here:
https://discourse.llvm.org/t/rfc-a-unified-lto-bitcode-frontend/61774

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

13 months ago[clang][docs] Defensively turn off exception behavior in dump_ast_matchers.py
Rashmi Mudduluru [Tue, 18 Jul 2023 22:27:33 +0000 (15:27 -0700)]
[clang][docs] Defensively turn off exception behavior in dump_ast_matchers.py

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

13 months ago[clang][docs] Update LibASTMatchersReference.html
Rashmi Mudduluru [Fri, 14 Jul 2023 15:50:15 +0000 (08:50 -0700)]
[clang][docs] Update LibASTMatchersReference.html

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

13 months ago[clang][dataflow] Add function to `WatchedLiteralsSolver` that reports whether the...
Yitzhak Mandelbaum [Tue, 18 Jul 2023 20:28:35 +0000 (20:28 +0000)]
[clang][dataflow] Add function to `WatchedLiteralsSolver` that reports whether the iteration limit has been reached.

This change provides a centralized record of whether the solver is
"exhausted". In general, once the solver is exhausted, further uses do not
produce meaningful conclusions. Clients can use this information, for example,
to choose to discard all results based on the solver, instead of trying to
distinguish those reached before the limit was reached. Providing it at in the
solver avoids the need to propagate it from each callsite to the client of the
solver.

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

13 months ago[BOLT] Switch to using layout order in YAML
Amir Ayupov [Tue, 18 Jul 2023 21:29:34 +0000 (14:29 -0700)]
[BOLT] Switch to using layout order in YAML

Use layout order in YAML profile reading/writing. Preserve old behavior (DFS order)
under `-profile-use-dfs` option.

Reviewed By: spupyrev

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

13 months ago[BOLT][NFC] Rename icf-dfs option variable to ICFUseDFS
Amir Ayupov [Tue, 18 Jul 2023 21:29:29 +0000 (14:29 -0700)]
[BOLT][NFC] Rename icf-dfs option variable to ICFUseDFS

Rename to avoid collision with profile-use-dfs.

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

13 months ago[clang-format] Add TypeNames option to disambiguate types/objects
Owen Pan [Fri, 14 Jul 2023 08:25:34 +0000 (01:25 -0700)]
[clang-format] Add TypeNames option to disambiguate types/objects

If a non-keyword identifier is found in TypeNames, then a *, &, or && that
follows it is annotated as TT_PointerOrReference.

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

13 months ago[flang][openacc] Support static slice in reduction lowering
Valentin Clement [Tue, 18 Jul 2023 21:13:46 +0000 (14:13 -0700)]
[flang][openacc] Support static slice in reduction lowering

Lower static array slices reduction with the correct
type.

Reviewed By: razvanlupusoru

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

13 months ago[clang-tidy] Allow explicit throwing in bugprone-exception-escape for special functions
Piotr Zegar [Tue, 18 Jul 2023 20:26:30 +0000 (20:26 +0000)]
[clang-tidy] Allow explicit throwing in bugprone-exception-escape for special functions

Functions declared explicitly with noexcept(false) or throw(exception)
will be excluded from the analysis, as even though it is not recommended for
functions like swap, main, move constructors and assignment operators,
and destructors, it is a clear indication of the developer's intention and
should be respected.

Fixes: #40583, #55143

Reviewed By: carlosgalvezp

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

13 months ago[clang-format] Fix indent for selective formatting
Sedenion [Tue, 18 Jul 2023 20:39:14 +0000 (13:39 -0700)]
[clang-format] Fix indent for selective formatting

The problem was that the LevelIndentTracker remembered
the indentation level of previous deeper levels when
leaving a scope. Afterwards, when it entered again a
deeper level, it blindly reused the previous
indentation level. In case the --lines option was used
such that the previous deeper level was not formatted,
that previous level was whatever happened to be there
in the source code. The formatter simply believed it.

This is fixed by letting the LevelIndentTracker forget
the previous deeper levels when stepping out of them
(=> change in LevelIndentTracker::nextLine()).
Note that this used to be the case until LLVM 14.0.6,
but was changed in https://reviews.llvm.org/D129064
(#56352) to fix a crash. Our commit here essentially
reverts that crash fix. It was incorrect/incomplete.

Fixes #58464.
Fixes #59178.
Fixes #62799.

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

13 months ago[AArch64] NFC. Add a test exposing a bug in FixupStatepointCallerSaved pass
Daniil Suchkov [Tue, 18 Jul 2023 19:57:52 +0000 (12:57 -0700)]
[AArch64] NFC. Add a test exposing a bug in FixupStatepointCallerSaved pass

This pass doesn't take register classes into account, so it ends up
trying to spill a non-GP register onto stack which is not correct.

13 months ago[scudo] Fix memtag tests.
Christopher Ferris [Tue, 18 Jul 2023 02:33:16 +0000 (19:33 -0700)]
[scudo] Fix memtag tests.

A few memtag tests were using EXPECT_DEBUG_DEATH which executes the
statement unless NDEBUG is set. This meant the statement would
cause an abort, but the EXPECT_DEATH part was not done. Change these
to simply EXPECT_DEATH, these tests already verify that SCUDO_DEBUG
is set before checking for DEATH.

Reviewed By: Chia-hungDuan

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

13 months ago[ODS] Quick fix
Amanda Tang [Tue, 18 Jul 2023 20:34:08 +0000 (20:34 +0000)]
[ODS] Quick fix

Quick fix for a failing test in https://reviews.llvm.org/rG5267ed05bc4612e91409d63b4dbc4e01751acb75

Reviewed By: jpienaar

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

13 months ago[Support] Add llvm::xxh3_64bits
Fangrui Song [Tue, 18 Jul 2023 20:36:11 +0000 (13:36 -0700)]
[Support] Add llvm::xxh3_64bits

ld.lld SHF_MERGE|SHF_STRINGS duplicate elimination is computation heavy
and utilitizes llvm::xxHash64, a simplified version of XXH64.
Externally many sources confirm that a new variant XXH3 is much faster.

I have picked a few hash implementations and computed the
proportion of time spent on hashing in the overall link time (a debug
build of clang 16 on a machine using AMD Zen 2 architecture):

* llvm::xxHash64: 3.63%
* official XXH64 (`#define XXH_VECTOR XXH_SCALAR`): 3.53%
* official XXH3_64bits (`#define XXH_VECTOR XXH_SCALAR`): 1.21%
* official XXH3_64bits (default, essentially `XXH_SSE2`): 1.22%
* this patch llvm::xxh3_64bits: 1.19%

The remaining part of lld remains unchanged. Consequently, a lower ratio
indicates that hashing is faster. Therefore, it is evident that XXH3 from xxhash
is significantly faster than both the official version and our llvm::xxHash64.

(
string length: count
1-3: 393434
4-8: 2084056
9-16: 2846249
17-128: 5598928
129-240: 1317989
241-: 328058
)

This patch adds heavily simplified https://github.com/Cyan4973/xxHash,
taking account of many simplification ideas from Devin Hussey's xxhash-clean.

Important x86-64 optimization ideas:

* Make XXH3_len_129to240_64b and XXH3_hashLong_64b noinline
* Unroll XXH3_len_17to128_64b
* __restrict does not affect Clang code generation

Beside SHF_MERGE|SHF_STRINGS duplicate elimination, llvm/ADT/StringMap.h
StringMapImpl::LookupBucketFor and a few places in lld can potentially be
accelerated by switching to llvm::xxh3_64bits.

Link: https://github.com/llvm/llvm-project/issues/63750
Reviewed By: serge-sans-paille

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

13 months ago[clang-format] Refactoring and asserts in LevelIndentTracker. (NFC)
Sedenion [Tue, 18 Jul 2023 20:23:45 +0000 (13:23 -0700)]
[clang-format] Refactoring and asserts in LevelIndentTracker. (NFC)

adjustToUnmodifiedLine: The code does something only for non-PP-directives.
This is now reflected by putting the if-check to the top. This also ensures
that the assert() there is executed only if IndentForLevel is actually
accessed.

getIndent(): assert valid index into IndentForLevel.

Added explanation regarding the intention of IndentForLevel.

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

13 months ago[SLP][NFC]Improve compile-time by using map {TreeEntry *, Instruction *}
Alexey Bataev [Mon, 17 Jul 2023 16:47:01 +0000 (09:47 -0700)]
[SLP][NFC]Improve compile-time by using map {TreeEntry *, Instruction *}
in getLastInstructionInBundle(), NFC.

Instead of building EntryToLastInstruction before the vectorization,
build it automatically during the calls to getLastInstructionInBundle()
function.

13 months ago[libc++][test] Fixes transitives includes.
Mark de Wever [Tue, 18 Jul 2023 20:21:10 +0000 (22:21 +0200)]
[libc++][test] Fixes transitives includes.

13 months ago[Flang][OpenMP] Disable function filtering for host
Andrew Gozillon [Tue, 18 Jul 2023 20:08:58 +0000 (15:08 -0500)]
[Flang][OpenMP] Disable function filtering for host

This should be a temporary fix while we work
towards enabling function filtering for host
again via a future patch.

13 months ago[bazel] fix layering check to run bazel with 16.x
Mikhail Goncharov [Tue, 18 Jul 2023 20:05:14 +0000 (22:05 +0200)]
[bazel] fix layering check to run bazel with 16.x

Preparation to update bazel builder to use LLVM 16 release
where layering check was enabled https://reviews.llvm.org/D132779

Current setup missed some backsliding in layering check as it has
only on for projects with the check enforced.

Disabled it completely for libc and fixed for DWARFLinkerParallel.
It would be great to re-enable it for libc later.

13 months ago[RISCV] Remove unnecessary _32 and _64 suffixes from some scalar crypto builtins.
Craig Topper [Tue, 18 Jul 2023 19:55:26 +0000 (12:55 -0700)]
[RISCV] Remove unnecessary _32 and _64 suffixes from some scalar crypto builtins.

The names of these builtins aren't ambiguous so they don't need the suffix.

13 months ago[libc++][print] Fixes tests.
Mark de Wever [Tue, 18 Jul 2023 19:49:26 +0000 (21:49 +0200)]
[libc++][print] Fixes tests.

The exception message improvements for `<format>` were not applied to
print. The issue has been reported by Ian Anderson.

13 months ago[mlir-lsp] Add client information to the InitializationParams
River Riddle [Tue, 18 Jul 2023 08:34:57 +0000 (01:34 -0700)]
[mlir-lsp] Add client information to the InitializationParams

This is specified in the spec, but we just never really needed it. This
allows for users of the LSP libraries to inspect information about the
client that is connected to the server.

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

13 months ago[RISCV] Minor style cleanups in post ISEL combines
Philip Reames [Tue, 18 Jul 2023 19:22:08 +0000 (12:22 -0700)]
[RISCV] Minor style cleanups in post ISEL combines

13 months ago[libc++][format] Fixes times before epoch.
Mark de Wever [Mon, 10 Jul 2023 05:59:58 +0000 (07:59 +0200)]
[libc++][format] Fixes times before epoch.

The number of days should be rounded down, for both positive and
negative times since epoch. The original code truncated, which is
correct for positive values, but wrong for negative values.

Depends on D138826

Reviewed By: #libc, ldionne

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

13 months ago[clang] scan-view: Remove unused python import
Tulio Magno Quites Machado Filho [Tue, 18 Jul 2023 19:09:50 +0000 (16:09 -0300)]
[clang] scan-view: Remove unused python import

Python's module imp is not being used and is not available on Python
3.12 anymore.

Reviewed By: tbaeder

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

13 months ago[libc++][format] Improves diagnostics.
Mark de Wever [Sun, 4 Jun 2023 19:32:10 +0000 (21:32 +0200)]
[libc++][format] Improves diagnostics.

Improves both the compile-time and run-time errors.
At compile-time it does a bit more work to get more specific errors.
This could be done at run-time too, but that has a performance penalty.
Since it's expected most use-cases use format* instead of vformat* the
compile-time errors are more common.

For example when using

  std::format_to("{:-c}", 42);

Before compile output would contain

  std::__throw_format_error("The format-spec should consume the input or end with a '}'");

Now it contains

  std::__throw_format_error("The format specifier does not allow the sign option");

Given a better indication the sign option is not allowed. Note the
output is still not user-friendly; C++ doesn't have good facilities to
generate nice messages from the library.

In general all messages have been reviewed and improved, using a more
consistent style and using less terms used in the standard. For example

  format-spec -> format specifier
  arg-id -> argument index

Reviewed By: #libc, ldionne

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

13 months ago[RISCV] Remove 'Z' from Zbb builtin type strings. NFC
Craig Topper [Tue, 18 Jul 2023 18:15:44 +0000 (11:15 -0700)]
[RISCV] Remove 'Z' from Zbb builtin type strings. NFC

'Z' means uint32_t, but 'i' is always 32 bits for RISC-V so
we don't need this.

13 months ago[HWASAN][LSAN] Fix false positive memory leak reports on X86_64
Kirill Stoimenov [Fri, 14 Jul 2023 20:07:29 +0000 (20:07 +0000)]
[HWASAN][LSAN] Fix false positive memory leak reports on X86_64

Before this patch when running HWASAN on x86_64 with with memory tagging support we got a bunch of false memory leak reports. The reason for that is that the heuristic used to detect if an 8 bytes could be a user pointer was not valid when memory tagging is used as the top byte could contain non-zero information.

Reviewed By: vitalybuka

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

13 months ago[libc++][format] Improves run-time diagnostics.
Mark de Wever [Sun, 4 Jun 2023 19:32:10 +0000 (21:32 +0200)]
[libc++][format] Improves run-time diagnostics.

After parsing a std-format-spec it's validated, depending on the type used some
format options are not allowed. This improves the error messages in the
exceptions thrown upon failure.

Depends on D155364

Reviewed By: #libc, ldionne

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

13 months ago[RISCV][CostModel] Model vrgather.vv as being quadradic in LMUL
Philip Reames [Tue, 18 Jul 2023 16:46:15 +0000 (09:46 -0700)]
[RISCV][CostModel] Model vrgather.vv as being quadradic in LMUL

vrgather.vv across multiple vector registers (i.e. LMUL > 1) requires all to all data movement. This includes two conceptual sets of changes:

    For permutes, we were modeling these as being linear in LMUL.
    For reverse, we were modeling them as being fixed cost in LMUL.

Both were wrong, and have been adjusted to O(LMUL^2).  Noticed via code inspection while looking at something else.

Its worth asking whether we should be lowering reverse to something other than a vrgather at high LMULs. That shuffle is quite expensive.  (Future work)

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

13 months ago[Clang] Only emit CUDA version warnings when creating the CUDA toolchain
Joseph Huber [Tue, 18 Jul 2023 15:27:54 +0000 (10:27 -0500)]
[Clang] Only emit CUDA version warnings when creating the CUDA toolchain

This warning primarily applies to users of the CUDA langues as there may
be new features we rely on. The other two users of the toolchain are
OpenMP via `-fopenmp --offload-arch=sm_70` and a cross-compiled build
via `--target=nvptx64-nvida-cuda -march=sm_70`. Both of these do not
rely directly on things that would change significantly between CUDA
versions, and the way they are built can sometims make this warning
print many times.

This patch changees the behaiour to only check for the version when
building for CUDA offloading specifically, the other two will not have
this check.

Reviewed By: tra

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

13 months ago[libc++][format] Improves compile-time diagnostics.
Mark de Wever [Sun, 4 Jun 2023 19:32:10 +0000 (21:32 +0200)]
[libc++][format] Improves compile-time diagnostics.

Then a std-format-spec option is invalid for a type the compile-time
validation will detect its usage and issue a diagnostic. Before it
validated after parsing the entire std-format-spec, which meant the
diagnostic was less precise. It would be possible to do this validation
run-time but that has a performance overhead. When using the format
family of functions, this would be unneeded overhead; the validation was
done at run-time. For the vformat family it would give better
diagnostics.

To avoid paying what you don't use, it has been decided to aim for the
better performance. It's more likely users will use the format family of
functions.

Depends on D155264

Reviewed By: #libc, ldionne

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

13 months ago[flang][openacc] Update data clause attribute in tests
Razvan Lupusoru [Tue, 18 Jul 2023 15:18:36 +0000 (08:18 -0700)]
[flang][openacc] Update data clause attribute in tests

Update Fortran OpenACC tests to use the updated data clause
attribute format for better readability.

Depends on D155605

Reviewed By: clementval

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

13 months ago[openacc] Update data clause attribute definition
Razvan Lupusoru [Tue, 18 Jul 2023 15:13:39 +0000 (08:13 -0700)]
[openacc] Update data clause attribute definition

Instead of using the I64EnumAttr for the DataClause, now use
EnumAttr instead. This makes tests more readable since now
one can use the format #acc<data_clause acc_copyin> instead of
just the number.

Reviewed By: clementval, vzakhari

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

13 months ago[NFC][libc++][format] Generalizes bracket parsing.
Mark de Wever [Sun, 4 Jun 2023 19:32:10 +0000 (21:32 +0200)]
[NFC][libc++][format] Generalizes bracket parsing.

Both the tuple formatter and range formatter parse a bracket. Instead of
implementing this twice do it in the generic parser. This is preparation
to improve the diagnostics in the format library.

Reviewed By: #libc, ldionne

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

13 months ago[CodeGen] Separate MachineFunctionSplitter logic for different profile types.
Han Shen [Tue, 18 Jul 2023 17:30:06 +0000 (10:30 -0700)]
[CodeGen] Separate MachineFunctionSplitter logic for different profile types.

In D152577 @xur has a post-submit comment regarding to an awkward usage
of MFS for Autofdo - instead of just using -fsplit-machine-function, the
user needs to add "-mllvm -mfs-psi-cutoff=0" to choose the right logic
for AutoFDO. The compiler should choose the right default values for
such case.

This CL separate MFS logic for different profile types.

Reviewed By: xur, wenlei

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

13 months ago[libc++][print] Adds FILE functions.
Mark de Wever [Fri, 21 Apr 2023 06:09:06 +0000 (08:09 +0200)]
[libc++][print] Adds FILE functions.

Drive-by fix to make sure the __retarget_buffer works correctly whan
using a hint of 1. This was discovered in one of the new tests.

Drive-by fixes __retarget_buffer when initialized with size 1.

Implements parts of
- P2093R14 Formatted output
- P2539R4  Should the output of std::print to a terminal be
           synchronized with the underlying stream?

Reviewed By: #libc, ldionne

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

13 months ago[libc++] Encode the version in the ReleaseNotes file
Louis Dionne [Tue, 11 Jul 2023 22:40:14 +0000 (18:40 -0400)]
[libc++] Encode the version in the ReleaseNotes file

This way, we don't need to remove the contents of the ReleaseNotes file
after the branch. This should make it much easier and natural to cherry-pick
changes onto the release branch. Typically, we need two patches for those.
First, we need the code changes against `main`, and then we need a patch
that updates the release notes on the just-created branch.

By versioning the release notes, it becomes easy to author a change
against `main` that targets a just-branched LLVM release by simply
adding it to the release notes for the right version. This has been
a pain point in previous releases.

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

13 months ago[mlir][python] Add install target for MLIR Python sources.
Jack Wolfard [Sat, 15 Jul 2023 09:44:42 +0000 (02:44 -0700)]
[mlir][python] Add install target for MLIR Python sources.

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

13 months ago[libc++][LWG 2996] Implement c++20 shared_ptr rvalue overloads.
pateldeev [Tue, 18 Jul 2023 15:48:53 +0000 (17:48 +0200)]
[libc++][LWG 2996] Implement c++20 shared_ptr rvalue overloads.

Implement c++20 `shared_ptr` rvalue overloads for aliasing constructor and pointer casts. See https://cplusplus.github.io/LWG/issue2996

Commit from
"patedeev" <dkp10000@gmail.com>

Reviewed By: philnik, #libc, ldionne, pateldeev

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

13 months ago[libc++][ranges] Implement the changes to node-based containers from P1206 (`ranges...
varconst [Tue, 11 Jul 2023 00:16:56 +0000 (17:16 -0700)]
[libc++][ranges] Implement the changes to node-based containers from P1206 (`ranges::to`):

- add the `from_range_t` constructors and the related deduction guides;
- add the `insert_range`/`assign_range`/etc. member functions.

(Note: this patch is split from https://reviews.llvm.org/D142335)

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

13 months ago[ODS] Use Adaptor Traits for Type Inference
Amanda Tang [Wed, 12 Jul 2023 20:13:25 +0000 (20:13 +0000)]
[ODS] Use Adaptor Traits for Type Inference

Author inferReturnTypes methods with the Op Adaptor by using the InferTypeOpAdaptor.

Reviewed By: jpienaar

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

13 months ago[AArch64][GISel] Additional FPTrunc vector lowering
David Green [Tue, 18 Jul 2023 17:52:19 +0000 (18:52 +0100)]
[AArch64][GISel] Additional FPTrunc vector lowering

I was attempting to add llvm.reduce.fminimum/fmaximum support for GlobalISel.
In the process I noticed that llvm.reduce.fmin/fmax was missing, and could do
with being added first. That led on to adding additional vector support for
minnum/maxnum, which in turn led to needing to handle fptrunc and fpext for
some of the fp16 types. So this patch extends the vector handling for fptrunc,
adding support for f16 types which are clamped to 4 elements, and scalarizing
the rest.

I went round in circles a little with how smaller than legal vectors should be
handled, but this seems simple and seems to work, if not always optimally yet.

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

13 months ago[llvm-exegesis] Support older kernel versions in subprocess executor
Aiden Grossman [Sat, 1 Jul 2023 00:05:37 +0000 (17:05 -0700)]
[llvm-exegesis] Support older kernel versions in subprocess executor

This patch switches from moving the performance counter file descriptor
to the child process to socket calls rather than using the pidfd_getfd
system call which was introduced in kernel 5.6. This significantly
expands the range of kernel versions that are supported.

Reviewed By: courbet

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

13 months ago[RISCV] Improve type promotion for i32 clmulr/clmulh on RV64.
Craig Topper [Tue, 18 Jul 2023 17:39:25 +0000 (10:39 -0700)]
[RISCV] Improve type promotion for i32 clmulr/clmulh on RV64.

Instead of zero extending the inputs by masking. We can shift them
left instead. This is cheaper when we don't zext.w instruction.

This does make the case where the inputs are already zero extended
or freely zero extendable worse though.

Reviewed By: wangpc

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

13 months ago[DAG] SimplifyDemandedBits - attempt to use SimplifyMultipleUseDemandedBits for bitca...
Simon Pilgrim [Tue, 18 Jul 2023 17:12:02 +0000 (18:12 +0100)]
[DAG] SimplifyDemandedBits - attempt to use SimplifyMultipleUseDemandedBits for bitcasts from larger element types

Attempt to avoid multi-use ops if the bitcast doesn't need anything from them.

13 months ago[flang][unittests] Fix recent snprintf() changes to use correct buffer lengths
Peter Klausler [Mon, 17 Jul 2023 20:10:36 +0000 (13:10 -0700)]
[flang][unittests] Fix recent snprintf() changes to use correct buffer lengths

A recent patch replaced two sprintf() calls with snprintf(), but didn't
use the right length for the remaining space in the buffer.

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

13 months ago[Docs][llvm-exegesis] Add documentation for memory annotations
Aiden Grossman [Mon, 19 Jun 2023 09:03:12 +0000 (09:03 +0000)]
[Docs][llvm-exegesis] Add documentation for memory annotations

Reviewed By: gchatelet

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

13 months ago[clangd] Fix a build error for f4f6c229bde8f42721482469bd5a3d050d254d82
Haojian Wu [Tue, 18 Jul 2023 17:19:03 +0000 (19:19 +0200)]
[clangd] Fix a build error for f4f6c229bde8f42721482469bd5a3d050d254d82

13 months ago[RISCV] Use RISCVISD::CZERO_EQZ/CZERO_NEZ for XVentanaCondOps.
Craig Topper [Tue, 18 Jul 2023 17:05:11 +0000 (10:05 -0700)]
[RISCV] Use RISCVISD::CZERO_EQZ/CZERO_NEZ for XVentanaCondOps.

This makes Zicond and XVentanaCondOps use the same code path.
The instructions have identical semantics.

Reviewed By: wangpc

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

13 months ago[mlir][Linalg] Add an interface to decompose complex ops
Quentin Colombet [Mon, 3 Jul 2023 16:20:32 +0000 (18:20 +0200)]
[mlir][Linalg] Add an interface to decompose complex ops

This patch adds an interface, named AggregatedOpInterface, that decomposes
complex operations into simpler ones.

For now, make the interface specific to Linalg because although the concept
is general, the way to materialize it needs some maturing.

Use that interface with the softmax operator.

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

13 months ago[RISCV][AArch64][IRGen] Add a special case to CodeGenFunction::EmitCall for scalable...
Craig Topper [Tue, 18 Jul 2023 16:50:30 +0000 (09:50 -0700)]
[RISCV][AArch64][IRGen] Add a special case to CodeGenFunction::EmitCall for scalable vector return being coerced to fixed vector.

Before falling back to CreateCoercedStore, detect a scalable vector
return being coerced to fixed vector. Handle it using a vector.extract
intrinsic without going through memory.

Reviewed By: c-rhodes

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

13 months ago[RISCV] Add test coverage for peephole vmerge optimization of unmasked rvv instructio...
eopXD [Tue, 18 Jul 2023 07:08:39 +0000 (00:08 -0700)]
[RISCV] Add test coverage for peephole vmerge optimization of unmasked rvv instruction with a rounding mode (NFC)

No functional change intended.

Reviewed By: fakepaper56

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

13 months ago[RISCV] Do not use FPR registers for fastcc if zfh/f/d is not specified in the archit...
eopXD [Mon, 17 Jul 2023 18:29:12 +0000 (11:29 -0700)]
[RISCV] Do not use FPR registers for fastcc if zfh/f/d is not specified in the architecture

Resolves #63917.

Also lets the compiler check for available GPR before hitting the stack.

Reviewed By: asb

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

13 months ago[gn build] Manually port 2c651184
Arthur Eubanks [Tue, 18 Jul 2023 16:53:18 +0000 (09:53 -0700)]
[gn build] Manually port 2c651184

13 months ago[RISCV] Add isMoveReg to vmv1r/vmv2r/vmv4r/vmv8r.v.
Craig Topper [Tue, 18 Jul 2023 16:34:25 +0000 (09:34 -0700)]
[RISCV] Add isMoveReg to vmv1r/vmv2r/vmv4r/vmv8r.v.

This allows TII isCopyInstrImpl to consider them copies.

Reviewed By: wangpc

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

13 months ago[RISCV] Test for D155140. NFC
Craig Topper [Tue, 18 Jul 2023 16:34:15 +0000 (09:34 -0700)]
[RISCV] Test for D155140. NFC

The vmv1r.v v8, v9 in the last block can be removed by late
copy propagation.

Reviewed By: wangpc

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

13 months ago[clang] Fix a crash when casting to an array type
Alan Zhao [Mon, 17 Jul 2023 22:27:32 +0000 (15:27 -0700)]
[clang] Fix a crash when casting to an array type

In C++20, if Clang fails to perform constructor overload on a
RecordType, then Clang will try to perform parentesized aggregate
initialization. If that fails and the initialization was attempted as
part of a cast, then we should get the diagnostics from the failed
constructor overload attempt. However, we don't attempt constructor
overloading for arrays, so previously, if we try to diagnose an
overloaded cast for a parenthesized aggregate initialization of an
array, we crash. To fix this, we now exit tryDiagnoseOverloadedCast(...)
for failed parentesized list initialization if the destination type is
an array.

Fixes #63758

Reviewed By: aaron.ballman

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

13 months ago[AArch64] Merge LDRSWpre-LD[U]RSW pair into LDPSWpre
Zhuojia Shen [Fri, 23 Jun 2023 19:49:05 +0000 (12:49 -0700)]
[AArch64] Merge LDRSWpre-LD[U]RSW pair into LDPSWpre

This patch optimizes a pair of LDRSWpre and LDRSWui (or LDURSWi)
instructions into a single LDPSWpre instruction.  This is a missing case
in D99272.

MIR test cases in D152564 are updated to verify the optimization.

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

13 months ago[AArch64] Add tests for merging LDRSWpre-LDR pairs
Zhuojia Shen [Fri, 23 Jun 2023 19:44:42 +0000 (12:44 -0700)]
[AArch64] Add tests for merging LDRSWpre-LDR pairs

This patch adds MIR test cases that test merging an LDRSWpre-LDR
instruction pair into an LDPSWpre instruction.  This optimization is
currently missing and will be added a subsequent patch (D152407), so all
test cases are no merge for now.

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

13 months ago[NFC] Fix builds on recent GCC with C++20 enabled
Alexander Batashev [Tue, 18 Jul 2023 16:43:36 +0000 (19:43 +0300)]
[NFC] Fix builds on recent GCC with C++20 enabled

The following pattern fails on recent GCC versions with -std=c++20 flag passed
and succeeds with -std=c++17. Such behavior is not observed on Clang 16.0.

```c++
template <typename T>
struct Foo {
    Foo<T>(int a) {}
};
```

This patch removes template parameter from constructor in two occurences to
make the following command complete successfully:
bazel build -c fastbuild --cxxopt=-std=c++20 --host_cxxopt=-std=c++20 @llvm-project//llvm/...

Reviewed By: arsenm

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

13 months ago[Clangd] Fix ambiguous use of 'Range'
Joseph Huber [Tue, 18 Jul 2023 16:41:24 +0000 (11:41 -0500)]
[Clangd] Fix ambiguous use of 'Range'

Summary:
The changes in D155173 caused build failures on some configruations due
to the use of `Range` which conflicts with other definitions. Explicitly
use `clangd::Range`.

13 months ago[libc] Treat the locks array as a bitfield
Joseph Huber [Tue, 18 Jul 2023 15:22:01 +0000 (10:22 -0500)]
[libc] Treat the locks array as a bitfield

Currently we keep an internal buffer of device memory that is used to
indicate ownership of a port. Since we only use this as a single bit we
can simply turn this into a bitfield. I did this manually rather than
having a separate type as we need very special handling of the masks
used to interact with the locks.

Reviewed By: JonChesterfield

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

13 months ago[DAG] More aggressively (extract_vector_elt (build_vector x, y), c) iff element is...
Simon Pilgrim [Tue, 18 Jul 2023 15:49:54 +0000 (16:49 +0100)]
[DAG] More aggressively (extract_vector_elt (build_vector x, y), c) iff element is zero constant

We currently don't extract vector elements from multi-use build vectors unless TLI.aggressivelyPreferBuildVectorSources accepts them, which seems a little extreme for constant build vectors (especially as under some cases ComputeKnownBits will indirectly extract the data for us).

This is causing a few regressions in some upcoming SimplifyDemandedBits work I'm looking at, all of which just need to know that the element is zero, so I've tweaked the fold to accept zero elements as well, which will typically fold very easily.

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

13 months ago[Sparc] Regenerate float-constants.ll test checks
Simon Pilgrim [Tue, 18 Jul 2023 11:41:09 +0000 (12:41 +0100)]
[Sparc] Regenerate float-constants.ll test checks

13 months ago[mlir][python] Remove PythonAttr mapping functionality
Rahul Kayaith [Wed, 5 Jul 2023 02:21:26 +0000 (22:21 -0400)]
[mlir][python] Remove PythonAttr mapping functionality

This functionality has been replaced by TypeCasters (see D151840)

depends on D154468

Reviewed By: ftynse

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

13 months ago[AArch64] Regenerate a couple of vector-shuffle tests. NFC
Dinar Temirbulatov [Tue, 18 Jul 2023 15:57:16 +0000 (15:57 +0000)]
[AArch64] Regenerate a couple of vector-shuffle tests. NFC
    As a request in https://reviews.llvm.org/D152205

13 months agoRevert "[libc] Default the GPU build to the default memory utilities"
Joseph Huber [Tue, 18 Jul 2023 16:00:14 +0000 (11:00 -0500)]
Revert "[libc] Default the GPU build to the default memory utilities"

This reverts commit eca8b54a5f76c65a055bac05556b70c2a0ec63a1.

Another user reverted the patch this was based on leaving this one in a
broken state.

13 months ago[flang][hlfir] Support polymorphic hlfir.expr values.
Slava Zakharin [Tue, 18 Jul 2023 15:19:44 +0000 (08:19 -0700)]
[flang][hlfir] Support polymorphic hlfir.expr values.

This patch sets 'polymorphic' attribute of hlfir::ExprType when
the value is created from a polymorphic entity.
Memoization of such ExprType involves creating a mutable descriptor
on the stack, which is initialized (as a null box) and passed to
AllocatableApplyMold with the mold being the entity from which
the ExprType value is being created.

This patch fixes "creating polymorphic temporary" TODO and also
several cases of "'fir.convert' op invalid type conversion" error.

Reviewed By: tblah

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

13 months ago[libc] Default the GPU build to the default memory utilities
Joseph Huber [Tue, 18 Jul 2023 15:48:31 +0000 (10:48 -0500)]
[libc] Default the GPU build to the default memory utilities

A previous patch made this cause an error on the GPU. We have not yet
dedicated time towards an optimial implementaiton there but we do not
want it to cause an error. We simply use the fallback routines.

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

13 months ago[clang-tidy][NFC] Update path of main translation unit
Jens Carl [Tue, 18 Jul 2023 15:48:22 +0000 (15:48 +0000)]
[clang-tidy][NFC] Update path of main translation unit

The forcing of the linker for a new module was moved from file
clang-tidy/tools/ClangTidyModule.cpp to
clang-tidy/ClangTidyForceLinker.h.

Reviewed By: PiotrZSL

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

13 months agoRevert "[libc][memfunctions] Explicit error when platform in not supported"
Jon Chesterfield [Tue, 18 Jul 2023 15:41:47 +0000 (16:41 +0100)]
Revert "[libc][memfunctions] Explicit error when platform in not supported"

Broke amdgpu libc bot

This reverts commit a39c951730aa92894e27da038e834229d4613db1.

13 months ago[libc++][chrono] Fixes month inc and dec operations.
Mark de Wever [Mon, 17 Jul 2023 18:25:01 +0000 (20:25 +0200)]
[libc++][chrono] Fixes month inc and dec operations.

The operator++, operator++(int), operator--, and operator--(int) need to
change the month to a valid value. The wording is specified in terms of
  operator+(const month& x, const months& y) noexcept;
which has the correct behavior. The aforementioned operators instead
used ++/-- on the internal value direction, resulting in incorrect
behaviour.

As a drive-by improve the unit tests:
- use the typical constexpr test method
- test whether the month is valid after the operations
- format the tests

Fixes: https://llvm.org/PR63912

Reviewed By: #libc, ldionne

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

13 months ago[clangd] Refine the workflow for diagnostic Fixits.
Haojian Wu [Sat, 8 Jul 2023 20:55:00 +0000 (22:55 +0200)]
[clangd] Refine the workflow for diagnostic Fixits.

- No longer store the diagnostic fixits in the clangdLSPServer
- When propagating the fixit via the code action, we use the Diag
  information stored in the ParsedAST (in clangdServer.cpp)

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

13 months agoRevert "[AArch64] Fix an immediate out of range for large realignments on Windows"
Martin Storsjö [Tue, 18 Jul 2023 15:21:23 +0000 (18:21 +0300)]
Revert "[AArch64] Fix an immediate out of range for large realignments on Windows"

This reverts commit b1d0bc0f4395c69097bc11b6ba8f821f621272a9.

Builds with expensive checks show that 'sp' isn't a valid register
in ADDXrr - an object file built without exprnsive checks enabled
disassembles as "add x15, xzr, x16", instead of the intended
"add x15, sp, x16".

13 months ago[openacc] Add dialect definition for acc declare
Razvan Lupusoru [Fri, 14 Jul 2023 17:40:57 +0000 (10:40 -0700)]
[openacc] Add dialect definition for acc declare

A declare directive is used to specify the creation of a visible device
copy of a variable for the duration of the implicit data region as it
relates to the scope in which the variable is declared.

In order to support this, the following new operations were added:
1) `acc.global_ctor` and `acc.global_dtor`. These are used whenever the
declare directive applies to a global.
2) `acc.declare_enter` and `acc.declare_exit`. These operations are
modeled similarly to `acc.enter_data` and `acc.exit_data`. The reason
they are not modeled like `acc.data` is so that these operations can be
used both for globals and regions like functions.
3) `acc.declare_device_resident` and `acc.declare_link`. These
operations are modeled in a manner consistent with previously defined
data entry operation model.

The `acc.getdeviceptr` was generalized so that it can be used with
acc.declare_exit.

Reviewed By: clementval, vzakhari

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