platform/upstream/llvm.git
19 months ago[flang][hlfir] use new runtime for whole allocatable assignment
Jean Perier [Mon, 6 Mar 2023 12:59:15 +0000 (13:59 +0100)]
[flang][hlfir] use new runtime for whole allocatable assignment

- use AssignExplicitLengthCharacter for assignment to whole allocatable
  character with assumed or explicit length.
- use AssignPolymorphic for assignment to whole allocatable
  polymorphic.

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

19 months ago[mlir][IR] Clean up mergeBlockBefore and mergeBlocks
Matthias Springer [Mon, 6 Mar 2023 11:38:18 +0000 (12:38 +0100)]
[mlir][IR] Clean up mergeBlockBefore and mergeBlocks

* `RewriterBase::mergeBlocks` is simplified: it is implemented in terms of `mergeBlockBefore`.
* The signature of `mergeBlockBefore` is consistent with other API (such as `inlineRegionBefore`): an overload for a `Block::iterator` is added.
* Additional safety checks are added to `mergeBlockBefore`: detect cases where the resulting IR could be invalid (no more `dropAllUses`) or partly unreachable (likely a case of incorrect API usage).
* Rename `mergeBlockBefore` to `inlineBlockBefore`.

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

19 months ago[AMDGPU] Use UniformityAnalysis in LateCodeGenPrepare
pvanhout [Mon, 6 Mar 2023 11:28:14 +0000 (12:28 +0100)]
[AMDGPU] Use UniformityAnalysis in LateCodeGenPrepare

Reviewed By: foad

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

19 months ago[NFC][AArch64] Use 'i' to encode the offset form of load/store.
Hsiangkai Wang [Mon, 16 Jan 2023 04:21:51 +0000 (04:21 +0000)]
[NFC][AArch64] Use 'i' to encode the offset form of load/store.

STG, STZG, ST2G, STZ2G are the exceptions to append 'Offset' to name the
offset format of load/store instructions. All other load/store
instructions use 'i' as the appendix. If there is no special reason to
do so, we should make the naming consistent.

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

19 months ago[AMDGPU] Use UniformityAnalysis in CodeGenPrepare
pvanhout [Mon, 6 Mar 2023 08:19:57 +0000 (09:19 +0100)]
[AMDGPU] Use UniformityAnalysis in CodeGenPrepare

A little extra change was needed in UA because it didn't consider
InvokeInst and it made call-constexpr.ll assert.

Reviewed By: sameerds, arsenm

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

19 months ago[include-cleaner] Fix a crash on non-identifier-name symbols.
Haojian Wu [Mon, 6 Mar 2023 10:45:44 +0000 (11:45 +0100)]
[include-cleaner] Fix a crash on non-identifier-name symbols.

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

19 months ago[IR] Remove ConstantExpr::getUMin() (NFC)
Nikita Popov [Mon, 6 Mar 2023 12:12:55 +0000 (13:12 +0100)]
[IR] Remove ConstantExpr::getUMin() (NFC)

This is part of select constant expression removal. As there is
only a single place where this is used, just expand it to explicit
constant folding calls.

(Normally we'd just use the IRBuilder here, but this isn't possible
due to mergeUndefsWith use).

19 months ago[CMake] Enforce LLVM_ENABLE_UNWIND_TABLES
Luís Marques [Mon, 6 Mar 2023 12:08:28 +0000 (13:08 +0100)]
[CMake] Enforce LLVM_ENABLE_UNWIND_TABLES

In D61448 the cmake option `LLVM_ENABLE_UNWIND_TABLES` was added.
Despite the name suggesting that the option enables unwind tables, that
patch only uses it to disable them. That makes a difference for
architectures where unwind tables aren't enabled by default. The lack of
unwind tables impacts backtraces and the current handling of the option
doesn't allow enabling them. This patch makes an ON value of
`LLVM_ENABLE_UNWIND_TABLES` actually enable unwind tables.

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

19 months ago[AMDGPU] Restore temporal divergence in test
Jay Foad [Mon, 6 Mar 2023 11:52:56 +0000 (11:52 +0000)]
[AMDGPU] Restore temporal divergence in test

The loop in this test was supposed to have temporal divergence but this
was broken by r367221. Fix it.

19 months ago[ARM] Fix Chain/Glue Bug in PerformVMOVhrCombine
Archibald Elliott [Thu, 2 Mar 2023 14:46:40 +0000 (14:46 +0000)]
[ARM] Fix Chain/Glue Bug in PerformVMOVhrCombine

In this optimisation, the Chain and Glue from the original CopyFromReg
was being lost by this optimisation, which resulted in miscompiles.

This fix just ensures that the input chains are correctly updated, and
that any any users are also updated with the new chain from the new
CopyFromReg.

Fixes #60510.

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

19 months ago[ARM] Pre-Commit Tests for PR60510
Archibald Elliott [Thu, 2 Mar 2023 14:39:41 +0000 (14:39 +0000)]
[ARM] Pre-Commit Tests for PR60510

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

19 months ago[ARM] Fix Crash in 't'/'w' handling without fp16/bf16
Archibald Elliott [Thu, 2 Mar 2023 13:44:23 +0000 (13:44 +0000)]
[ARM] Fix Crash in 't'/'w' handling without fp16/bf16

After https://reviews.llvm.org/rGff4027d152d0 and
https://reviews.llvm.org/rG7d15212b8c0c we saw crashes in SelectionDAG
when trying to use these constraints when you don't have the fp16 or
bf16 extensions.

