platform/upstream/llvm.git
18 months ago[X86] Replace (31/63 -/^ X) with (NOT X) and ignore (32/64 ^ X) when computing shift...
Noah Goldstein [Fri, 13 Jan 2023 02:24:43 +0000 (18:24 -0800)]
[X86] Replace (31/63 -/^ X) with (NOT X) and ignore (32/64 ^ X) when computing shift count

Shift count is masked by hardware so these peepholes just extend
common patterns for NOT to the lower bits of shift count.

As well (32/64 ^ X) is masked off by the shift so can be safely
ignored.

Reviewed By: pengfei, lebedev.ri

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

18 months agoAMDGPU/GlobalISel: Make regbankselect of implicit_def consistent with constants
Matt Arsenault [Fri, 30 Dec 2022 14:21:49 +0000 (09:21 -0500)]
AMDGPU/GlobalISel: Make regbankselect of implicit_def consistent with constants

18 months ago[RISCV] Change the return type of getStreamer() to support the use of overloading...
LiDongjin [Fri, 13 Jan 2023 03:48:22 +0000 (11:48 +0800)]
[RISCV] Change the return type of getStreamer() to support the use of overloading and other functions in RISCVELFStreamer

Move the declaration of RISCVELFStreamer from RISCVELFStreamer.cpp to RISCVELFStreamer.h.
Change the return type of getStreamer() to support the use of overloading and other functions in RISCVELFStreamer.

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

18 months ago[lldb/test] Fix data racing issue in TestStackCoreScriptedProcess
Med Ismail Bennani [Wed, 11 Jan 2023 00:28:25 +0000 (16:28 -0800)]
[lldb/test] Fix data racing issue in TestStackCoreScriptedProcess

This patch should fix an nondeterministic error in TestStackCoreScriptedProcess.

In order to test both the multithreading capability and shared library
loading in Scripted Processes, the test would create multiple threads
that would take the same variable as a reference.

The first thread would alter the value and the second thread would
monitor the value until it gets altered. This assumed a certain ordering
regarding the `std::thread` spawning, however the ordering was not
always guaranteed at runtime.

To fix that, the test now makes use of a `std::condition_variable`
shared between the each thread. On the former, it will notify the other
thread when the variable gets initialized or updated and on the latter,
it will wait until the variable it receives a new notification.

This should fix the data racing issue while preserving the testing
coverage.

rdar://98678134

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months ago[lldb] Update custom commands to always be overrriden
Med Ismail Bennani [Thu, 12 Jan 2023 23:30:24 +0000 (15:30 -0800)]
[lldb] Update custom commands to always be overrriden

This is a follow-up patch to 6f7835f309b9.

As explained previously, when running from an IDE, it can happen that
the IDE imports some lldb scripts by itself. If the user also tries to
import these commands, lldb will show the following message:

```
error: cannot add command: user command exists and force replace not set
```

This message is confusing to the user, because it suggests that the
command import failed and that the execution should stop. However, in
this case, lldb will continue the execution with the command added
previously by the user.

To prevent that, this patch updates every first-party lldb-packaged
custom commands to override commands that were pre-imported in lldb.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months ago[lldb] Force override when adding crashlog command
Med Ismail Bennani [Thu, 12 Jan 2023 23:29:19 +0000 (15:29 -0800)]
[lldb] Force override when adding crashlog command

When using interactive crashlog from an IDE, it can happen that the user
already have the `command script import lldb.macosx.crashlog` command on
their `lldbinit` file.

That leads to showing some message:

```
error: cannot add command: user command exists and force replace not set
error: cannot add command: user command exists and force replace not set
```

This leads to confusion because the crashlog symbolication continues and
succeeds even after these errors.

To address that, the crashlog commands get overridden everytime the
script get re-imported.

rdar://103403943

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months ago[lldb/Process] Populate queues in Scripted Process
Med Ismail Bennani [Thu, 12 Jan 2023 23:27:45 +0000 (15:27 -0800)]
[lldb/Process] Populate queues in Scripted Process

This patch enhances queue support in Scripted Processes.

Scripted Threads could already report their queue name if they had one,
but this information was only surfaced when getting the process and
thread status.

However, no queue was create and added to the scripted process queue
list. This patch improves that by creating a queue from the scripted
thread queue name. For now, it uses an invalid queue id, since the
scripted thread doesn't expose this capability yet, but this could
easily be supported if the queue id information is available.

rdar://98844004

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months ago[lldb/crashlog] Refactor CrashLogParser into a Factory pattern
Med Ismail Bennani [Thu, 12 Jan 2023 23:26:49 +0000 (15:26 -0800)]
[lldb/crashlog] Refactor CrashLogParser into a Factory pattern

This patch should fix an undefined behaviour that's happening when
parsing a crash report from an IDE. In the previous implementation, the
CrashLogParser base class would use the `__new__` static class method to
create the right parser instance depending on the crash report type.

For some reasons, the derived parser initializer wouldn't be called when
running the command from an IDE, so this patch refactors the
CrashLogParser code to replace the use of the `__new__` method with a
factory `create` static method.

rdar://100527640

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months agoRemove a workaround for libstdc++4.8
Owen Anderson [Thu, 12 Jan 2023 04:53:30 +0000 (21:53 -0700)]
Remove a workaround for libstdc++4.8

Reviewed By: nikic

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

18 months ago[gn] Reformat all build files
Nico Weber [Fri, 13 Jan 2023 03:04:20 +0000 (22:04 -0500)]
[gn] Reformat all build files

Ran:

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

18 months ago[LinkerWrapper] Adjust test after a previous change in temp file names
Joseph Huber [Fri, 13 Jan 2023 02:35:51 +0000 (20:35 -0600)]
[LinkerWrapper] Adjust test after a previous change in temp file names

Summary:
This patch adjusts the test to correctly search for the temp files
created after a previous patch changed the name. This wasn't caught
because it still technically worked.

18 months ago[clangd] support expanding `decltype(expr)`
v1nh1shungry [Fri, 13 Jan 2023 02:15:13 +0000 (03:15 +0100)]
[clangd] support expanding `decltype(expr)`

Enable the existing tweak `ExpandAutoType` to expand
`decltype(expr)`, e.g.

```
decltype(0) i;
```

will expand to

```
int i;
```

Therefore, rename the tweak `ExpandAutoType` to `ExpandDeducedType`.

This patch also fixes some nits,

* avoid replacing reference to a function
* avoid replacing array types and reference to an array

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

Reviewed By: sammccall

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

18 months ago[LLDB][LoongArch] Add unittests for EmulateInstructionLoongArch
Hui Li [Fri, 13 Jan 2023 02:17:48 +0000 (10:17 +0800)]
[LLDB][LoongArch] Add unittests for EmulateInstructionLoongArch

Add unit tests For EmulateInstructionLoongArch existing branch instruction.
Add 19 test cases in total.

