platform/upstream/llvm.git
21 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

21 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

21 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

21 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.

21 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

21 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

21 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

21 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.

21 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.

21 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

21 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

21 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

21 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.

21 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

21 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)

21 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

21 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

21 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

21 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

21 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.

21 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.

21 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.

21 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.

21 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

21 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

21 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

21 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

21 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

21 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

21 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

21 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.

21 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

21 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

21 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

21 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.

21 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.

21 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

21 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.

21 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.

21 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

21 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>
21 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.

21 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

21 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

21 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.

21 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

21 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

21 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

21 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

21 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

21 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>
21 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>
21 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>
21 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>
21 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>
21 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

21 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.

21 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

21 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

21 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.

21 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

21 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.

21 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

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

21 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

21 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

21 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

21 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.

21 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.

21 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

21 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.

21 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

21 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.

21 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

21 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.

21 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

21 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.

21 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

21 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.

21 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

21 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.

21 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

21 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

21 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

21 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

21 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

21 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

21 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.

21 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

21 months ago[LinkerWrapper] Fix errors from missing files during a dry run
Joseph Huber [Thu, 12 Jan 2023 16:41:18 +0000 (10:41 -0600)]
[LinkerWrapper] Fix errors from missing files during a dry run

Summary:
We use a dry run for testing. If we do a dry run there is no file to
open and try to embed. Intead of erroring just create an empty one.

21 months ago[mlir][llvm] Add an explicit void type debug info attribute.
Tobias Gysi [Thu, 12 Jan 2023 16:32:22 +0000 (17:32 +0100)]
[mlir][llvm] Add an explicit void type debug info attribute.

Previously, the DISubroutineType attribute used an optional result
parameter and an optional argument types array to model the subroutine
signature. LLVM IR debug metadata, on the other hand, has one types
list whose first entry maps to the result type. That entry may be
null to model a void result type. The type list may also be entirely
empty not specifying any type information. The latter is problematic
since the current DISubroutineType attribute cannot express it.

The revision changes DISubroutineTypeAttr to closely follow the
LLVM metadata design. In particular, it uses a single types parameter
array to model the subroutine signature and introduces an explicit
DIVoidResultTypeAttr to model the null entries.

Reviewed By: Dinistro

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

21 months ago[mlir][spirv] Add support for fptoui conversion in ArithToSPIRV
Steve Suzuki [Thu, 12 Jan 2023 16:35:02 +0000 (16:35 +0000)]
[mlir][spirv] Add support for fptoui conversion in ArithToSPIRV

To enable the conversion of arith.fptoui to SPIRV OpConvertFToU

Reviewed By: kuhar

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

21 months ago[mlir] Broadcast scalars when vectorising tensor.extract
Andrzej Warzynski [Fri, 30 Dec 2022 15:22:22 +0000 (15:22 +0000)]
[mlir] Broadcast scalars when vectorising tensor.extract

When vectorizing tensor.extract embedded within linalg.generic, the
default option is to rewrite it as vector.gather. When doing so, we need
to make sure that the corresponding indices are vectorized accordingly.
However, the Linalg vectorizer will not vectorize constants like in the
following example. This is fixed by simply broadcasting %c0 and %c1.

```
  func.func @example(%arg0: tensor<3x3xf32>, %arg2: tensor<1x1x3xf32>) -> tensor<1x1x3xf32> {
    %c0 = arith.constant 1 : index
    %c1 = arith.constant 2 : index
    %1 = linalg.generic {
      (...)
    } outs(...) {
    ^bb0(...):
      %2 = tensor.extract %arg0[%c0, %c1] : tensor<3x3xf32>
      linalg.yield %2 : f32
    } -> tensor<1x1x3xf32>
    return %1 : tensor<1x1x3xf32>
  }
```

This patch makes sure that in the case above (and other similar cases),
the vectorizer broadcasts %c0 and %c1.

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

21 months ago[NFC][LoopFlatten][LoopInterchange] Do not explicitly forget subloops
Joshua Cao [Thu, 5 Jan 2023 04:42:19 +0000 (20:42 -0800)]
[NFC][LoopFlatten][LoopInterchange] Do not explicitly forget subloops

We don't need to explicitly forget subloops because forgetting parent
loops will automatically forget their subloops

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

21 months ago[Clang] Diagnose undefined behavior in a constant expression while evaluating a compo...
Shafik Yaghmour [Thu, 12 Jan 2023 16:02:00 +0000 (08:02 -0800)]
[Clang] Diagnose undefined behavior in a constant expression while evaluating a compound assignment with remainder as operand

Currently we don't diagnose overflow in a constant expression for the case of
compound assignment with remainder as a operand.

In handleIntIntBinOp the arguments LHS and Result can be the same source but in
the check for remainder in this function we assigned to Result before checking
for overflow. In all the other operations the check is done before Result is
assigned to.

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

21 months ago[include-mapping] Print an error message in case the symbol index points to a non...
Viktoriia Bakalova [Thu, 12 Jan 2023 15:39:38 +0000 (15:39 +0000)]
[include-mapping] Print an error message in case the symbol index points to a non-existent page.

Fix: https://github.com/llvm/llvm-project/issues/59610
Differential Revision: https://reviews.llvm.org/D141611

21 months ago[RISCV] Add zvl65536b to the target feature list
Kito Cheng [Thu, 12 Jan 2023 15:51:23 +0000 (23:51 +0800)]
[RISCV] Add zvl65536b to the target feature list

We have zvl65536b listed in RISCVISAInfo.cpp, but we don't have
corresponding target feature in td file.

Reviewed By: reames

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

21 months ago[LVI][CVP] Make use of condition known at use
Nikita Popov [Wed, 11 Jan 2023 10:58:00 +0000 (11:58 +0100)]
[LVI][CVP] Make use of condition known at use

When an instruction is only used in a select or phi operand, we might
be able to make use of additional information from the select/branch
condition. For example in

  %sub = call i16 @llvm.usub.sat.i16(i16 %x, i16 10)
  %cmp = icmp uge i16 %x, 10
  %sel = select i1 %cmp, i16 %sub, i16 42

the usub.sat is only used in a select where %x uge 10 is known to
hold, so we can fold it based on that knowledge.

This addresses the regression reported at
https://reviews.llvm.org/D140798#4039748, but also provides a
solution to a recurring problem we've had, where we fail to make
use of range information after a branch+phi has been converted
into a select. Our current solution to this is to hope that IPSCCP
can perform the fold before that happens, but handling this in LVI
is a somewhat more general solution.

Currently we only make use of this for the willNotOverflow() fold,
but I plan to adjust other folds to use the new API as well.

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

21 months ago[Mem2Reg] Extract code for converting !nonull to assume (NFC)
Nikita Popov [Thu, 12 Jan 2023 13:50:39 +0000 (14:50 +0100)]
[Mem2Reg] Extract code for converting !nonull to assume (NFC)

21 months ago[mlir][llvm] Handle debug metadata arg lists during LLVM IR import.
Tobias Gysi [Thu, 12 Jan 2023 15:10:58 +0000 (16:10 +0100)]
[mlir][llvm] Handle debug metadata arg lists during LLVM IR import.

Debug intrinsics may get an argument list as first parameter. Argument
lists are metadata nodes that refer to a list of SSA values and
constant that are needed to evaluate the debug expression attached to
the intrinsic.

We do currently not model these debug expressions in MLIR. This
revision thus makes sure debug intrinsics that get an argument list
as a first parameter are dropped. It also adds a test to verify
a warning is emitted.

Reviewed By: Dinistro

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