However, it is still possible to move 16-bit floating point values into
the right place in S registers with a normal `vmov`, even if we don't
have fp16 instructions we can use within the inline assembly string.
This patch therefore fixes the crash.

I think the reason we weren't getting this crash before is because I
think the __fp16 and __bf16 types got an error diagnostic in the Clang
frontend when you didn't have the right architectural extensions to use
them. This restriction was recently relaxed.

The approach for bf16 needs a bit more explanation. Exactly how BF16 is
legalized was changed in rGb769eb02b526e3966847351e15d283514c2ec767 -
effectively, whether you have the right instructions to get a bf16 value
into/out of a S register with MoveTo/FromHPR depends on hasFullFP16, but
whether you use a HPR for a value of type MVT::bf16 depends on hasBF16.
This is why the tests are not changed by `+bf16` vs `-bf16`, but I've
left both sets of RUN lines in case this changes in the future.

Test Changes:
- Added more testing for testing inline asm (the core part)
- fp16-promote.ll and pr47454.ll show improvements where unnecessary
  fp16-fp32 up/down-casts are no longer emitted. This results in fewer
  libcalls where those casts would be done with a libcall.
- aes-erratum-fix.ll is fairly noisy, and I need to revisit this test so
  that the IR is more minimal than it is right now, because most of the
  changes in this commit do not relate to what AES is actually trying to
  verify.

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

19 months ago[mlir] Apply ClangTidy readability finding (NFC)
Adrian Kuegel [Mon, 6 Mar 2023 11:42:03 +0000 (12:42 +0100)]
[mlir] Apply ClangTidy readability finding (NFC)

19 months ago[AMDGPU] Use UniformityAnalysis in RewriteUndefsForPHI
pvanhout [Mon, 6 Mar 2023 08:26:35 +0000 (09:26 +0100)]
[AMDGPU] Use UniformityAnalysis in RewriteUndefsForPHI

Reviewed By: foad

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

19 months ago[Sanitizers] Error out for -static-libsan on darwin
usama hameed [Mon, 6 Mar 2023 11:08:26 +0000 (16:08 +0500)]
[Sanitizers] Error out for -static-libsan on darwin

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

19 months ago[GlobalOpt] Add SRA test with constant expr GEPs without inbounds.
Florian Hahn [Mon, 6 Mar 2023 11:03:27 +0000 (12:03 +0100)]
[GlobalOpt] Add SRA test with constant expr GEPs without inbounds.

Another test for D144476.

19 months agoExternalFunctions.cpp - fix "unknown pragma 'clang'" MSVC warning. NFCI.
Simon Pilgrim [Mon, 6 Mar 2023 11:01:45 +0000 (11:01 +0000)]
ExternalFunctions.cpp - fix "unknown pragma 'clang'" MSVC warning. NFCI.

19 months agoclang-tidy: Count template constructors in modernize-use-default-member-init
MarcoFalke [Sun, 5 Feb 2023 16:14:22 +0000 (17:14 +0100)]
clang-tidy: Count template constructors in modernize-use-default-member-init

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

19 months agoAMDGPU: Combine down fcopysign f64 magnitude
Matt Arsenault [Thu, 26 Jan 2023 17:20:12 +0000 (13:20 -0400)]
AMDGPU: Combine down fcopysign f64 magnitude

Copy through the low bits and only apply an f32
copysign to the high half. This is effectively
what we do for codegen anyway, but this provides
some combine benefits. The cases involving constants
show some small improvements.

https://reviews.llvm.org/D142682

19 months agoRevert "[Docs] Add my Office Hours"
Paulo Matos [Mon, 6 Mar 2023 09:51:14 +0000 (10:51 +0100)]
Revert "[Docs] Add my Office Hours"

This reverts commit b293de988059cac25c4ad84371be09107de7bbc4.

20 months ago[GlobalOpt] Add tests that only stores initializer, split test file.
Florian Hahn [Mon, 6 Mar 2023 09:50:34 +0000 (10:50 +0100)]
[GlobalOpt] Add tests that only stores initializer, split test file.

Add an additional tests that stores the initializer, but the global
doesn't have a zeroinitializer. Also separate out the tests for storing
initializers.

Add extra tests for D144476.

20 months ago[include-fixer] Add the missing optional header to the STL header list.
Haojian Wu [Mon, 6 Mar 2023 09:33:54 +0000 (10:33 +0100)]
[include-fixer] Add the missing optional header to the STL header list.

20 months ago[mlir][IR] Trigger notifyOperationModified for replacements
Matthias Springer [Mon, 6 Mar 2023 08:24:39 +0000 (09:24 +0100)]
[mlir][IR] Trigger notifyOperationModified for replacements

Each user of the original value is modified in-place. Therefore, the corresponding notification should be triggered.

Also fixes a bug where `RewriterBase::mergeBlocks` did not notify the GreedyPatternRewriteDriver when replacing uses of block arguments. This function does not trigger "operation replaced" notifications, so the GreedyPatternRewriteDriver was not made aware of such IR changes.

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

20 months ago[LowerTypeTests] Avoid creation of select constant expression
Nikita Popov [Fri, 3 Mar 2023 15:22:41 +0000 (16:22 +0100)]
[LowerTypeTests] Avoid creation of select constant expression

LowerTypeTests replaces weak declarations with an icmp+select
constant expressions. As this is not a relocatable expression,
it additionally promotes initializers using it to global ctors.