Without this patch:

```
$ ninja check-lldb-unit
[0/1] Running lldb unit test suite

Testing Time: 10.55s
  Passed: 1025
```

With this patch:

```
$ ninja check-lldb-unit
[0/1] Running lldb unit test suite

Testing Time: 10.45s
  Passed: 1044
```

Reviewed By: DavidSpickett

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

18 months ago[LLDB][LoongArch] ObjectFile: add a case for `EM_LOONGARCH`
Hui Li [Fri, 13 Jan 2023 02:16:29 +0000 (10:16 +0800)]
[LLDB][LoongArch] ObjectFile: add a case for `EM_LOONGARCH`

This adds the jump slot mapping for LoongArch. This is a simple
change that ensures lldb running properly.

 Note that this problem was found only when CMake variables
 "DLLVM_ENABLE_ASSERTIONS=ON" is selected.

Without this patch,

```
$ build/bin/lldb  test

../ELFHeader::GetRelocationJumpSlotType() const: Assertion `false && "architecture not supported"' fail

```
With this patch

```
$ build/bin/lldb  test
(lldb) target create "test"
Current executable set to '../test' (loongarch64).

```

Reviewed By: SixWeining, DavidSpickett

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

18 months agoRevert "[MergeICmps] Adapt to non-eq comparisons"
Vitaly Buka [Fri, 13 Jan 2023 02:09:15 +0000 (18:09 -0800)]
Revert "[MergeICmps] Adapt to non-eq comparisons"

Breaks ubsan build, details in D141188.

This reverts commit 3ac2b3a4f9effc9f79822e770f209fd70ff66362.

18 months ago[AMDGPU][NFC] Heterogeneous DWARF extensions update
Tony Tye [Thu, 5 Jan 2023 00:34:02 +0000 (00:34 +0000)]
[AMDGPU][NFC] Heterogeneous DWARF extensions update

- Clarify CFI rules in heterogeneous DWARF extensions

- Added DWARF source language memory spaces.

- Added DWARF architecture address spaces.

- Other minor corrections.

Reviewed By: scott.linder

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

18 months ago[clang][test] Remove unnecessary 'REQUIRES'
Ben Shi [Fri, 13 Jan 2023 01:25:42 +0000 (09:25 +0800)]
[clang][test] Remove unnecessary 'REQUIRES'

The test 'Preprocessor/predefined-arch-macros.c' contains many
target tests than 'amdgpu'. If clang is built without 'amdgpu',
then failures in other target tests will not be reported.

Reviewed By: aaron.ballman, MaskRay

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

18 months ago[LSAN] More LSAN interface tweaking.
Kirill Stoimenov [Thu, 12 Jan 2023 21:31:49 +0000 (13:31 -0800)]
[LSAN] More LSAN interface tweaking.

Main goal is to remove thread registry dependency from the interface because HWASAN is using its own code to manage threads.

Reviewed By: vitalybuka, kstoimenov

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

18 months ago[LinkerWrapper] Fix test on Windows
Joseph Huber [Fri, 13 Jan 2023 01:56:24 +0000 (19:56 -0600)]
[LinkerWrapper] Fix test on Windows

Summary:
`clang` is called `clang.exe` on windows, we need to glob the text
inbetween.

18 months agoRemove a bogus assertion.
Richard Smith [Fri, 13 Jan 2023 01:21:45 +0000 (17:21 -0800)]
Remove a bogus assertion.

The result of recomputing the type of an LValue may be different from
the type we find serialized with that LValue, either due to differing
type sugar in a redeclaration, or more significantly due to a later
declaration of a variable having an array bound that a prior declaration
did not have. Therefore this assertion was attempting to verify a
property that isn't necessarily true.

18 months ago[lld/mac] Add support for distributed ThinLTO
Nico Weber [Sun, 20 Nov 2022 16:59:16 +0000 (11:59 -0500)]
[lld/mac] Add support for distributed ThinLTO

Adds support for the following flags:

* --thinlto-index-only, --thinlto-index-only=
* --thinlto-emit-imports-files
* --thinlto-emit-index-files
* --thinlto-object-suffix-replace=
* --thinlto-prefix-replace=

See https://blog.llvm.org/2016/06/thinlto-scalable-and-incremental-lto.html
for some words on --thinlto-index-only.

I don't really need the other flags, but they were in the vicinity
and _someone_ might need them, so I figured I'd add them too.

`-object_path_lto` now sets `c.AlwaysEmitRegularLTOObj` as in the other ports,
which means it can now only point to a filename for non-thin LTO.
I think that was the intent of D129705 anyways, so update
test/MachO/lto-object-path.ll to use a non-thin bitcode file for that test.

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

18 months ago[MemProf] Collect access density statistics during profiling
Teresa Johnson [Thu, 12 Jan 2023 01:16:03 +0000 (17:16 -0800)]
[MemProf] Collect access density statistics during profiling

Track min/max/avg access density (accesses per byte and accesses per
byte per lifetime second) metrics directly during profiling. This allows
more accurate use of these metrics in profile analysis and use, instead
of trying to compute them from already aggregated data in the profile.

This required regenerating some of the raw profile and executable inputs
for a few tests. While here, make the llvm-profdata memprof tests more
resilient to differences in things like memory mapping, timestamps and
cpu ids to make future test updates easier.

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

18 months ago[RISCV] Custom lower vector ISD::CTLZ to the minimum of ISD::CTLZ_ZERO_UNDEF and...
Yeting Kuo [Thu, 12 Jan 2023 10:14:24 +0000 (18:14 +0800)]
[RISCV] Custom lower vector ISD::CTLZ to the minimum of ISD::CTLZ_ZERO_UNDEF and element size.

D111904 made RISC-V customized lower ISD::CTLZ_ZERO_UNDEF by converting to float
and using the float result. The expected value of CTLZ with zero input is the
element size of input type. Since the result of above method with zero input
must be greater than the element size, for ISD::CTLZ, we could use the minimum
of element size and the result of CTLZ_ZERO_UNDER with same input.

Reviewed By: craig.topper

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

18 months agoRevert "[LSAN] More LSAN interface tweaking."
Vitaly Buka [Fri, 13 Jan 2023 01:30:26 +0000 (17:30 -0800)]
Revert "[LSAN] More LSAN interface tweaking."

Breaks bots.
Also it's missing changes we discussed on review.

This reverts commit f001e50f955c3cdf2deb79e38a9fd19c9a781882.
This reverts commit 2924189233fdb724453ead4b94595107b1ce9cfa.

18 months ago[Clang][RISCV] Update operand order for vmerge and vcompress
eopXD [Tue, 27 Dec 2022 09:12:51 +0000 (01:12 -0800)]
[Clang][RISCV] Update operand order for vmerge and vcompress

From:
  vint32m1_t vmerge_vvm_i32m1 (vbool32_t mask, vint32m1_t op1, vint32m1_t op2, size_t vl);
  vint32m1_t vcompress_vm_i32m1 (vbool32_t mask, vint32m1_t src, size_t vl);

To:
  vint32m1_t vmerge_vvm_i32m1 (vint32m1_t op1, vint32m1_t op2, vbool32_t selector, size_t vl);
  vint32m1_t vcompress_vm_i32m1 (vint32m1_t src, vbool32_t selector, size_t vl);

Address issues:
riscv-non-isa/rvv-intrinsic-doc#140
riscv-non-isa/rvv-intrinsic-doc#167

Pull request:
riscv-non-isa/rvv-intrinsic-doc#185

Reviewed By: craig.topper

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

18 months ago[gn] port 3432f4bf86e7 (//llvm/lib/Testing/Annotations)
Nico Weber [Fri, 13 Jan 2023 01:07:55 +0000 (20:07 -0500)]
[gn] port 3432f4bf86e7 (//llvm/lib/Testing/Annotations)

18 months ago[clang-tidy] don't warn when returning the result for bugprone-standalone-empty
v1nh1shungry [Thu, 12 Jan 2023 23:40:05 +0000 (23:40 +0000)]
[clang-tidy] don't warn when returning the result for bugprone-standalone-empty

Relevant issue: https://github.com/llvm/llvm-project/issues/59517

Currently this check will warn when the result is used in a `return`
statement, e.g.

```
bool foobar() {
  std::vector<int> v;
  return v.empty();
  // will get a warning here, which makes no sense IMO
}
```

Reviewed By: cjdb, denik

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

18 months ago[lld-macho] Downgrade missing fat arch to warning
Keith Smiley [Thu, 12 Jan 2023 22:43:12 +0000 (14:43 -0800)]
[lld-macho] Downgrade missing fat arch to warning

This mirrors ld64's behavior. In many cases this likely still leads to a
link failure but if you didn't actually use anything from the library
it can be ignored. If you care about these invalid cases -fatal_warnings
still upgrades it back to an error.

Example: https://github.com/keith/ld64.lld/issues/3

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

18 months ago[lsan] Fix build for Fuchsia after D140039
Alex Brachet [Fri, 13 Jan 2023 00:47:46 +0000 (00:47 +0000)]
[lsan] Fix build for Fuchsia after D140039

18 months agoAdd -disable-check-noreturn-call for stack protect
Xiang1 Zhang [Wed, 11 Jan 2023 08:54:07 +0000 (16:54 +0800)]
Add -disable-check-noreturn-call for stack protect

Differential Revision: https://reviews.llvm.org/D141556
Reviewed By: lanza

18 months agoOpenMP: Use inbounds in EmitOMPAggregateAssign
Matt Arsenault [Thu, 12 Jan 2023 01:34:00 +0000 (20:34 -0500)]
OpenMP: Use inbounds in EmitOMPAggregateAssign

This looked like a plausibly correct out of tree patch.
The changed testcases with the pragmas stripped out only use
inbounds GEPs so I assume this is correct.

18 months agoRevert "[GWP-ASan] Add recoverable mode."
Mitch Phillips [Thu, 12 Jan 2023 23:58:36 +0000 (15:58 -0800)]
Revert "[GWP-ASan] Add recoverable mode."

This reverts commit 90a9beb7cc9755791caa23dfc4e36bc544e98ed3.

Reason: Broke an internal build.

18 months agoRevert "[GWP-ASan] Fix test to work with Fuchsia's zxtest"
Mitch Phillips [Thu, 12 Jan 2023 23:58:10 +0000 (15:58 -0800)]
Revert "[GWP-ASan] Fix test to work with Fuchsia's zxtest"

This reverts commit 64138725e4cf0ab5e3f9c0dba38e11ce3d3b4017.

Parent change https://reviews.llvm.org/D140173 broke an internal build.
I'll land this bit as part of the re-land for
https://reviews.llvm.org/D140173.

18 months agoRevert "[GWP-ASan] Fix 6413872"
Mitch Phillips [Thu, 12 Jan 2023 23:57:27 +0000 (15:57 -0800)]
Revert "[GWP-ASan] Fix 6413872"

This reverts commit df87e62cbd4b5090b5349247d29457706d2ac4e8.

Parent change https://reviews.llvm.org/D140173 broke an internal build.
I'll integrate this patch into the re-land for
https://reviews.llvm.org/D140173.

18 months ago[LSAN] More LSAN interface tweaking.
Kirill Stoimenov [Thu, 12 Jan 2023 00:03:41 +0000 (00:03 +0000)]
[LSAN] More LSAN interface tweaking.

Main goal is to remove thread registry dependency from the interface because HWASAN is using its own code to manage threads.

Reviewed By: vitalybuka, kstoimenov

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

18 months ago[OpenMP][FIX] The thread limit is the block, not grid size
Johannes Doerfert [Thu, 12 Jan 2023 23:29:55 +0000 (15:29 -0800)]
[OpenMP][FIX] The thread limit is the block, not grid size

18 months ago[CUDA] added cmath wrappers to unbreak CUDA compilation after D79555
Artem Belevich [Thu, 12 Jan 2023 01:09:21 +0000 (17:09 -0800)]
[CUDA] added cmath wrappers to unbreak CUDA compilation after D79555

libc++ introduced a handful of internal functions that may or may not be
constexpr, depending on C++ version. For pre-constexpr variants we must declare
__device__ counterparts. Otherwise the code fails to compile on the GPU side.
See https://reviews.llvm.org/D79555

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

18 months ago[mlir][linalg] Fix incorrect reduction detection in Vectorizer
Diego Caballero [Thu, 12 Jan 2023 23:11:45 +0000 (23:11 +0000)]
[mlir][linalg] Fix incorrect reduction detection in Vectorizer

When detecting reductions, make sure the block argument is from the linalg generic op.
This fixes https://github.com/iree-org/iree/issues/11779.

Co-authored-by: Andrzej Warzynski <andrzej.warzynski@arm.com>
Reviewed By: nicolasvasilache

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

18 months ago[mlir][sparse] Minor code clean up (NFC).
bixia1 [Thu, 12 Jan 2023 00:25:50 +0000 (16:25 -0800)]
[mlir][sparse] Minor code clean up (NFC).

Reviewed By: Peiming

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

18 months ago[Attributor][FIX] Consistently use the access/remote instruction
Johannes Doerfert [Thu, 12 Jan 2023 23:19:35 +0000 (15:19 -0800)]
[Attributor][FIX] Consistently use the access/remote instruction

We use the actual access (=remote) instruction when reasoning about
accesses, except for one leftover use case of the local instruction.
This caused us to potentially ignore the dominating write if the read
and write were in a different function than the (stack) allocation.

Reported by @ye-luo

18 months ago[libc++] Add clang-tidy to the list of possible substitutions for %{clang-tidy}
Nikolas Klauser [Mon, 9 Jan 2023 00:39:58 +0000 (01:39 +0100)]
[libc++] Add clang-tidy to the list of possible substitutions for %{clang-tidy}

Most people don't have a versioned clang-tidy locally. This allows them to still run the clang-tidy test if they have a suitable version.

Reviewed By: ldionne, #libc

Spies: libcxx-commits, arichardson

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

18 months ago[mlir][NFC] Use explicit ArrayRef construction in OptionalArrayRefParameter
River Riddle [Thu, 12 Jan 2023 22:43:32 +0000 (14:43 -0800)]
[mlir][NFC] Use explicit ArrayRef construction in OptionalArrayRefParameter

GCC was barfing on template deduction for ArrayRef parameters in
some situations.

18 months ago[mlir][AttrType] Emit unbalanced character errors using the last punctuation used
River Riddle [Thu, 12 Jan 2023 22:20:00 +0000 (14:20 -0800)]
[mlir][AttrType] Emit unbalanced character errors using the last punctuation used

This gives a better diagnostic in general, because it indicates that the user didn't
close out the last open puncutation range. For example:

```
foo.op {
  some.op -> !blah.pointer<
}
```
We want the error to hint about the unclosed `<`, not the `}` (which isn't really in the context of the type).

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

18 months ago[NFC] [scudo] avoid casting in a circle
Florian Mayer [Thu, 12 Jan 2023 22:47:03 +0000 (14:47 -0800)]
[NFC] [scudo] avoid casting in a circle

18 months ago[libTooling] Add `getFileRange` as an alternative to `getRangeForEdit`
Eric Li [Thu, 12 Jan 2023 22:10:39 +0000 (17:10 -0500)]
[libTooling] Add `getFileRange` as an alternative to `getRangeForEdit`

Add a `getFileRange` function alongside the existing `getRangeForEdit`
as a way to get a contiguous range within a single file (similar to
`getRangeForEdit`) but without the restriction that it cannot be in a
system header.

This can be used where a tool may want to use the range to extract the
source text. In such cases, we don't want to restrict this from
pulling from system headers.

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

18 months ago[LinkerWrapper] Improve -save-temps behaviour
Joseph Huber [Thu, 12 Jan 2023 22:42:30 +0000 (16:42 -0600)]
[LinkerWrapper] Improve -save-temps behaviour

Summary:
This patch changes around some of the names for the temp files we
generate. This also emits the `postlink` and `postopt` temp files. We
don't use the built-in save temps from LTO right now because it doesn't
give the ASM properly. We may be able to fix that in the future.

18 months ago[AArch64] Add IfConv test with loads with invariant ops as conditions.
Florian Hahn [Thu, 12 Jan 2023 22:38:39 +0000 (22:38 +0000)]
[AArch64] Add IfConv test with loads with invariant ops as conditions.

Add EarlyIfConversion tests for AArch64 where the condition is a load
with invariant operands. A follow-up patch will propose a heuristic to
consider such conditions predictable.

18 months ago[mlir][sparse] support parsing slices in sparse tensor encoding attribute
Peiming Liu [Tue, 27 Dec 2022 22:10:37 +0000 (22:10 +0000)]
[mlir][sparse] support parsing slices in sparse tensor encoding attribute

Reviewed By: bixia

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

18 months ago[libc][obvious] Add a missing dep.
Siva Chandra Reddy [Thu, 12 Jan 2023 22:33:38 +0000 (22:33 +0000)]
[libc][obvious] Add a missing dep.

18 months agoRevert "[SimplifyCFG] When eliminating `unreachable` landing pads, mark `call`s as...
Roman Lebedev [Thu, 12 Jan 2023 22:12:07 +0000 (01:12 +0300)]
Revert "[SimplifyCFG] When eliminating `unreachable` landing pads, mark `call`s as `nounwind`"

The bool is in the wrong place and might get implicitly converted from
the previous second argument - a pointer. Thinking about it more,
it's not really the best place for that functionality anyways,
only a single caller needs that.

This reverts commit 3c5b1f2d94d021005ce3769a4402d4a4ae843989.

18 months ago[mlir][python] fix python build
Jeff Niu [Thu, 12 Jan 2023 22:17:32 +0000 (14:17 -0800)]
[mlir][python] fix python build

18 months ago[lldb/test] Disable TestScriptedProcess.py on linux while investigating the issue
Med Ismail Bennani [Thu, 12 Jan 2023 22:10:48 +0000 (14:10 -0800)]
[lldb/test] Disable TestScriptedProcess.py on linux while investigating the issue

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months ago[SimplifyCFG] When eliminating `unreachable` landing pads, mark `call`s as `nounwind`
Roman Lebedev [Thu, 12 Jan 2023 21:05:19 +0000 (00:05 +0300)]
[SimplifyCFG] When eliminating `unreachable` landing pads, mark `call`s as `nounwind`

We really can't recover that knowledge, and `nounwind` knowledge,
(and not just a lack of the unwind edge, aka `call` instead of `invoke`),
is e.g. part of the reasoning in e.g. `mayHaveSideEffects()`.

Note that this is call-site-specific knowledge,
just because some callsite had an `unreachable`
unwind edge, does not mean that all will.

18 months ago[NFC][SimplifyCFG] Autogenerate checklines in some tests that eliminate unwind edges
Roman Lebedev [Thu, 12 Jan 2023 20:43:38 +0000 (23:43 +0300)]
[NFC][SimplifyCFG] Autogenerate checklines in some tests that eliminate unwind edges

18 months ago[test] Split out Annotations from `TestingSupport`
Jordan Rupprecht [Thu, 12 Jan 2023 21:40:47 +0000 (13:40 -0800)]
[test] Split out Annotations from `TestingSupport`

The Annotations helper class does not have a gtest or gmock dependency, but because it's bundled with the rest of TestingSupport, it gets one. By splitting it out, a target can use it without being forced to use LLVM's copy of gtest.

Reviewed By: GMNGeoffrey, sammccall, gribozavr2

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

18 months ago[ORC] Tidy up MachOPlatform's references to ORC runtime registration functions.
Lang Hames [Thu, 12 Jan 2023 16:32:58 +0000 (08:32 -0800)]
[ORC] Tidy up MachOPlatform's references to ORC runtime registration functions.

Use an private struct, RuntimeFunction, to to keep the name and address of each
registration function together, and rename the member variables with their purpose
rather than the full name of the function in the runtime.

18 months ago[mlir][ods] Generate inferReturnTypes for ops with TypesMatchWith
Jeff Niu [Sun, 8 Jan 2023 20:46:52 +0000 (12:46 -0800)]
[mlir][ods] Generate inferReturnTypes for ops with TypesMatchWith

Ops that use TypesMatchWith to constrain result types for verification
and to infer result types during parser generation should also be able
to have the `inferReturnTypes` method auto generated. This patch
upgrades the logic for generating `inferReturnTypes` to handle the
TypesMatchWith trait by building a type inference graph where each edge
corresponds to "type of A can be inferred from type of B", supporting
transformers other than `"$_self"`.

Reviewed By: lattner, rriddle

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

18 months ago[BOLT] Minor refactoring for -print-sorted-by option
Maksim Panchenko [Tue, 10 Jan 2023 03:14:38 +0000 (19:14 -0800)]
[BOLT] Minor refactoring for -print-sorted-by option

Only display used values for -print-sorted-by option when printing help.

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

18 months ago[mlir] Add operations to BlockAndValueMapping and rename it to IRMapping
Jeff Niu [Sun, 8 Jan 2023 22:15:07 +0000 (14:15 -0800)]
[mlir] Add operations to BlockAndValueMapping and rename it to IRMapping

The patch adds operations to `BlockAndValueMapping` and renames it to `IRMapping`. When operations are cloned, old operations are mapped to the cloned operations. This allows mapping from an operation to a cloned operation. Example:

```
Operation *opWithRegion = ...
Operation *opInsideRegion = &opWithRegion->front().front();

IRMapping map
Operation *newOpWithRegion = opWithRegion->clone(map);
Operation *newOpInsideRegion = map.lookupOrNull(opInsideRegion);
```

Migration instructions:
All includes to `mlir/IR/BlockAndValueMapping.h` should be replaced with `mlir/IR/IRMapping.h`. All uses of `BlockAndValueMapping` need to be renamed to `IRMapping`.

Reviewed By: rriddle, mehdi_amini

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

18 months ago[scudo] Fix RingBuffer initialization.
Luke Nicholson [Thu, 12 Jan 2023 21:05:30 +0000 (13:05 -0800)]
[scudo] Fix RingBuffer initialization.

Several map implementations require that map calls provide a page
aligned size.

Reviewed By: fmayer

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

18 months ago[bazel] Fix --features=layering_check issues and enable layering_check for lld
Fangrui Song [Thu, 12 Jan 2023 21:08:06 +0000 (13:08 -0800)]
[bazel] Fix --features=layering_check issues and enable layering_check for lld

18 months ago[lldb/Interpreter] Introduce ScriptedPlatform{,Python}Interface
Med Ismail Bennani [Thu, 12 Jan 2023 07:27:39 +0000 (23:27 -0800)]
[lldb/Interpreter] Introduce ScriptedPlatform{,Python}Interface

This patch introduces both the ScriptedPlatformInterface and the
ScriptedPlatformPythonInterface. As the name suggests, these calls will
be used to call into the Scripted Platform python implementation from
the C++ Scripted Platform plugin instance.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months ago[lldb] Add ScriptedPlatform python implementation
Med Ismail Bennani [Thu, 12 Jan 2023 07:04:24 +0000 (23:04 -0800)]
[lldb] Add ScriptedPlatform python implementation

This patch introduces both the Scripted Platform python base
implementation and an example for it.

The base implementation is embedded in lldb python module under
`lldb.plugins.scripted_platform`.

This patch also refactor the various SWIG methods to create scripted
objects into a single method, that is now shared between the Scripted
Platform, Process and Thread. It also replaces the target argument by a
execution context object.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months ago[lldb] Add Debugger & ScriptedMetadata reference to Platform::CreateInstance
Med Ismail Bennani [Tue, 10 Jan 2023 04:26:19 +0000 (20:26 -0800)]
[lldb] Add Debugger & ScriptedMetadata reference to Platform::CreateInstance

This patch is preparatory work for Scripted Platform support and does
multiple things:

First, it introduces new options for the `platform select` command and
`SBPlatform::Create` API, to hold a reference to the debugger object,
the name of the python script managing the Scripted Platform and a
structured data dictionary that the user can use to pass arbitrary data.

Then, it updates the various `Create` and `GetOrCreate` methods for
the `Platform` and `PlatformList` classes to pass down the new parameter
to the `Platform::CreateInstance` callbacks.

Finally, it updates every callback to reflect these changes.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months ago[lldb/Interpreter] Improve ScriptedPythonInterface::GetStatusFromMethod
Med Ismail Bennani [Fri, 16 Dec 2022 14:26:55 +0000 (06:26 -0800)]
[lldb/Interpreter] Improve ScriptedPythonInterface::GetStatusFromMethod

This patch makes `ScriptedPythonInterface::GetStatusFromMethod` take a
parameter pack as an argument. That will allow it to pass arbitrary
arguments to the python method.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months ago[lldb/Interpreter] Make ScriptedProcessInfo more generic
Med Ismail Bennani [Mon, 5 Dec 2022 21:54:21 +0000 (13:54 -0800)]
[lldb/Interpreter] Make ScriptedProcessInfo more generic

This patch moves the ScriptedProcessInfo class out of the
ScriptedProcess and hoist it as a standalone interpreter class, so it can be
reused with the Scripted Platform.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
18 months ago[OpenMP] Fix dynamic schedule assertion failure on AArch64
Nawrin Sultana [Mon, 5 Dec 2022 23:17:20 +0000 (17:17 -0600)]
[OpenMP] Fix dynamic schedule assertion failure on AArch64

This patch fixes assertion failure in dynamic schedule with 8 byte induction
variable. It uses acquire load instead of relaxed to ensure that steal_lock
pointer is not NULL.

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

18 months ago[Clang] Explicitly move returned values converted to expected
Joseph Huber [Thu, 12 Jan 2023 20:37:11 +0000 (14:37 -0600)]
[Clang] Explicitly move returned values converted to expected

Summary:
These can cause failures on GCC-7 it seems. We should explicitly move
them to prevent this from causing build failures.

18 months ago[clang][dataflow] In optional model, implement `widen` and make `compare` sound.
Yitzhak Mandelbaum [Thu, 15 Dec 2022 15:11:21 +0000 (15:11 +0000)]
[clang][dataflow] In optional model, implement `widen` and make `compare` sound.

This patch includes two related changes:

1. Rewrite `compare` operation to be sound. Current version checks for equality
of `isNonEmptyOptional` on both values, judging the values `Same` when the
results are equal. While that works when both are true, it is problematic when
they are both false, because there are four cases in which that's can occur:
both empty, one empty and one unknown (which is two cases), and both unknown. In
the latter three cases, it is unsound to judge them `Same`. This patch changes
`compare` to explicitly check for case of `both empty` and then judge any other
case `Different`.

2. With the change to `compare`, a number of common cases will no longer
terminate. So, we also implement widening to properly handle those cases and
recover termination.

Drive-by: improve performance of `merge` operation.
Of the new tests, the code before the patch fails
* ReassignValueInLoopToSetUnsafe, and
* ReassignValueInLoopToUnknownUnsafe.

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

18 months agoclang/AMDGPU: Update clang test for llvm change
Matt Arsenault [Thu, 12 Jan 2023 20:22:18 +0000 (15:22 -0500)]
clang/AMDGPU: Update clang test for llvm change

18 months agoPartially reapply "AMDGPU: Invert handling of enqueued block detection"
Matt Arsenault [Sun, 8 Jan 2023 13:15:30 +0000 (08:15 -0500)]
Partially reapply "AMDGPU: Invert handling of enqueued block detection"

This mostly reverts commit 270e96f435596449002fc89962595497481c8770.

Keep the attributor related changes around, but functionally restore
the old behavior as a workaround. Device enqueue goes back to not
working at -O0 with this version.

18 months ago[clang-tidy][NFC] Make CheckFactories::CreateChecks* const
Nathan James [Thu, 12 Jan 2023 19:20:53 +0000 (19:20 +0000)]
[clang-tidy][NFC] Make CheckFactories::CreateChecks* const

There's no reason for these methods to be non-const.

Reviewed By: gribozavr2

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

18 months ago[Attributor] Enable tests and ensure all call sites are updated
Johannes Doerfert [Thu, 12 Jan 2023 19:07:33 +0000 (11:07 -0800)]
[Attributor] Enable tests and ensure all call sites are updated

This reverts commit 9e08b083a09ef4e02fb0a4de2c0d3ddc0eccadde and ensures
signature rewriting also updates dead call sites to avoid the call graph
assertion.

18 months ago[fix] Change formatting to use llvm::formatv Summary:
Alexander Yermolovich [Thu, 12 Jan 2023 19:17:55 +0000 (11:17 -0800)]
[fix] Change formatting to use llvm::formatv Summary:

Missed one formating that was reversed.

Reviewed By: hoy, zhuhan0

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

18 months ago[gn build] Port 944f4b280585
LLVM GN Syncbot [Thu, 12 Jan 2023 19:05:33 +0000 (19:05 +0000)]
[gn build] Port 944f4b280585

18 months ago[clang-format][docs] Add ability to link to specific config options
Emilia Dreamer [Thu, 12 Jan 2023 19:00:10 +0000 (21:00 +0200)]
[clang-format][docs] Add ability to link to specific config options

This allows for the creation of permalinks to specific clang-format
options, for better sharing of a specific option and its options.

(I'm adding the usual clang-format reviewers on this patch because
I don't know any other reviewers that well, perhaps someone with
docs experience should be added instead...)

Note that I wanted to make minimal changes to make this happen and thus
landed on an unideal setup, but to me, it seems like the best out of
worse ones.

I could have made every style option a subheading, which would add
automatically the logic for permalinks and the little paragraph icon for
sharing.

However, this meant that the links themselves would be suboptimal, as
they'd include the whole text of the heading, including the type and
versionbadge, which is needless noise and could change, breaking the
concept of a "permalink". The format of the page could be changed to
put the option names on their own in a heading, and the other info below
it in a paragraph.

As Sphinx seems unwilling to fix https://github.com/sphinx-doc/sphinx/issues/1961,
there isn't a succinct way to change the "id" html field used for
sections

I could have used an add-on (https://github.com/GeeTransit/sphinx-better-subsection),
or made one myself, but I wanted to avoid extra dependencies for no
reason. (plus, I don't know how to make one myself.)

I could have used raw HTML for each heading, but that would immensely
pollute the rst file, which, while it is generated, is currently still
human-readable and it'd be nice for it to stay that way.

Also note that sphinx treats references as case-insensitive, which means
that they will all be lowercased in the resulting HTML. I envisioned
the ability to simply add #OptionName after the URL to get placed right
at the desired config option, which isn't possible without things such
as inline `raw` HTML.

To reconcile that, I added the ¶ paragraph buttons that can be used to
generate the link to the desired section, but since headings are not
actually used, they are faked and literally just a link following each
option, which means they stylistically don't match all other headings.

Also note that this sort-of assumes HTML output. I know Sphinx can
output other formats but I do not know if they are used. A non-html
output could embed unusable ¶ signs everywhere.

I'm okay with this patch being rejected in its current solution, or if
any of the above listed alternatives are better, they could be pursued
instead. In case the downsides of this solution are too much, I will
just create a feature request issue for this and maybe let someone more
experienced with Sphinx handle it, since this is still a feature I would
like to have. (and I do not want to deal with Sphinx at all after
battling with it for a whole day to produce a mediocre result.)

Reviewed By: HazardyKnusperkeks, owenpan, MyDeveloperDay, aaron.ballman

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

18 months ago[DWARFLibrary] Add support to re-construct cu-index
Alexander Yermolovich [Thu, 12 Jan 2023 18:43:08 +0000 (10:43 -0800)]
[DWARFLibrary] Add support to re-construct cu-index

According to DWARF5 specification and gnu specification for DWARF4 the offset
entry in the CU/TU Index is 32 bits. This presents a problem when
.debug_info.dwo in DWP file grows beyond 4GB. The CU Index becomes partially
corrupted.

This diff adds manual parsing of .debug_info.dwo/.debug_abbrev.dwo to
reconstruct CU index in general, and TU index for DWARF5. This is a work around
until DWARF6 spec is finalized.

Next patch will change internal CU/TU struct to 64 bit, and change uses as
necessary. The plan is to land all the patches in one go after all are approved.

This patch originates from the discussion in: https://discourse.llvm.org/t/dwarf-dwp-4gb-limit/63902

Reviewed By: dblaikie

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

18 months ago[LinkerWrapper] Emit assembly files from LTO with `save-temps`
Joseph Huber [Wed, 11 Jan 2023 20:57:39 +0000 (14:57 -0600)]
[LinkerWrapper] Emit assembly files from LTO with `save-temps`

Currently in LTO mode we don't emit any `.s` files for non-NVPTX targets
during LTO. This makes it diffcult to investigate any failures in the
assembly. This patch makes the save-temps mode output an assembly file
and then assembles it separately. I decided to simply invoke `clang` for
this as it would be a lot of effort to invoke the `MCStramer` interface
directly.

Reviewed By: arsenm

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

18 months agoLoopIdiom: avoid patterned memset if constant is not relocatable.
Tim Northover [Wed, 11 Jan 2023 13:52:45 +0000 (13:52 +0000)]
LoopIdiom: avoid patterned memset if constant is not relocatable.

The pattern we're using for the memset_pattern* call gets put into a static
global variable initialized, which means it has to be representable with
relocations on the target. Most `ConstantExpr` instances do not satisfy this
constraint, so avoid all of them for now.

18 months ago[lldb] Fix compile error in Lua typemap
Jonas Devlieghere [Thu, 12 Jan 2023 18:47:14 +0000 (10:47 -0800)]
[lldb] Fix compile error in Lua typemap

Fix error "non-const lvalue reference to type 'lldb::FileSP'  cannot
bind to a value of unrelated type" in Lua typemap.

18 months ago[DirectX backend] add support ConstantBuffer to DXILResource.h
Xiang Li [Thu, 12 Jan 2023 16:56:18 +0000 (11:56 -0500)]
[DirectX backend] add support ConstantBuffer to DXILResource.h

class ConstantBuffer is added to save information for cbuffer.
Also add CBufferDataLayout to calculate the size for cbuffer.

Now always use legacy cbuffer layout.
https://reviews.llvm.org/D134998 will add control to disable legacy cbuffer layout.

Reviewed By: beanz

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

18 months agoclang/OpenCL: Check calling convention in test
Matt Arsenault [Thu, 12 Jan 2023 14:28:51 +0000 (09:28 -0500)]
clang/OpenCL: Check calling convention in test

update_cc_test_checks misses this, so make sure at least one block
enqueue test manually checks the calling convention for the kernel.

18 months ago[libc++] Add missing includes in move_iterator.h
Louis Dionne [Thu, 12 Jan 2023 18:37:49 +0000 (13:37 -0500)]
[libc++] Add missing includes in move_iterator.h

18 months ago[Attributor] Disable breaking tests to unblock bots
Johannes Doerfert [Thu, 12 Jan 2023 18:28:51 +0000 (10:28 -0800)]
[Attributor] Disable breaking tests to unblock bots

The tests will be re-enabled asap as a fix is available.

18 months agoAdd -Wreturn-local-addr, GCC alias for -Wreturn-stack-address
Adrian Dole [Thu, 12 Jan 2023 17:45:03 +0000 (17:45 +0000)]
Add -Wreturn-local-addr, GCC alias for -Wreturn-stack-address

For warning compatibility with GCC.

Reviewed By: cjdb

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

18 months ago[AIX][NFC] Unsupport test when running on AIX
Jake Egan [Thu, 12 Jan 2023 18:18:16 +0000 (13:18 -0500)]
[AIX][NFC] Unsupport test when running on AIX

Previously the test's targets were restricted to avoid the AIX target, but
it should be marked unsupported for system-aix instead because the test
fails to run on AIX as well.

18 months ago[AArch64] Add an error if SVE scalable vector types are used in a context without sve
David Green [Thu, 12 Jan 2023 18:21:28 +0000 (18:21 +0000)]
[AArch64] Add an error if SVE scalable vector types are used in a context without sve

This adds an error message if the isSVESizelessBuiltinType like
__SVFloat32_t / __SVInt64_t / etc, which provide the backing for the
svfloat32_t / svint64_t / etc ACLE types, are used in a function without
SVE. The alternative is a crash in the backend, which is not capable of
handling scalable vector types.

When SVE is available, either through a -march=..+sve option or via a
target(sve) attribute, nothing should change. Without the sve feature,
this patch gives an error for any function arguments, return values and
variable declarations involving the scalable types. Struct/class members
and global variables already give an error. As this can be based on the
current function target attributes, the error sometimes needs to be
handled later than would otherwise if it was just based on the global
target.

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

18 months ago[lldb] Limit `nothreadallow` to Python in SWIG bindings
Jonas Devlieghere [Thu, 12 Jan 2023 18:15:51 +0000 (10:15 -0800)]
[lldb] Limit `nothreadallow` to Python in SWIG bindings

SWIG allows you to partially disable thread support for a given function
in Python with `nothreadallow`. This functionality is limited to Python,
but until SWIG 4.1, it would silently ignore this for other languages,
such as Lua. New versions of SWIG are more strict and therefore we need
to guard this with `SWIGPYTHON`.

For more details on the functionality, I recommend reading the commit
message from 070a1d562b30.

18 months ago[mlir][llvmir] Cleaned up MetadataOp.
Slava Zakharin [Fri, 6 Jan 2023 21:43:22 +0000 (13:43 -0800)]
[mlir][llvmir] Cleaned up MetadataOp.

Added NoTerminator trait, and created a single builder
that adds a block into the region at operation construction.
Added custom assembly parser that automatically adds the body
block, when the region appears to be empty to parseRegion().

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

18 months agoclang: Fix excessively strict test requirements
Matt Arsenault [Thu, 12 Jan 2023 14:09:46 +0000 (09:09 -0500)]
clang: Fix excessively strict test requirements

At most this requires x86 as it's used in the run lines, it
doesn't require a linux host.

18 months ago[clang] Reland parenthesized aggregate init patches
Alan Zhao [Wed, 4 Jan 2023 23:12:00 +0000 (15:12 -0800)]
[clang] Reland parenthesized aggregate init patches

This commit relands the patches for implementing P0960R3 and P1975R0,
which describe initializing aggregates via a parenthesized list.

The relanded commits are:

40c52159d3ee - P0960R3 and P1975R0: Allow initializing aggregates from
  a parenthesized list of values
c77a91bb7ba7 - Remove overly restrictive aggregate paren init logic
32d7aae04fdb - Fix a clang crash on invalid code in C++20 mode

This patch also fixes a crash in the original implementation.
Previously, if the input tried to call an implicitly deleted copy or
move constructor of a union, we would then try to initialize the union
by initializing it's first element with a reference to a union. This
behavior is incorrect (we should fail to initialize) and if the type of
the first element has a constructor with a single template typename
parameter, then Clang will explode. This patch fixes that issue by
checking that constructor overload resolution did not result in a
deleted function before attempting parenthesized aggregate
initialization.

Additionally, this patch also includes D140159, which contains some
minor fixes made in response to code review comments in the original
implementation that were made after that patch was submitted.

Co-authored-by: Sheng <ox59616e@gmail.com>
Fixes #54040, Fixes #59675

Reviewed By: ilya-biryukov

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

18 months agoRevert "[mlir][llvm] Add an explicit void type debug info attribute."
Tobias Gysi [Thu, 12 Jan 2023 17:50:56 +0000 (18:50 +0100)]
Revert "[mlir][llvm] Add an explicit void type debug info attribute."

This commit broke the flang build bots
https://lab.llvm.org/buildbot#builders/175/builds/23560.

This reverts commit a960547ea12128a67c99760f57bf01609a265546.

18 months ago[libc++] Make pmr::monotonic_buffer_resource bump down
Nikolas Klauser [Thu, 12 Jan 2023 17:35:19 +0000 (18:35 +0100)]
[libc++] Make pmr::monotonic_buffer_resource bump down

Bumping down is significantly faster than bumping up. This is ABI breaking, but the ABI of `pmr::monotonic_buffer_resource` was only stabilized in this release cycle, so we can still change it.
For a more detailed explanation why bumping down is better, see https://fitzgeraldnick.com/2019/11/01/always-bump-downwards.html.

Reviewed By: ldionne, #libc

Spies: libcxx-commits

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

18 months ago[libc++] Add [[nodiscard]] extensions in <math.h>
Nikolas Klauser [Sun, 25 Dec 2022 19:13:39 +0000 (20:13 +0100)]
[libc++] Add [[nodiscard]] extensions in <math.h>

There are quite a few functions marked `[[gnu::const]]` inside the compiler. This patch adds `[[nodiscard]]` to libc++-provided overloads of these functions to match the diagnostics produced.

Reviewed By: ldionne, #libc

Spies: libcxx-commits

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

18 months ago[EarlyCSE] Fix crash when optimizing masked loads/stores
Fraser Cormack [Thu, 12 Jan 2023 15:35:24 +0000 (15:35 +0000)]
[EarlyCSE] Fix crash when optimizing masked loads/stores

With opaque pointers, it is possible for EarlyCSE to encounter masked
load/store intrinsics which access the same pointer value but with
different incompatible types. These cannot form valid replacements
(without explicit casting, which we don't yet do even for regular
load/store instructions) so should be prevented.

Reviewed By: nikic

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

18 months ago[libc++][NFC] Rename basic_istream_view::__iterator to __basic_istream_view_iterator
Nikolas Klauser [Wed, 28 Dec 2022 01:44:04 +0000 (02:44 +0100)]
[libc++][NFC] Rename basic_istream_view::__iterator to __basic_istream_view_iterator

This makes it a lot easier to specialize traits types for it, like __segmented_iterator_traits.

Reviewed By: Mordante, #libc

Spies: libcxx-commits

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

18 months ago[libc++][NFC] Qualify declval
Nikolas Klauser [Sun, 31 Jul 2022 19:54:25 +0000 (21:54 +0200)]
[libc++][NFC] Qualify declval

While it's not necessary to qualify calls to `declval` it makes error messages very crypric if the declaration isn't reachable anymore

For example:
```
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__chrono/duration.h:53:66: error: no type named 'type' in 'std::common_type<long, long>'
        typedef chrono::duration<typename common_type<_Rep1, _Rep2>::type,
                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__type_traits/common_type.h:107:14: note: in instantiation of template class 'std::common_type<std::chrono::duration<long, std::ratio<3600, 1>>, std::chrono::duration<long, std::ratio<3600, 1>>>' requested here
        : public common_type<_Tp, _Tp> {};
                 ^
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__chrono/duration.h:279:58: note: in instantiation of template class 'std::common_type<std::chrono::duration<long, std::ratio<3600, 1>>>' requested here
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR typename common_type<duration>::type operator+() const {return typename common_type<duration>::type(*this);}
                                                             ^
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__chrono/duration.h:308:54: note: in instantiation of template class 'std::chrono::duration<long, std::ratio<3600, 1>>' requested here
    typedef duration<     int, ratio_multiply<ratio<24>, hours::period>>         days;
                                                         ^
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__chrono/duration.h:280:81: error: no type named 'type' in 'std::common_type<std::chrono::duration<long, std::ratio<3600, 1>>>'
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR typename common_type<duration>::type operator-() const {return typename common_type<duration>::type(-__rep_);}
                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__chrono/duration.h:308:54: note: in instantiation of template class 'std::chrono::duration<long, std::ratio<3600, 1>>' requested here
    typedef duration<     int, ratio_multiply<ratio<24>, hours::period>>         days;
                                                         ^
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__chrono/duration.h:53:66: error: no type named 'type' in 'std::common_type<int, int>'
        typedef chrono::duration<typename common_type<_Rep1, _Rep2>::type,
                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__type_traits/common_type.h:107:14: note: in instantiation of template class 'std::common_type<std::chrono::duration<int, std::ratio<86400, 1>>, std::chrono::duration<int, std::ratio<86400, 1>>>' requested here
        : public common_type<_Tp, _Tp> {};
                 ^
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__chrono/duration.h:279:58: note: in instantiation of template class 'std::common_type<std::chrono::duration<int, std::ratio<86400, 1>>>' requested here
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR typename common_type<duration>::type operator+() const {return typename common_type<duration>::type(*this);}
                                                             ^
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__chrono/duration.h:309:55: note: in instantiation of template class 'std::chrono::duration<int, std::ratio<86400, 1>>' requested here
    typedef duration<     int, ratio_multiply<ratio<7>,   days::period>>         weeks;
                                                          ^
    19 similar errors omitted