As part of https://discourse.llvm.org/t/rfc-remove-most-constant-expressions/63179,
I would like to remove the select constant expression, of which LTT
is now the last user. This is a bit tricky, because we now need to
replace a constant with an instruction, which might require
converting intermediate constant expression users to instructions as
well.

We do this using the convertUsersOfConstantsToInstructions() helper.
However, it needs to be slightly extended to also support expansion
of ConstantAggregates. These are important in this context, because
the promotion of initializers to global ctors will produce stores
of such aggregates.

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

20 months ago[SimpleLoopUnswtich] Support zext when injecting invariant conditions
Max Kazantsev [Mon, 6 Mar 2023 08:13:55 +0000 (15:13 +0700)]
[SimpleLoopUnswtich] Support zext when injecting invariant conditions

This patch handles the following case: turn
```
if (x <u Invariant1) {
  if (zext(x) <u Invariant2) {
    ...
  }
}
```
into
```
if (x <u Invariant1) {
  if (zext(Invariant1) <=u Invariant2) { // Unswitch here
    // No check needed
  } else {
    if (zext(x) <u Invariant2) {
      ...
    }
  }
}
```

Differential Revision: https://reviews.llvm.org/D138015
Reviewed By: skatkov

20 months ago[clang] Fix aggregate initialization inside lambda constexpr
Mariya Podchishchaeva [Mon, 6 Mar 2023 08:25:57 +0000 (03:25 -0500)]
[clang] Fix aggregate initialization inside lambda constexpr

Constant evaluator only considered access to `this` pointer to be
possible if `this` poitners was captured. However `this` can also appear if
there was a default member initializer.

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

Reviewed By: shafik

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

20 months ago[flang] Use AssignPolymorphic when LHS is polymorphic
Valentin Clement [Mon, 6 Mar 2023 08:35:36 +0000 (09:35 +0100)]
[flang] Use AssignPolymorphic when LHS is polymorphic

Make use of the new runtime entry point for assignment to
LHS allocatable polymorphic.

Reviewed By: jeanPerier

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

20 months agoReland [AIX][BigArchive] Treat the archive is empty if the first child member offset...
Kai Luo [Mon, 6 Mar 2023 08:01:24 +0000 (16:01 +0800)]
Reland [AIX][BigArchive] Treat the archive is empty if the first child member offset is zero

If the archive contains free list and contains no member file, the buffer length doesn't equal to length of the header.

Reviewed By: Esme, DiggerLin, #powerpc

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

20 months ago[clang][ASTImporter] Add VaList declaration to lookup table.
Balázs Kéri [Mon, 6 Mar 2023 07:55:19 +0000 (08:55 +0100)]
[clang][ASTImporter] Add VaList declaration to lookup table.

The declaration of __builtin_va_list seems to be handled specially
by ASTContext and/or Sema. The normal AST traversal probably can
not find it, therefore it is not added to ASTImporterLookupTable.
If it is not added, errors can occur because a duplicated
VaList declaration is created at import. To fix the problem the
VaList declaration is added manually to ASTImporterLookupTable
at construction.
In special cases this declaration is inside a "invisible" 'std'
namespace that behaves the same way. This namespace must be added
to the table too.

Reviewed By: vabridgers, donat.nagy

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

20 months ago[libc][Obvious] Add back CMake logic which was mistakenly deleted earlier.
Siva Chandra [Mon, 6 Mar 2023 08:24:16 +0000 (00:24 -0800)]
[libc][Obvious] Add back CMake logic which was mistakenly deleted earlier.

20 months ago[mlir][IR][NFC] Move `walk` definitions to header file
Matthias Springer [Mon, 6 Mar 2023 08:11:42 +0000 (09:11 +0100)]
[mlir][IR][NFC] Move `walk` definitions to header file

This allows users to provide custom `Iterator` templates. A new iterator will be added in a subsequent change.

Also rename `makeRange` to `makeIterable` and add a test case for the reverse iterator.

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

20 months ago[NFC] Fix typo in comment
Max Kazantsev [Mon, 6 Mar 2023 08:11:56 +0000 (15:11 +0700)]
[NFC] Fix typo in comment

20 months ago[mlir][Interfaces] ReifyRankedShapedTypeOpInterface returns OpFoldResults
Matthias Springer [Fri, 3 Mar 2023 16:56:39 +0000 (17:56 +0100)]
[mlir][Interfaces] ReifyRankedShapedTypeOpInterface returns OpFoldResults

`reifyResultShapes` now returns `OpFoldResult`s instead of `Value`s. This is often more efficient because many transformations immediately attempt to extract a constant from the reified values.

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

20 months ago[libc] Simplify integration tests by eliminating the artificial sysroot.
Siva Chandra Reddy [Sat, 4 Mar 2023 05:35:45 +0000 (05:35 +0000)]
[libc] Simplify integration tests by eliminating the artificial sysroot.

The test binaries are built like any other executable but with two
additional linker options -static and -nostdlib.

Reviewed By: jhuber6

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

20 months ago[LLVM] Remove XFAIL from merge-equivalent-ranges.ll
Muhammad Omair Javaid [Mon, 6 Mar 2023 07:25:52 +0000 (11:25 +0400)]
[LLVM] Remove XFAIL from merge-equivalent-ranges.ll

This patch removes XFAIL decorator from merge-equivalent-ranges.ll
test.

Merge equilant ranges is passing on aarch64-windows-msvc buildbot
since: https://lab.llvm.org/buildbot/#/builders/120/builds/4291

20 months ago[APInt] Deprecate several functions
Kazu Hirata [Mon, 6 Mar 2023 06:48:28 +0000 (22:48 -0800)]
[APInt] Deprecate several functions

This patch deprecates:

- those functions that have been soft-deprecated
- countPopulation

Note that I've already migrated away from all known uses of these
functions.

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

20 months ago[NFC] Add an invalid test case for C++20 Modules
Chuanqi Xu [Mon, 6 Mar 2023 06:39:27 +0000 (14:39 +0800)]
[NFC] Add an invalid test case for C++20 Modules

Address https://github.com/llvm/llvm-project/issues/61150.

The test is intended to show the polluted operator&& will affect the ODR
checking and the ODR checking here is correct.

20 months ago[ValueMapper] Preserve poison types during value mapping
Carl Ritson [Mon, 6 Mar 2023 02:36:01 +0000 (11:36 +0900)]
[ValueMapper] Preserve poison types during value mapping

Poison needs to be treated directly during type remap otherwise
it will be considered an instance of undef.

Reviewed By: dexonsmith

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

20 months ago[llvm] [NFC] fix comments describing GenericSSAContext
Sameer Sahasrabuddhe [Mon, 6 Mar 2023 04:56:01 +0000 (10:26 +0530)]
[llvm] [NFC] fix comments describing GenericSSAContext

20 months ago[libc][Obvious] Add errno entrypoint for macOS ARM64.
Tue Ly [Mon, 6 Mar 2023 05:06:03 +0000 (00:06 -0500)]
[libc][Obvious] Add errno entrypoint for macOS ARM64.

20 months ago[CostModel][RISCV] Model code size cost for reduction
ShihPo Hung [Thu, 19 Jan 2023 02:02:27 +0000 (18:02 -0800)]
[CostModel][RISCV] Model code size cost for reduction

Since code-size cost doesn't scale linearly with LMUL,
this change is to separate it from throughput.

Reviewed By: reames

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