```
changes with qualification added to:
```
    While building module 'std' imported from /home/nikolask/llvm-projects/libcxx/libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp:13:
    In file included from <module-includes>:17:
    In file included from /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/math.h:309:
    In file included from /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/limits:107:
    In file included from /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/type_traits:432:
    In file included from /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__type_traits/common_reference.h:13:
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__type_traits/common_type.h:28:43: error: declaration of 'declval' must be imported from module 'std.utility.__utility.declval' before it is required
    using __cond_type = decltype(false ? std::declval<_Tp>() : std::declval<_Up>());
                                              ^
    /home/nikolask/llvm-projects/libcxx/build/include/c++/v1/__utility/declval.h:30:34: note: declaration here is not visible
    decltype(std::__declval<_Tp>(0)) declval() _NOEXCEPT;
                                     ^
    /home/nikolask/llvm-projects/libcxx/libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp:13:10: fatal error: could not build module 'std'
    #include <functional>
     ~~~~~~~~^
    2 errors generated.
```

Reviewed By: ldionne, Mordante, #libc

Spies: libcxx-commits

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

18 months ago[clangd] Fix tests for CLANGD_TIDY_CHECKS=OFF builds
Kadir Cetinkaya [Thu, 12 Jan 2023 17:25:52 +0000 (18:25 +0100)]
[clangd] Fix tests for CLANGD_TIDY_CHECKS=OFF builds

18 months agoRevert "build: with -DCLANGD_ENABLE_REMOTE=ON, search for grpc++ dependencies too"
Kadir Cetinkaya [Thu, 12 Jan 2023 17:14:05 +0000 (18:14 +0100)]
Revert "build: with -DCLANGD_ENABLE_REMOTE=ON, search for grpc++ dependencies too"

This reverts commit 9f3081dc6fe8447e85741865846840bc491866e5.
Broke clangd buildbots in
https://lab.llvm.org/buildbot/#/builders/131/builds/38935.

18 months ago[flang] Carry the whole polymorphic box in PolymorphicValue
Valentin Clement [Thu, 12 Jan 2023 16:59:18 +0000 (17:59 +0100)]
[flang] Carry the whole polymorphic box in PolymorphicValue

Until now, only the address of the type descriptor was hold in
a PolymorphicValue. In some cases, the element size and the
type code are also needed when creating new polymorphic
descriptors from an element of a polymorphic entity.

This patch updates PolymorphicValue to carry the source
descriptor from which the element is extracted. The source
descriptor is then used when emboxing the element to a new
polymorphic descriptor.

This simplify the code done in D141274 and will be used
when creating polymorphic temporary as well.

Reviewed By: jeanPerier, PeteSteinfeld

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