20 months ago[libc++][spaceship][NFC] Marked `operator<=>` for `move_iterator` and `counted_iterat...
Hristo Hristov [Mon, 6 Mar 2023 00:04:52 +0000 (01:04 +0100)]
[libc++][spaceship][NFC] Marked `operator<=>` for `move_iterator` and `counted_iterator` as implemented

Apprarently implemented as part of:

- `move_iterator` - https://reviews.llvm.org/D117656
- `counted_iterator` - https://reviews.llvm.org/D106205

Reviewed By: #libc, philnik

Spies: libcxx-commits, yaxunl

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

20 months agoAMDGPU: Force sign operand of f64 fcopysign to f32
Matt Arsenault [Thu, 26 Jan 2023 16:18:47 +0000 (12:18 -0400)]
AMDGPU: Force sign operand of f64 fcopysign to f32

The fcopysign DAG operation, unlike the IR one, allows
different types for the sign and magnitude. We can reduce
the bitwidth of the high operand since only the sign bit matters.

The default combine only introduces mixed fcopysign
operand types from fpext/fptrunc. We effectively do this
already during selection, but doing it earlier in the combiner
should expose new combine opportunities (e.g. the existing tests
now eliminate the load of the low half of the double). Unfortunately
this isn't enough to handle the case I'm interested in just yet.

20 months ago[CodeGen] guarantee variable templates are initialized in the reverse instantiation...
Yuanfang Chen [Sun, 5 Mar 2023 23:27:18 +0000 (15:27 -0800)]
[CodeGen] guarantee variable templates are initialized in the reverse instantiation order

Following up D127259.

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

20 months agoAMDGPU: Try to push fneg as integer into select
Matt Arsenault [Mon, 23 Jan 2023 19:42:59 +0000 (15:42 -0400)]
AMDGPU: Try to push fneg as integer into select

I initially attempted to select the source modifier from xor of
a sign mask. This proved to be more difficult since
foldBinOpIntoSelect does not consider free fneg of integers
and undoes the combine.

20 months ago[libc++] Update supported system versions
Nikolas Klauser [Mon, 19 Dec 2022 20:54:05 +0000 (21:54 +0100)]
[libc++] Update supported system versions

Reviewed By: ldionne, #libc, emaste, daltenty

Spies: fsb4000, daltenty, alvinhochun, goncharov, phosek, MaskRay, dalias, q66, thesamesam, emaste, libcxx-commits, arphaman, mstorsjo, #libc_vendors

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

20 months agollvm-reduce: Use explicit output file in a test
Matt Arsenault [Sun, 5 Mar 2023 20:13:23 +0000 (16:13 -0400)]
llvm-reduce: Use explicit output file in a test

The default argument behavior test tries to make use
of the default reduced.ll, so other tests should not try to
write to the same file.

Maybe fixes issue #61132.

20 months ago[clang-tidy] altera-id-dependent-backward-branch: refactor test
Egor Suvorov [Sun, 5 Mar 2023 18:22:10 +0000 (18:22 +0000)]
[clang-tidy] altera-id-dependent-backward-branch: refactor test

This is a preparation for future fixes that need more tests.

* Put all "Inferred Assignments" testing at the end
* Group together ID-dependent variable/member testing
* Group together unused inferred assignments
* Use a literal instead of `get_local_size` which may have special meaning
* Create a new `struct` for each variable because analysis is done per field,
  not per field per instance.

Depends on D145303

Reviewed By: carlosgalvezp

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

20 months ago[sanitizer][NetBSD] Remove ioctl TIOCRCVFRAME and TIOCXMTFRAME
Fangrui Song [Sun, 5 Mar 2023 17:46:42 +0000 (17:46 +0000)]
[sanitizer][NetBSD] Remove ioctl TIOCRCVFRAME and TIOCXMTFRAME

The two macros were removed by
https://mail-index.netbsd.org/source-changes/2022/12/21/msg142441.html

Close #61151

20 months ago[clang-tidy] Extract string header from redundant-string-cstr checker
Mike Crowe [Sun, 5 Mar 2023 17:04:30 +0000 (17:04 +0000)]
[clang-tidy] Extract string header from redundant-string-cstr checker

In preparation for using the implementation of basic_string and
basic_string_view from redundant-string-cstr.cpp in other checks, let's
extract it to a header.

Using the existing <string.h> to provide size_t, using that to define
size_type and using it rather than the previous "size" type makes it
easier to provide the size() method later and makes the implementation
closer to the standard.

Reviewed By: carlosgalvezp

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

20 months ago[AArch64] Add missing bf16 SVE extract vector patterns
David Green [Sun, 5 Mar 2023 16:52:24 +0000 (16:52 +0000)]
[AArch64] Add missing bf16 SVE extract vector patterns

Similar to the inserts, these are the same fp16 inserts but were missing
patterns.

20 months ago[AArch64] Add missing bf16 SVE insert vector patterns.
David Green [Sun, 5 Mar 2023 16:24:43 +0000 (16:24 +0000)]
[AArch64] Add missing bf16 SVE insert vector patterns.

These should be identical to the fp16 SVE inserts but were missing from the
tests and tablegen patterns. They are always legal (not requiring +bf16),
although there are some other issues around bf16 legalization currently.

20 months agoclang-tidy altera-id-dependent-backward-branch: print notes after warning
Egor Suvorov [Sun, 5 Mar 2023 15:44:26 +0000 (15:44 +0000)]
clang-tidy altera-id-dependent-backward-branch: print notes after warning

In Clang notes are typically printed after a corresponding warning, not before.
For example, all notes issued before the first warning are ignored.

Running `clang-tidy --checks=-*,altera-id-dependent-backward-branch a.cpp` on the following code:
```
long get_local_id(int);
void error() {
  int ThreadID = get_local_id(0);
  for (int i = 0; i < ThreadID; i++) {
  }
  for (int i = 0; i < ThreadID; i++) {
  }
}
```
results in two warnings and a single note in between.

Reviewed By: carlosgalvezp

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

20 months ago[mlir][scf] Relax type requirement on for
Jacques Pienaar [Sun, 5 Mar 2023 15:37:58 +0000 (07:37 -0800)]
[mlir][scf] Relax type requirement on for

scf.for loop was restricted to only operate on Index type since
splitting out from affine.for. Relax requirement to allow for signless
integer types additionally. This allows specifying explicitly different
bitwidths for different loops as well as specialize from index to iN
while still using scf.for.

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

20 months ago[libc++][NFC] Add consteval to ranges::__get_wider_signed::__call
Nikolas Klauser [Sun, 5 Mar 2023 13:09:32 +0000 (14:09 +0100)]
[libc++][NFC] Add consteval to ranges::__get_wider_signed::__call

20 months ago[Support] Implement findModulesAndOffsets on Apple 64-bit platforms
Luís Marques [Sun, 5 Mar 2023 12:16:28 +0000 (12:16 +0000)]
[Support] Implement findModulesAndOffsets on Apple 64-bit platforms

To have line number information in stack traces (per stack frame) it's
necessary to implement findModulesAndOffsets.

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

20 months agoRevert "[clang][Interp] Support destructors"
Timm Bäder [Sun, 5 Mar 2023 12:18:13 +0000 (13:18 +0100)]
Revert "[clang][Interp] Support destructors"

This reverts commit 78e4237460bf58f3d6b75f275e0424f38e3b1d04.

This breaks the memory sanitizer builder:
https://lab.llvm.org/buildbot/#/builders/5/builds/31959

20 months ago[VPlan] VPWidenCallRecipe has side-effects if the call has.
Florian Hahn [Sun, 5 Mar 2023 11:08:54 +0000 (12:08 +0100)]
[VPlan] VPWidenCallRecipe has side-effects if the call has.

Handle VPWidenCallRecipe in VPRecipeBase::mayHaveSideEffects by
delegating to the underlying call.

20 months ago[clang][Interp] Support destructors
Timm Bäder [Thu, 5 Jan 2023 12:40:54 +0000 (13:40 +0100)]
[clang][Interp] Support destructors

Use the existing local variable cleanup infrastructure to implement
destruction.

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

20 months ago[clang][Interp][NFCI] Support more expression in initializers
Timm Bäder [Thu, 5 Jan 2023 12:38:57 +0000 (13:38 +0100)]
[clang][Interp][NFCI] Support more expression in initializers

20 months ago[X86] Precommit tests
Kazu Hirata [Sun, 5 Mar 2023 08:48:53 +0000 (00:48 -0800)]
[X86] Precommit tests

This patch precommits more tests for:

https://github.com/llvm/llvm-project/issues/60802

20 months ago[AMDGPU] More precise limit on SALU cycles in s_delay_alu instructions
Jay Foad [Sun, 5 Mar 2023 08:12:02 +0000 (08:12 +0000)]
[AMDGPU] More precise limit on SALU cycles in s_delay_alu instructions

This just tweaks the fix for D145232 to make the limit more precise, so
that we could actually emit a delay of 3 SALU cycles (the maximum) if we
had any SALU instructions that required it.

20 months ago[libc] Switch signal and termios to libc_errno.
Siva Chandra Reddy [Fri, 3 Mar 2023 21:24:09 +0000 (21:24 +0000)]
[libc] Switch signal and termios to libc_errno.

Reviewed By: michaelrj

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

20 months ago[lldb] Remove unused portion of GetFunctionMethodInfo signature (NFC)
Dave Lee [Sun, 5 Mar 2023 01:14:50 +0000 (17:14 -0800)]
[lldb] Remove unused portion of GetFunctionMethodInfo signature (NFC)

This applies to IsClassMethod as well.

20 months ago[libc][Obvious] Add the LIBC_INLINE tag to a function define in a.h file.
Siva Chandra Reddy [Sun, 5 Mar 2023 02:58:45 +0000 (02:58 +0000)]
[libc][Obvious] Add the LIBC_INLINE tag to a function define in a.h file.

20 months ago[libc][NFC] Remove allocator definition in the api-test.
Siva Chandra Reddy [Sun, 5 Mar 2023 00:23:48 +0000 (00:23 +0000)]
[libc][NFC] Remove allocator definition in the api-test.

The integration tests already have allocators so we will get all of them
from there.

20 months agoFix broken link on Clang documentation page
Tulio Leao [Sat, 4 Mar 2023 22:56:15 +0000 (00:56 +0200)]
Fix broken link on Clang documentation page

While browsing the latest [clang manual](https://clang.llvm.org/docs/ReleaseNotes.html), I came across this warning and clicked, but it leads to a broken page, apparently because it's missing the trailing `/`. Seems to be the only place where it's missing in the whole of LLVM monorepo.

{F26690053}
{F26690057}

Reviewed By: brenoguim, royjacobson

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

20 months ago[X86] Add non-BMI tests to bit_ceil.ll
Kazu Hirata [Sat, 4 Mar 2023 20:20:04 +0000 (12:20 -0800)]
[X86] Add non-BMI tests to bit_ceil.ll

20 months ago[OpenMP][CUDA] Get rid of redundant macro def
Shao-Ce SUN [Sat, 4 Mar 2023 17:55:55 +0000 (01:55 +0800)]
[OpenMP][CUDA] Get rid of redundant macro def

Resolve warning of `TARGET_NAME` macro redefinition.

Reviewed By: jhuber6

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

20 months agoRevert "[CMake] Bumps minimum version to 3.20.0."
Mark de Wever [Sat, 4 Mar 2023 17:28:13 +0000 (18:28 +0100)]
Revert "[CMake] Bumps minimum version to 3.20.0."

Some build bots have not been updated to the new minimal CMake version.
Reverting for now and ping the buildbot owners.

This reverts commit 44c6b905f8527635e49bb3ea97dea315f92d38ec.

20 months agoRe-land "[clang][Interp] Implement C++ Range-for loops"
Timm Bäder [Thu, 2 Mar 2023 10:05:45 +0000 (11:05 +0100)]
Re-land "[clang][Interp] Implement C++ Range-for loops"

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

20 months ago[libc++][format] Fixes formatting vector<bool>
Mark de Wever [Fri, 17 Feb 2023 17:55:48 +0000 (18:55 +0100)]
[libc++][format] Fixes formatting vector<bool>

Formatting a const qualified vector<bool> fails to work on libc++. This
is due to our non-conforming type for vector<bool>::const_reference. The
type is a __bit_const_reference<vector> instead of a bool. (This is
fixed in ABI v2.)

This fixes this formatter and enables the test written for it.

Reviewed By: #libc, ldionne

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

20 months ago[libc++][format] Addresses LWG3833.
Mark de Wever [Sun, 12 Feb 2023 18:46:13 +0000 (19:46 +0100)]
[libc++][format] Addresses LWG3833.

  LWG3833 Remove specialization template<size_t N> struct formatter<const charT[N], charT>

Depends on D143845

Reviewed By: #libc, ldionne

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

20 months ago[libc++] Addresses LWG3103.
Mark de Wever [Mon, 6 Feb 2023 20:43:35 +0000 (21:43 +0100)]
[libc++] Addresses LWG3103.

  LWG3103 Errors in taking subview of span should be ill-formed where possible

Note that the real work was already done before, including tests.

Reviewed By: #libc, ldionne

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

20 months ago[CMake] Bumps minimum version to 3.20.0.
Mark de Wever [Tue, 21 Feb 2023 19:09:21 +0000 (20:09 +0100)]
[CMake] Bumps minimum version to 3.20.0.

This partly undoes D137724.

This change has been discussed on discourse
https://discourse.llvm.org/t/rfc-upgrading-llvms-minimum-required-cmake-version/66193

Note this does not remove work-arounds for older CMake versions, that
will be done in followup patches.

Reviewed By: mehdi_amini, MaskRay, ChuanqiXu, to268, thieta, tschuett, phosek, #libunwind, #libc_vendors, #libc, #libc_abi, sivachandra, philnik, zibi

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

20 months ago[LoopInterchange] Remove unused RecurrenceDescriptor object. NFC
Craig Topper [Sat, 4 Mar 2023 06:15:32 +0000 (22:15 -0800)]
[LoopInterchange] Remove unused RecurrenceDescriptor object. NFC

20 months agofeat: harden permissions for all github workflows
Joyce Brum [Sat, 4 Mar 2023 05:34:25 +0000 (21:34 -0800)]
feat: harden permissions for all github workflows

Signed-off-by: Joyce Brum <joycebrum@google.com>
Reviewed By: tstellar

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

20 months ago[lldb] Simplify error string in ScriptedInterface (NFC)
Med Ismail Bennani [Sat, 4 Mar 2023 03:44:44 +0000 (19:44 -0800)]
[lldb] Simplify error string in ScriptedInterface (NFC)

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[gn build] Port 3014a1c5a130
LLVM GN Syncbot [Sat, 4 Mar 2023 03:33:20 +0000 (03:33 +0000)]
[gn build] Port 3014a1c5a130

20 months ago[lldb/swig] Fix ref counting issue in SBProcess::GetScriptedImplementation
Med Ismail Bennani [Fri, 3 Mar 2023 20:35:42 +0000 (12:35 -0800)]
[lldb/swig] Fix ref counting issue in SBProcess::GetScriptedImplementation

When using SBProcess::GetScriptedImplementation in python, if the
process has a valid implementation, we returned a reference of the
object without incrementing the reference counting. That causes the
interpreter to crash after accessing the reference several times.

This patch address this by incrementing the reference count when passing
the valid object reference.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb] Improve error reporting in ScriptedInterface
Med Ismail Bennani [Fri, 17 Feb 2023 01:34:37 +0000 (17:34 -0800)]
[lldb] Improve error reporting in ScriptedInterface

This patch improve error reporting in the Scripted Interface.

Previously, it would only log the content of the Status object and
overwrite it with the error_msg function parameter.

This patch changes that to append the Status object content to the
`error_msg` string.

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/Plugins] Add memory writing capabilities to Scripted Process
Med Ismail Bennani [Sat, 4 Mar 2023 03:30:56 +0000 (19:30 -0800)]
[lldb/Plugins] Add memory writing capabilities to Scripted Process

This patch adds memory writing capabilities to the Scripted Process plugin.

This allows to user to get a target address and a memory buffer on the
python scripted process implementation that the user can make processing
on before performing the actual write.

This will also be used to write trap instruction to a real process
memory to set a breakpoint.

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/Plugins] Clean-up Scripted Process interface requirements (NFC)
Med Ismail Bennani [Thu, 16 Feb 2023 23:15:52 +0000 (15:15 -0800)]
[lldb/Plugins] Clean-up Scripted Process interface requirements (NFC)

The goal of the simple patch is to clean-up the scripted process
interface by removing methods that were introduced with the interface
originally, but that were never really implemented (get_thread_with_id &
get_registers_for_thread).

This patch also changes `get_memory_region_containing_address` to have a
base implementation (that retunrs `None`), instead of forcing the user
to override it in their derived class.

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/Plugins] Add Attach capabilities to ScriptedProcess
Med Ismail Bennani [Fri, 3 Mar 2023 23:17:59 +0000 (15:17 -0800)]
[lldb/Plugins] Add Attach capabilities to ScriptedProcess

This patch adds process attach capabilities to the ScriptedProcess
plugin. This doesn't really expects a PID or process name, since the
process state is already script, however, this allows to create a
scripted process without requiring to have an executuble in the target.

In order to do so, this patch also turns the scripted process related
getters and setters from the `ProcessLaunchInfo` and
`ProcessAttachInfo` classes to a `ScriptedMetadata` instance and moves
it in the `ProcessInfo` class, so it can be accessed interchangeably.

This also adds the necessary SWIG wrappers to convert the internal
`Process{Attach,Launch}InfoSP` into a `SB{Attach,Launch}Info` to pass it
as argument the scripted process python implementation and convert it
back to the internal representation.

rdar://104577406

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb] Add scripted process launch/attach option to {,platform }process commands
Med Ismail Bennani [Fri, 3 Mar 2023 23:27:07 +0000 (15:27 -0800)]
[lldb] Add scripted process launch/attach option to {,platform }process commands

This patch does several things:

First, it refactors the `CommandObject{,Platform}ProcessObject` command
option class into a separate `CommandOptionsProcessAttach` option group.

This will make sure both the `platform process attach` and `process attach`
command options will always stay in sync without having with duplicate
them each time. But more importantly, making this class an `OptionGroup`
allows us to combine with a `OptionGroupPythonClassWithDict` to add
support for the scripted process managing class name and user-provided
dictionary options.

This patch also improves feature parity between `ProcessLaunchInfo` and
`ProcessAttachInfo` with regard to ScriptedProcesses, by exposing the
various getters and setters necessary to use them through the SBAPI.

This is foundation work for adding support to "attach" to a process from
the scripted platform.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/Plugins] Add ScriptedProcess::GetCapabilities affordance (NFC)
Med Ismail Bennani [Tue, 31 Jan 2023 00:53:39 +0000 (16:53 -0800)]
[lldb/Plugins] Add ScriptedProcess::GetCapabilities affordance (NFC)

This patch introduces a new method to the Scripted Process interface,
GetCapabilities.

This returns a dictionary that contains a list of flags that the
ScriptedProcess instance supports. This can be used for instance, to
force symbol lookup, when loading dynamic libraries in the scripted process.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb] Extend SWIG SBProcess interface with WriteMemoryAsCString method
Med Ismail Bennani [Sat, 4 Mar 2023 02:52:15 +0000 (18:52 -0800)]
[lldb] Extend SWIG SBProcess interface with WriteMemoryAsCString method

This patch tries to address an interoperability issue when writing
python string into the process memory.

Since the python string is not null-terminated, it would still be
written to memory however, when trying to read it again with
`SBProcess::ReadCStringFromMemory`, the memory read would fail, since
the read string doens't contain a null-terminator, and therefore is not
a valid C string.

To address that, this patch extends the `SBProcess` SWIG interface to
expose a new `WriteMemoryAsCString` method that is only exposed to the
SWIG target language. That method checks that the buffer to write is
null-terminated and otherwise, it appends a null byte at the end of it.

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months agoReapply: [WebAssembly] Implement build-id feature
Derek Schuff [Thu, 2 Mar 2023 23:52:25 +0000 (15:52 -0800)]
Reapply: [WebAssembly] Implement build-id feature

Implement the --build-id flag similarly to ELF, and generate a
build_id section according to the WebAssembly tool convention
specified in https://github.com/WebAssembly/tool-conventions/pull/183

The default style ("fast" aka "tree") hashes the contents of the
output and (unlike ELF) generates a v5 UUID based on the hash (using a
random namespace). It also supports generating a random v4 UUID, a
sha1 hash, and a user-specified string (as ELF does).

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

Fix MSVC build by std::copy on the underying buffer rather than
directly from std::array to llvm::MutableArrayRef

20 months ago[mlir] Update signal failure error message
Jacques Pienaar [Sat, 4 Mar 2023 01:06:48 +0000 (17:06 -0800)]
[mlir] Update signal failure error message

User was confused by previous wording when pass was reported as failing
due to signal in unrelated thread being caught.

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

20 months ago[analyzer] Remove the loop from the exploded graph caused by missing information...
isuckatcs [Fri, 10 Feb 2023 17:07:31 +0000 (18:07 +0100)]
[analyzer] Remove the loop from the exploded graph caused by missing information in program points

This patch adds CFGElementRef to ProgramPoints
and helps the analyzer to differentiate between
two otherwise identically looking ProgramPoints.

Fixes #60412

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

20 months ago[StripDebugInfo] Reuse DebugInfoFinder for findind Live CUs
Maksim Sabianin [Fri, 3 Mar 2023 23:20:27 +0000 (15:20 -0800)]
[StripDebugInfo] Reuse DebugInfoFinder for findind Live CUs

Previous search does not take into account @llvm.dbg.* intrinsics
and debug types information while DebugInfoFinder takes into account
such information.

Reviewed By: aprantl

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

20 months ago[lld-macho] Avoid running LTO pipeline for no files
Keith Smiley [Fri, 3 Mar 2023 21:27:03 +0000 (13:27 -0800)]
[lld-macho] Avoid running LTO pipeline for no files

If no bitcode files are given as inputs but -object_path_lto is passed
we should avoid running the LTO pipeline.

This mirrors this patch from the ELF port https://github.com/llvm/llvm-project/commit/f3994e4dfa0214b2a09a0e327ba37e6b38bbcdb3

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

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

20 months ago[gn build] Port 0eb59cab95a0
LLVM GN Syncbot [Fri, 3 Mar 2023 23:01:08 +0000 (23:01 +0000)]
[gn build] Port 0eb59cab95a0

20 months agoAPFloat: Add classify
Matt Arsenault [Thu, 2 Mar 2023 09:44:05 +0000 (05:44 -0400)]
APFloat: Add classify

20 months agoAttributor: Fix typos
Matt Arsenault [Fri, 24 Feb 2023 22:27:40 +0000 (18:27 -0400)]
Attributor: Fix typos

20 months agoAMDGPU: Use static constexpr instead of static const
Matt Arsenault [Fri, 3 Mar 2023 22:50:34 +0000 (18:50 -0400)]
AMDGPU: Use static constexpr instead of static const

Not sure why this was broken, but I was seeing this linker error:

ld64.lld: error: undefined symbol: (anonymous namespace)::AMDGPUInsertDelayAlu::DelayInfo::SALU_CYCLES_MAX
>>> referenced by AMDGPUInsertDelayAlu.cpp:129 (/Users/matt/src/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp:129)

20 months agoADT: Move some FPClassTest utility functions out of instcombine
Matt Arsenault [Thu, 2 Mar 2023 09:47:52 +0000 (05:47 -0400)]
ADT: Move some FPClassTest utility functions out of instcombine

20 months agoADT: Move FPClassTest printing functions to common place
Matt Arsenault [Fri, 24 Feb 2023 14:35:49 +0000 (10:35 -0400)]
ADT: Move FPClassTest printing functions to common place

20 months ago[mlir][Parser] Make parse{Attribute,Type} null-terminate input
Rahul Kayaith [Thu, 2 Mar 2023 21:06:44 +0000 (16:06 -0500)]
[mlir][Parser] Make parse{Attribute,Type} null-terminate input

`parseAttribute` and `parseType` require null-terminated strings as
input, but this isn't great considering the argument type is
`StringRef`. This changes them to copy to a null-terminated buffer by
default, with a `isKnownNullTerminated` flag added to disable the
copying.

closes #58964

Reviewed By: rriddle, kuhar, lattner

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

20 months ago[AArch64] Add missing bf16 load insert pattern
David Green [Fri, 3 Mar 2023 22:00:41 +0000 (22:00 +0000)]
[AArch64] Add missing bf16 load insert pattern

We have LDRHui load patterns but would fail to select from unscaled offsets.
This adds the missing pattern.