platform/upstream/llvm.git
18 months ago[SCEV] Increase FoldID bits size cover common cases.
Florian Hahn [Fri, 24 Feb 2023 08:41:52 +0000 (09:41 +0100)]
[SCEV] Increase FoldID bits size cover common cases.

This should fix the regressions introduced by a53d940cee6f by making
sure no dynamic allocations are needed in the common case, while
retaining support for arbitrary SCEV expressions.

Alternative to D144335.

Compile-time impact:
* NewPM-O3: -0.11%
* NewPM-ReleaseThinLTO: -0.10%
*NewPM-ReleaseLTO-g: -0.08%

https://llvm-compile-time-tracker.com/compare.php?from=df016a9525e5722dfd1e1e1632cec3ed7b33bc8a&to=c1c64de4a973bcecaddbc4038a539234eb39413b&stat=instructions:u

Reviewed By: vitalybuka, nikic

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

18 months ago[flang] Perform default value initialization on abstract type if needed
Valentin Clement [Fri, 24 Feb 2023 08:21:45 +0000 (09:21 +0100)]
[flang] Perform default value initialization on abstract type if needed

Abstract derived-type components can have default value so perform
the default value initialization if necessary.

```
type, abstract :: a
  integer :: b = 10
end type

type, extends(a) :: b
  integer :: d
end type
```

Reviewed By: klausler

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

18 months ago[flang][hlfir] Array constructor lowering [part 4/4]
Jean Perier [Fri, 24 Feb 2023 08:18:15 +0000 (09:18 +0100)]
[flang][hlfir] Array constructor lowering [part 4/4]

Enable character and derived type array constructor lowering.
Nothing special needs to be done other than lowering the types
before the array constructor lowering.
Derived type are forced to use the runtime for now to avoid
undesired usage of user defined assignment that hlfir.assign
may trigger when using the runtime.

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

18 months ago[NFC] Make FPClassTest a bitmask enumeration
Serge Pavlov [Fri, 24 Feb 2023 08:11:16 +0000 (15:11 +0700)]
[NFC] Make FPClassTest a bitmask enumeration

This is recommit of 2e416cdd52, fixed to be accepatble by GCC.
The original commit message is below.

With this change bitwise operations are allowed for FPClassTest
enumeration, it must simplify using this type. Also some functions
changed to get argument of type FPClassTest instead of unsigned.

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

18 months ago[flang][hlfir] Array constructor lowering [part 3/4]
Jean Perier [Fri, 24 Feb 2023 08:09:52 +0000 (09:09 +0100)]
[flang][hlfir] Array constructor lowering [part 3/4]

Lower the cases that require runtime support to deal
with the allocation, reallocation, or copy of ac-values to
the array constructor storage.

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

18 months agoASAN: keep support for Global::location
Martin Liska [Mon, 20 Feb 2023 20:06:08 +0000 (21:06 +0100)]
ASAN: keep support for Global::location

We as GCC still emit __asan_global_source_location for global variables
and we would like to use it in the future. On other hand, we don't
support llvm-symbolizer and the default libbacktraace symbolizer
does not support location info.

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

18 months ago[flang] Do not include dangling ac-implied-do-index in folded shape inquiry
Jean Perier [Fri, 24 Feb 2023 08:07:25 +0000 (09:07 +0100)]
[flang] Do not include dangling ac-implied-do-index in folded shape inquiry

The current code was replacing inquiry to array constructor whose
ac-value shape depends on ac-implied-do-index with an expression
using the ac-implied-do-index without the implied-do (folding the
first case added in the test as in the second case with a regular
symbol).

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

18 months ago[flang] Preserve useResultSymbolShape_ option when folding array constructor shape
Jean Perier [Fri, 24 Feb 2023 08:06:14 +0000 (09:06 +0100)]
[flang] Preserve useResultSymbolShape_ option when folding array constructor shape

By default evaluate::GetShape(expr) may return a compiler generated expression
using symbols that are part of function interfaces if there are function
references in "expr".
It is not right to replace an inquiry of "expr" with such compiler
generated expression since the call context would be lost, along with
the meaning of the inquiry expression.
Inquiry folding uses GetContextFreeShape(expr) that sets-up
useResultSymbolShape_ in GetShapeHelper to prevent such bad rewrites. But this did not
work properly with array constructor: GetShapeHelper made a call to
GetShape, ignoring and losing the "useResultSymbolShape_" instruction.

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

18 months ago[gn build] Port fffbfe7c0ca8
LLVM GN Syncbot [Fri, 24 Feb 2023 07:34:42 +0000 (07:34 +0000)]
[gn build] Port fffbfe7c0ca8

18 months agoRestore "[Darwin] Apply workaround to make symbolication in iOS simulators work"
Julian Lettner [Fri, 24 Feb 2023 07:28:59 +0000 (23:28 -0800)]
Restore "[Darwin] Apply workaround to make symbolication in iOS simulators work"

This reverts commit d8b8911d58dba73fd7a28210d8d3e780ae881179.

18 months ago[WebAssembly] Split WebAssemblyUtils to fix library layering for MC tools.
Craig Topper [Fri, 24 Feb 2023 07:23:40 +0000 (23:23 -0800)]
[WebAssembly] Split WebAssemblyUtils to fix library layering for MC tools.

WebAssemblyUtils depends on CodeGen which depends on all middle end
optimization libraries.

This component is used by WebAssembly's AsmParser, Disassembler, and
MCTargetDesc libraries. Because of this, any MC layer tool built with
WebAssembly support includes a larger portion of LLVM than it should.

To fix this I've created an MC only version of WebAssemblyTypeUtilities.cpp
in MCTargetDesc to be used by the MC components.

This shrinks llvm-objdump and llvm-mc on my local release+asserts
build by 5-6 MB.

Reviewed By: MaskRay, aheejin

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

18 months ago[clang-tidy] Fix readability-identifer-naming Hungarian CString options
Alexis Murzeau [Fri, 24 Feb 2023 06:53:00 +0000 (06:53 +0000)]
[clang-tidy] Fix readability-identifer-naming Hungarian CString options

When reading readability-identifier-naming.HungarianNotation.CString
options, correctly use the type string stored in CStr.second instead of
the option name (CStr.first) as the HNOption.CString map key.

This will make CString options really working and properly parsed by the
checker.

Reviewed By: carlosgalvezp

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

18 months ago[AMDGPU] Autogenerate carryout-selection.ll, uaddo.ll, usubo.ll (NFC)
Vikram [Wed, 15 Feb 2023 11:05:31 +0000 (11:05 +0000)]
[AMDGPU] Autogenerate carryout-selection.ll, uaddo.ll, usubo.ll (NFC)

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

18 months agoAdd test for issue 60486
Chuanqi Xu [Fri, 24 Feb 2023 06:27:51 +0000 (14:27 +0800)]
Add test for issue 60486

Close https://github.com/llvm/llvm-project/issues/60486.

When I look back at this problem again, it only appears if we specify it
with `-fmodule-file=<BMI-path>`. And it disappears after we specify it
as `-fmodule-file=<module-name>=<BMI-path>`. Since we want to depreacate
the form `-fmodule-file=<BMI-path>`, we can think the problem goes
away.

18 months agoFix internal link in the MLIR doc
Mehdi Amini [Fri, 24 Feb 2023 06:28:34 +0000 (23:28 -0700)]
Fix internal link in the MLIR doc

18 months ago[FunctionImport] Change IRMover report_fatal_error to a proper error
Fangrui Song [Fri, 24 Feb 2023 05:45:14 +0000 (21:45 -0800)]
[FunctionImport] Change IRMover report_fatal_error to a proper error

Conflicting module flags leads to a proper error for regular LTO but a crash
(report_fatal_error) for ThinLTO. Switch to createStringError to fix the crash
and match regular LTO.

18 months ago[scudo] Accessing PossibleRegions requires lock
Chia-hung Duan [Fri, 24 Feb 2023 01:59:01 +0000 (01:59 +0000)]
[scudo] Accessing PossibleRegions requires lock

It is preferable to use `std::shared_mutex` style mutex. Will switch to
using it when it's available.

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

18 months ago[AVR][MC] Add ELF flag 'EF_AVR_LINKRELAX_PREPARED' to OBJ files
Ben Shi [Thu, 23 Feb 2023 07:06:38 +0000 (15:06 +0800)]
[AVR][MC] Add ELF flag 'EF_AVR_LINKRELAX_PREPARED' to OBJ files

This is in accordance with avr-gcc, even '-mno-relax' is specified
to avr-gcc, this flag will also be added to the output relocatables.

With this flag set, the GNU ld will perform long call -> short call
optimization for AVR, otherwise not.

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

Reviewed By: MaskRay, jacquesguan, aykevl

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

18 months ago[libc] Remove a now uneccesary CMake policy.
Siva Chandra Reddy [Thu, 2 Feb 2023 07:23:52 +0000 (07:23 +0000)]
[libc] Remove a now uneccesary CMake policy.

Reviewed By: jhuber6

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

18 months ago[LangRef] Correct value ranges for address space, vector, and float bit sizes.
Michael Liao [Fri, 17 Feb 2023 20:58:23 +0000 (15:58 -0500)]
[LangRef] Correct value ranges for address space, vector, and float bit sizes.

- The current implementation checks them for 24-bit inegers but the
  document says 23-bit one effectively by listing the range as [1,2^23).
- Minor error message correction.

Reviewed By: arsenm

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

18 months ago[libc] Introduce a target named libc-unit-tests to run just the unit tests.
Siva Chandra Reddy [Thu, 23 Feb 2023 19:28:22 +0000 (19:28 +0000)]
[libc] Introduce a target named libc-unit-tests to run just the unit tests.

The target "check-libc" now runs all enabled tests which, depending on
the build mode, includes the unit tests, the integration tests and the api
test.

Reviewed By: jhuber6

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

18 months agoRevert "[Darwin] Apply workaround to make symbolication in iOS simulators work"
Julian Lettner [Fri, 24 Feb 2023 02:12:52 +0000 (18:12 -0800)]
Revert "[Darwin] Apply workaround to make symbolication in iOS simulators work"

This reverts commit ebd8eee62a431a6744c3f187fcda58e5dea08499.

18 months agoUse `analyzeKnownBitsFromAndXorOr` in `SimplifyDemandedUseBits` for and/xor/or
Noah Goldstein [Thu, 23 Feb 2023 19:50:02 +0000 (13:50 -0600)]
Use `analyzeKnownBitsFromAndXorOr` in `SimplifyDemandedUseBits` for and/xor/or

There are extra patterns that have for these three logic operations
that aren't covered in `SimplifyDemandedUseBits`. To avoid duplicating
the code, just use `analyzeKnownBitsFromAndXorOr` in
`SimplifyDemandedUseBits` to get full coverage.

Reviewed By: nikic

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

18 months agoAdd logic for tracking lowbit of (and/xor/or X, (add/sub X, Odd))
Noah Goldstein [Thu, 26 Jan 2023 17:35:51 +0000 (11:35 -0600)]
Add logic for tracking lowbit of (and/xor/or X, (add/sub X, Odd))

Any case of logicop + add/sub(Odd) we can prove the low bit is either
zero/non-zero.

Alive2 Links:
    xor:
        sub x, C: https://alive2.llvm.org/ce/z/aaABdS
        sub C, x: https://alive2.llvm.org/ce/z/2W-ZJ7
        add C, x: https://alive2.llvm.org/ce/z/pzDkte
    or:
        sub x, C: https://alive2.llvm.org/ce/z/xd-bcP
        sub C, x: https://alive2.llvm.org/ce/z/p8hXJF
        add C, x: https://alive2.llvm.org/ce/z/osmkB6
    and:
        sub x, C: https://alive2.llvm.org/ce/z/D_NNxR
        sub C, x: https://alive2.llvm.org/ce/z/N_5C62
        add C, x: https://alive2.llvm.org/ce/z/4cy7a4

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

18 months agoAdd helper for handling `computeKnownBits` for and/xor/or; NFC
Noah Goldstein [Sun, 29 Jan 2023 22:02:38 +0000 (16:02 -0600)]
Add helper for handling `computeKnownBits` for and/xor/or; NFC

This change just factors out the existing logic for and/xor/or and
puts them in a publicly available helper.  functionality is the same.

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

18 months agoAdd tests for KnownBits of (and/xor/or X, (add/sub X, OddV)); NFC
Noah Goldstein [Sun, 29 Jan 2023 22:02:32 +0000 (16:02 -0600)]
Add tests for KnownBits of (and/xor/or X, (add/sub X, OddV)); NFC

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

18 months ago[M68k] Provide exception pointer and selector registers
Min-Yih Hsu [Thu, 19 Jan 2023 19:44:20 +0000 (11:44 -0800)]
[M68k] Provide exception pointer and selector registers

Using d0 for exception pointer and d1 for selector, as suggested by GCC.

18 months agoRevert "Revert "[Tooling/Inclusion] Handle std::get symbol.""
Kadir Cetinkaya [Fri, 24 Feb 2023 00:05:15 +0000 (01:05 +0100)]
Revert "Revert "[Tooling/Inclusion] Handle std::get symbol.""

This reverts commit 7c9b15fbaeb2846ad25e797d55ffe1ccef9e1379. Breakage
was in downstream code.

18 months ago[OpenMP] Fix the wrong use of `fopen`
Shilei Tian [Fri, 24 Feb 2023 00:12:51 +0000 (19:12 -0500)]
[OpenMP] Fix the wrong use of `fopen`

This patch fixes the wrong use of `fopen`.

Fix https://github.com/llvm/llvm-project/issues/60934

Reviewed By: jdoerfert

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

18 months ago[PGO] Setting ValueProfNode Array's Alignment
Qiongsi Wu [Thu, 23 Feb 2023 22:31:50 +0000 (17:31 -0500)]
[PGO] Setting ValueProfNode Array's Alignment

`instrprof` currently does not set `__llvm_prf_vnds`'s alignment after creating it. The consequence is that the alignment is set to 16 later (https://github.com/llvm/llvm-project/blob/c0f3ac1d0015fd051144a987ff500b888a32be86/llvm/lib/IR/DataLayout.cpp#L1019). This can lead to undefined behaviour when we calculate `NumVNodes` in `lprofGetLoadModuleSignature` (https://github.com/llvm/llvm-project/blob/c0f3ac1d0015fd051144a987ff500b888a32be86/compiler-rt/lib/profile/InstrProfilingMerge.c#L32). The reason is that when the `__llvm_prf_vnds` array is 16 byte aligned, `__llvm_profile_end_vnodes() - __llvm_profile_begin_vnodes()` may not be a multiple of the size of ValueProfNode (which is 24, 20 on 32 bit targets).

This patch sets `__llvm_prf_vnds`'s alignment to its ABI alignment, which always divides its size. Then `__llvm_profile_end_vnodes() - __llvm_profile_begin_vnodes()` will be a multiple of `sizeof(ValueProfNode)`.

Reviewed By: w2yehia, MaskRay

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

18 months ago[clang] fix intendation in newly added release note
Alex Lorenz [Thu, 23 Feb 2023 23:52:21 +0000 (15:52 -0800)]
[clang] fix intendation in newly added release note

This fixes the llvm docs build bot.

18 months ago[mlir][doc] Remove section about now removed `useFoldAPI` option
Markus Böck [Thu, 23 Feb 2023 23:25:17 +0000 (00:25 +0100)]
[mlir][doc] Remove section about now removed `useFoldAPI` option

18 months ago[RISCV] Add vendor-defined XTheadFMemIdx (FP Indexed Memory Operations) extension
Manolis Tsamis [Thu, 23 Feb 2023 23:18:55 +0000 (00:18 +0100)]
[RISCV] Add vendor-defined XTheadFMemIdx (FP Indexed Memory Operations) extension

The vendor-defined XTHeadFMemIdx (no comparable standard extension exists
at the time of writing) extension adds indexed load/store instructions
for floating-point registers.

It is supported by the C9xx cores (e.g., found in the wild in the
Allwinner D1) by Alibaba T-Head.

The current (as of this commit) public documentation for this
extension is available at:
  https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.2.2/xthead-2023-01-30-2.2.2.pdf

Support for these instructions has already landed in GNU Binutils:
  https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=f511f80fa3fcaf6bcbe727fb902b8bd5ec8f9c20

Depends on D144249

Reviewed By: craig.topper

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

18 months ago[scudo] Mark all blocks in a range without visiting each of them
Chia-hung Duan [Thu, 23 Feb 2023 22:51:29 +0000 (22:51 +0000)]
[scudo] Mark all blocks in a range without visiting each of them

When all the blocks in the group are known to be used, we should just
mark the pages in the range as all counted instead of visiting each of
them. This will reduce the time of marking free blocks especially for
smaller size class.

Reviewed By: cferris

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

18 months agoRevert "[Tooling/Inclusion] Handle std::get symbol."
Caroline Tice [Thu, 23 Feb 2023 23:10:36 +0000 (15:10 -0800)]
Revert "[Tooling/Inclusion] Handle std::get symbol."

This reverts commit cbcb3eef70def3509bdffd4fe1ebfb6422afeaa2.

Causing many clangd test breakages, similar to:

error: no matching constructor for initialization of 'llvm::SmallVector<clang::tooling::stdlib::Header>'
                : llvm::SmallVector<clang::tooling::stdlib::Header>(
                  ^

18 months ago[RISCV] Add vendor-defined XTheadMemIdx (Indexed Memory Operations) extension
Manolis Tsamis [Thu, 23 Feb 2023 23:04:08 +0000 (00:04 +0100)]
[RISCV] Add vendor-defined XTheadMemIdx (Indexed Memory Operations) extension

The vendor-defined XTHeadMemIdx (no comparable standard extension exists
at the time of writing) extension adds indexed load/store instructions
as well as load/store and update register instructions.

It is supported by the C9xx cores (e.g., found in the wild in the
Allwinner D1) by Alibaba T-Head.

The current (as of this commit) public documentation for this
extension is available at:
  https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.2.2/xthead-2023-01-30-2.2.2.pdf

Support for these instructions has already landed in GNU Binutils:
  https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=27cfd142d0a7e378d19aa9a1278e2137f849b71b

Depends on D144002

Reviewed By: craig.topper

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

18 months ago[clang][driver] Handle '-mrelax' and '-mno-relax' for AVR
Ben Shi [Thu, 23 Feb 2023 07:39:02 +0000 (15:39 +0800)]
[clang][driver] Handle '-mrelax' and '-mno-relax' for AVR

Reviewed By: MaskRay, aykevl

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

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

18 months ago[llvm] Teach GlobalDCE about dso_local_equivalent
Leonard Chan [Tue, 18 Oct 2022 18:23:48 +0000 (18:23 +0000)]
[llvm] Teach GlobalDCE about dso_local_equivalent

This way, C++ relative-vtables can also participate in GlobalDCE. This
depends on some TypeMetadataUtils.cpp bits in D134320, but that
dependency can be removed and included here if necessary.

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

18 months ago[Driver] Define BareMetal::HasNativeLLVMSupport to return true
Fangrui Song [Thu, 23 Feb 2023 23:06:02 +0000 (15:06 -0800)]
[Driver] Define BareMetal::HasNativeLLVMSupport to return true

D33259 switched the default linker to ld.lld which supports LLVM LTO.
We can support LTO compile/link in one command and drop the
`unable to pass LLVM bit-code files to linker` error.

Fix https://github.com/llvm/llvm-project/issues/52807

18 months ago[-Wunsafe-buffer-usage] Fixits for assignments to array subscript expressions
Ziqing Luo [Thu, 23 Feb 2023 22:53:43 +0000 (14:53 -0800)]
[-Wunsafe-buffer-usage] Fixits for assignments to array subscript expressions

Let generate fix-its to make assignments' left-hand side of the form
`dre[e]` safe if `e` is known to be non-negative.

Commit on behalf of jkorous (Jan Korous)

Reviewed by: NoQ (Artem Dergachev)

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

18 months ago[clang] extend external_source_symbol attribute with USR clause
Alex Lorenz [Thu, 23 Feb 2023 22:14:14 +0000 (14:14 -0800)]
[clang] extend external_source_symbol attribute with USR clause

Allow the user to specify a concrete USR in the external_source_symbol attribute.
That will let Clang's indexer to use Swift USRs for Swift declarations that are
represented with C++ declarations.

This new clause is used by Swift when generating a C++ header representation
of a Swift module:
https://github.com/apple/swift/pull/63002

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

18 months agoAdd tests to reproduce pointer/index width confusion crashes
Krzysztof Drewniak [Thu, 23 Feb 2023 21:47:48 +0000 (21:47 +0000)]
Add tests to reproduce pointer/index width confusion crashes

Some calls to GEPOperator::accumulateConstantOffset(APInt) passed the
pointer bitwidth as the width of the APInt, while the function asserts
that the width of its argument is equal to the index width of the GEP
pointer input. These values are almost always the same, so mixing up
which call to use doesn't usually cause issues. However, when dealing
with data layouts where these values are different, the passes tested
here can crash.

This will be fixed in D143437 .

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

18 months ago[-Wunsafe-buffer-usage] Create Fix-Its only if they are emitted
Ziqing Luo [Thu, 23 Feb 2023 22:43:21 +0000 (14:43 -0800)]
[-Wunsafe-buffer-usage] Create Fix-Its only if they are emitted

`-Wunsafe-buffer-usage` diagnostics shall not emit fix-its if fix-its
are globally disabled.

Commit on behalf of jkorous (Jan Korous)

Reviewed by: NoQ (Artem Dergachev)

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

18 months ago[mlir][LinAlg][Transform] Add a transform op for conv2d to im2col
Quentin Colombet [Thu, 23 Feb 2023 22:26:15 +0000 (22:26 +0000)]
[mlir][LinAlg][Transform] Add a transform op for conv2d to im2col

This patch adds patterns to convert `linalg.conv_2d_xxx` operations
into `linalg.generic` (for img2col packing) and `linalg.matmul`.

The meat of the patch comes straight from IREE
(https://github.com/iree-org/iree).
(To the original authors are you okay with that?)

What this patch adds is proper plumbing of the im2col patterns into the
transform dialect.

PS: Feel free to add more reviewers. I wanted to cover the original contributors of im2col in IREE but I'm not sure I got all of them.

Reviewed By: nicolasvasilache, ThomasRaoux

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

18 months ago[llvm] Teach whole program devirtualization about relative vtables
Leonard Chan [Mon, 26 Sep 2022 20:27:09 +0000 (20:27 +0000)]
[llvm] Teach whole program devirtualization about relative vtables

Prior to this patch, WPD was not acting on relative-vtables in C++. This
involves teaching WPD about these things:

- llvm.load.relative which is how relative-vtables are indexed (instead of GEP)
- dso_local_equivalent which is used in the vtable itself when taking the
  offset between a virtual function and vtable
- Update llvm/test/ThinLTO/X86/devirt.ll to use opaque pointers and add
  equivalent tests for RV

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

18 months agoAdd REQUIRES: riscv to riscv test
Leonard Chan [Thu, 23 Feb 2023 22:16:49 +0000 (22:16 +0000)]
Add REQUIRES: riscv to riscv test

This should fix builders like
https://lab.llvm.org/buildbot/#/builders/139/builds/36522

18 months ago[lld][RISCV] Introduce handling for R_RISCV_PLT32 relocation
Leonard Chan [Thu, 23 Feb 2023 22:05:11 +0000 (22:05 +0000)]
[lld][RISCV] Introduce handling for R_RISCV_PLT32 relocation

This introduces R_RISCV_PLT32, a PC-relative data relocation that takes
the 32-bit relative offset to a function or its PLT entry.

This is needed to support relative vtables on RISCV.

Github PR: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/363

D143226 has the llvm parts.

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

18 months ago[LTO/WPD] Allow devirtualization to function alias in vtable
Teresa Johnson [Fri, 17 Feb 2023 15:38:01 +0000 (07:38 -0800)]
[LTO/WPD] Allow devirtualization to function alias in vtable

Follow on to D144209 to support single implementation devirtualization
for Regular LTO when the vtable holds a function alias.

For now I have prevented other optimizations performed in regular LTO
that need to analyze the contents of the function target when the vtable
holds an alias, as I'm not sure they are always correct to perform in
that case.

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

18 months ago[HWASAN][LSAN] Only initialize Symbolizer if leak checking is enabled
Kirill Stoimenov [Thu, 23 Feb 2023 20:30:53 +0000 (20:30 +0000)]
[HWASAN][LSAN] Only initialize Symbolizer if leak checking is enabled

Reviewed By: hctim

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

18 months ago[libc++] Run modules_include.sh.cpp compiles in parallel
Nikolas Klauser [Thu, 23 Feb 2023 12:33:55 +0000 (13:33 +0100)]
[libc++] Run modules_include.sh.cpp compiles in parallel

It's not pretty, but it makes the test run a lot faster.

Reviewed By: #libc, philnik

Spies: DavidSpickett, libcxx-commits

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

18 months ago[InstCombine] add tests for select of div/rem with common operand; NFC
Sanjay Patel [Thu, 23 Feb 2023 19:49:59 +0000 (14:49 -0500)]
[InstCombine] add tests for select of div/rem with common operand; NFC

issue #60906

18 months ago[MC][nfc] Don't use a value after it has been std::move()'d
Jez Ng [Thu, 23 Feb 2023 20:15:14 +0000 (15:15 -0500)]
[MC][nfc] Don't use a value after it has been std::move()'d

Reviewed By: serge-sans-paille

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

18 months ago[clang-tidy][doc] Remove unused variable
Björn Svensson [Thu, 23 Feb 2023 20:06:43 +0000 (20:06 +0000)]
[clang-tidy][doc] Remove unused variable

Remove mention of a variable that is not used in the example for checker:
cppcoreguidelines-avoid-non-const-global-variables

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

18 months ago[SCEV] Ensure SCEV does not replace aliases with their aliasees
Leonard Chan [Thu, 23 Feb 2023 19:58:29 +0000 (19:58 +0000)]
[SCEV] Ensure SCEV does not replace aliases with their aliasees

Passes in general shouldn't replace an alias with the aliasee (see
https://reviews.llvm.org/D66606). This can lead to situations where a
linkonce_odr symbol (which could be interposable if lowered to weak
linkage) can be replaced with a local aliasee which won't be
interposable. SVEC does this when the function is invoked by
FunctionPass Manager -> Loop Pass Manager -> Induction Variable Users in
the codegen pipeline. This was found in hwasan instrumented code where a
linonce_odr alias was replaced with its private aliasee.

This fixes the bug descriped at
https://github.com/llvm/llvm-project/issues/60668.

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

18 months ago[ASan][libcxx] Annotating std::vector with all allocators
Advenam Tacet [Thu, 23 Feb 2023 19:45:57 +0000 (20:45 +0100)]
[ASan][libcxx] Annotating std::vector with all allocators

This revision is a part of a series of patches extending
AddressSanitizer C++ container overflow detection
capabilities by adding annotations, similar to those existing
in std::vector, to std::string and std::deque collections.
These changes allow ASan to detect cases when the instrumented
program accesses memory which is internally allocated by
the collection but is still not in-use (accesses before or
after the stored elements for std::deque, or between the size and
capacity bounds for std::string).

The motivation for the research and those changes was a bug,
found by Trail of Bits, in a real code where an out-of-bounds read
could happen as two strings were compared via a std::equals function
that took iter1_begin, iter1_end, iter2_begin iterators
(with a custom comparison function).
When object iter1 was longer than iter2, read out-of-bounds on iter2
could happen. Container sanitization would detect it.

In revision D132522, support for non-aligned memory buffers (sharing
first/last granule with other objects) was added, therefore the
check for standard allocator is not necessary anymore.
This patch removes the check in std::vector annotation member
function (__annotate_contiguous_container) to support
different allocators.

Additionally, this revision fixes unpoisoning in std::vector.
It guarantees that __alloc_traits::deallocate may access returned memory.
Originally suggested in D144155 revision.

If you have any questions, please email:
 - advenam.tacet@trailofbits.com
 - disconnect3d@trailofbits.com

Reviewed By: #libc, #sanitizers, philnik, vitalybuka

Spies: hans, EricWF, philnik, #sanitizers, libcxx-commits

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

18 months ago[clangd/index/remote]NFC: Adapt code to newer grpc/protobuf versions
Matthias Braun [Wed, 22 Feb 2023 23:25:11 +0000 (15:25 -0800)]
[clangd/index/remote]NFC: Adapt code to newer grpc/protobuf versions

It seems newer grpc / protobuf versions renamed
`Status::error_message()` and `Status::error_code()` to `message()` and
`code()` to prepare for replacement with `absl::Status` with the same
names.

As far as I can tell the new names are already available in the
grpc-1.36 version mentioned in the `README` file.

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

18 months ago[Libomptarget] Adjust the info.c test now that printing is common
Joseph Huber [Thu, 23 Feb 2023 19:24:40 +0000 (13:24 -0600)]
[Libomptarget] Adjust the info.c test now that printing is common

Summary:
Ever since the change to the new plugins the information messages are
common between the major plugins. This allows us to test the info.c file
generically.

18 months ago[Libomptarget] Add the CUDA feature to the packager
Joseph Huber [Thu, 23 Feb 2023 19:22:54 +0000 (13:22 -0600)]
[Libomptarget] Add the CUDA feature to the packager

Summary:
Internally we need to know the feature that was used to build the CUDA.
This used to be added when the deviceRTL was build via the OpenMP
interface, but ever since it was moved to call the packager explicitly
it was not being added. This causes failured if the user attempts to use
the library without LTO enabled.

18 months ago[debugserver] Add one additional sleep before attaching after waiting
Alex Langford [Sat, 18 Feb 2023 01:27:14 +0000 (17:27 -0800)]
[debugserver] Add one additional sleep before attaching after waiting

It's possible for debugserver to attach to a process during the handoff
between /usr/lib/dyld and the dyld in the shared cache. When that
happens, we may end up in a state where there is no dyld in the process
and our debugging session is doomed. To make that scenario a lot less
likely, we can insert a sleep right before attaching after waiting to
find the right pid.

rdar://105513180

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

18 months ago[mlir][tensor] Improve size inference in tiling tensor.pack ops.
Hanhan Wang [Thu, 23 Feb 2023 00:58:37 +0000 (16:58 -0800)]
[mlir][tensor] Improve size inference in tiling tensor.pack ops.

The sizes of input operands need being clampled only when there are
incomplete tiles, i.e., the padding value is set. The shape input slice
can be folded into constants when they are static shapes and tiling
sizes.

Reviewed By: chelini

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

18 months ago[AMDGPU] Move V_FMA_MIX pattern matching into tablegen. NFC
Justin Bogner [Thu, 23 Feb 2023 01:45:58 +0000 (17:45 -0800)]
[AMDGPU] Move V_FMA_MIX pattern matching into tablegen. NFC

The matching for V_FMA_MIX was partially implemented with a C++
matcher (for fmas with 32 bit results and 16 bit inputs) and partially
in tablegen (for fmas with 16 bit results). Move the C++ matcher logic
into tablegen to make this more consistent and so we can remove the
duplication between SDAG and GISel.

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

18 months agoRevert "[Pipeline] Move ControlHeightReduction to module optimization pipeline"
Arthur Eubanks [Thu, 23 Feb 2023 17:47:58 +0000 (09:47 -0800)]
Revert "[Pipeline] Move ControlHeightReduction to module optimization pipeline"

This reverts commit b374423304a8d91d590d0ce5ab1b381296d6dfb2.

Causes regressions on some benchmarks.

18 months ago[Flang][Driver] NFC: Fix plugin test to work on Mac
Kiran Chandramohan [Thu, 23 Feb 2023 16:55:06 +0000 (16:55 +0000)]
[Flang][Driver] NFC: Fix plugin test to work on Mac

Minor modifications to Diagnostic expectation to match the error generated in Mac.
Tested on M1 Mac.

Reviewed By: awarzynski

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

18 months agoName threadpool threads.
Benoit Jacob [Thu, 16 Feb 2023 15:23:13 +0000 (15:23 +0000)]
Name threadpool threads.

This gives our worker threads some names that allow easily identifying them in tools such as profilers and debuggers.

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

18 months agoRevert "[DAGCombine] Fold redundant select"
Samuel Parker [Thu, 23 Feb 2023 14:29:35 +0000 (14:29 +0000)]
Revert "[DAGCombine] Fold redundant select"

This reverts commit c7f9344d0f8f6a00adab138037e2e7b406ef2b69.

18 months ago[scudo] Disable the GetRssFromBuffer scudo test on PPC
Amy Kwan [Thu, 23 Feb 2023 17:46:37 +0000 (11:46 -0600)]
[scudo] Disable the GetRssFromBuffer scudo test on PPC

The GetRssFromBuffer scudo test case fails intermittently on Power, so this test
is disabled on the platform because of this.

18 months ago[mlir][sparse] support sparse tensor element type conversion in codegen path
Peiming Liu [Wed, 22 Feb 2023 19:04:02 +0000 (19:04 +0000)]
[mlir][sparse] support sparse tensor element type conversion in codegen path

Reviewed By: aartbik

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

18 months ago[LegalizeTypes] Add a special case for (add X, 1) to ExpandIntRes_ADDSUB.
Craig Topper [Thu, 23 Feb 2023 17:47:42 +0000 (09:47 -0800)]
[LegalizeTypes] Add a special case for (add X, 1) to ExpandIntRes_ADDSUB.

On targets without ADDCARRY or ADDE, we need to emit a separate
SETCC to determine carry from the low half to the high half. Usually
we do (setult Lo, LHSLo). If RHSLo is 1 we can instead do (seteq Lo, 0).
This can reduce the live range of LHSLo.

18 months agoSkip using this[:1] map info for non-member variable.
Jennifer Yu [Thu, 23 Feb 2023 03:57:30 +0000 (19:57 -0800)]
Skip using this[:1] map info for non-member variable.

This fix runtime problem due to generate this[:1] map info for non member
variable.
To fix this check VD, if VD is not null, it is not member from current
or base classes.

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

18 months ago[mlir][GPU] Fix incorrect API usage in RewritePatterns
Matthias Springer [Thu, 23 Feb 2023 17:15:14 +0000 (18:15 +0100)]
[mlir][GPU] Fix incorrect API usage in RewritePatterns

Incorrect API usage was detected by D144552.

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

18 months ago[LegalizeTypes][RISCV] Add a special case to ExpandIntRes_UADDSUBO for (uaddo X, 1).
Craig Topper [Thu, 23 Feb 2023 17:16:54 +0000 (09:16 -0800)]
[LegalizeTypes][RISCV] Add a special case to ExpandIntRes_UADDSUBO for (uaddo X, 1).

On targets that lack ADDCARRY support we split a wide uaddo into
an ADD and a SETCC that both need to be split.

For (uaddo X, 1) we can observe that when the add overflows the result
will be 0. We can emit (seteq (or Lo, Hi), 0) to detect this.

This improves D142071.

There is an alternative here. We could use either ~(lo(X) & hi(X)) == 0 or
(lo(X) & hi(X)) == -1 before the addition. That would be closer to the
code before D142071.

Reviewed By: liaolucy

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

18 months agoMove the BySpelling map to IncludeStructure.
Viktoriia Bakalova [Tue, 7 Feb 2023 16:52:51 +0000 (16:52 +0000)]
Move the BySpelling map to IncludeStructure.

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

18 months ago[flang][NFC] Remove unused variable
Valentin Clement [Thu, 23 Feb 2023 17:06:34 +0000 (18:06 +0100)]
[flang][NFC] Remove unused variable

18 months ago[Clang] Teach buildFMulAdd to peek through fneg to find fmul.
Craig Topper [Thu, 23 Feb 2023 17:05:59 +0000 (09:05 -0800)]
[Clang] Teach buildFMulAdd to peek through fneg to find fmul.

Allows us to handle expressions like -(a * b) + c

Based on the examples from D144366 that gcc seems to get.

Reviewed By: kpn

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

18 months agoAvoid strict aliasing violation on type punning inside llvm::PointerIntPair
Breno Guimarães [Thu, 23 Feb 2023 15:29:47 +0000 (15:29 +0000)]
Avoid strict aliasing violation on type punning inside llvm::PointerIntPair

llvm::PointerIntPair has methods that when used together can invoke
undefined behavior by violating strict aliasing.

`getPointer()` uses the underlying storage as it's declared: `intptr_t`
`getAddrOfPointer()` casts the underlying storage as if it was a
`PointerTy`

This violates strict aliasing, so depending on how they are used, it's
possible to have the compiler to optimize the code in unwanted ways.
See the unit test in the patch. We declare a `PointerIntPair` and use
the `getAddrOfPointer` method to fill in the a pointer value.  Then,
when we use `getPointer` the compiler is thrown off, thinking that
`intptr_t` storage could not have possibly be changed, and the check
fails.

Reviewed By: efriedma

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

18 months ago[MLIR][OpenMP] Add conversion support from FIR to LLVM Dialect for OMP Target Data...
Akash Banerjee [Thu, 23 Feb 2023 16:58:04 +0000 (16:58 +0000)]
[MLIR][OpenMP] Add conversion support from FIR to LLVM Dialect for OMP Target Data with region

This enables conversion of OpenMP Target Data op with region from FIR Dialect to LLVM IR Dialect.

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

18 months ago[RISCV] Properly diagnose mixing RVV scalable vectors with GNU vectors.
Craig Topper [Thu, 23 Feb 2023 17:00:32 +0000 (09:00 -0800)]
[RISCV] Properly diagnose mixing RVV scalable vectors with GNU vectors.

This case was being picked up by SVE code and printing an SVE
specific message.

This patch distinquishes RVV from SVE and provides a correct error
message for RVV.

The use of the generic isSizelessBuiltinType was also picking up
WebAssembly reference types which was probably an accident so I've
removed that.

I've named the test similar to SVE's test that contains this check.
Their test also tests the arm_sve_vector_bits attribute. I plan to
add something similar for RISC-V soon so I've adopted this naming.

Reviewed By: c-rhodes

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

18 months ago[gn build] Port dcb834843ed4
LLVM GN Syncbot [Thu, 23 Feb 2023 16:39:43 +0000 (16:39 +0000)]
[gn build] Port dcb834843ed4

18 months ago[AMDGPU] Split SIModeRegisterDefaults out of AMDGPUBaseInfo. NFC.
Jay Foad [Thu, 23 Feb 2023 16:07:57 +0000 (16:07 +0000)]
[AMDGPU] Split SIModeRegisterDefaults out of AMDGPUBaseInfo. NFC.

This is only used by CodeGen. Moving it out of AMDGPUBaseInfo simplifies
future changes to make some of it depend on the subtarget.

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

18 months agoRevert "[clang] Add the check of membership for the issue #58674 and improve the...
Alexander Kornienko [Thu, 23 Feb 2023 16:08:47 +0000 (17:08 +0100)]
Revert "[clang] Add the check of membership for the issue #58674 and improve the lookup process"

The commit causes clang to crash. See https://reviews.llvm.org/D143840#4147234

This reverts commit 8498ba6c2860c838183f9951b63df26ab5f02265.

18 months ago[flang] Relax the check for polymorphic pointer in storage_size intrinsic
Valentin Clement [Thu, 23 Feb 2023 16:28:54 +0000 (17:28 +0100)]
[flang] Relax the check for polymorphic pointer in storage_size intrinsic

The runtime check was a too strong as the standard says.
> If it is polymorphic it shall not be an undefined pointer.
The check was checking if the pointer was associated.
Remove the check as other compilers do.

Depends on D144643

Reviewed By: PeteSteinfeld

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

18 months ago[flang] Accept polymorphic component element in storage_size
Valentin Clement [Thu, 23 Feb 2023 16:28:07 +0000 (17:28 +0100)]
[flang] Accept polymorphic component element in storage_size

When an element is extracted from a polymorphic array, it is
represented as a PolymorphicValue. The PolymorphicValue is
not a boxed value but holds the original polyrmophic array
and the element itself. This was raising an error in storage_size
lowering since we expect a boxed value to take advantage of
fir.box_elesize.
This patch handles PolymorphicValue correctly.

Reviewed By: PeteSteinfeld

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

18 months ago[flang] Fix element indexing in Destroy component deallocation
Valentin Clement [Thu, 23 Feb 2023 16:26:52 +0000 (17:26 +0100)]
[flang] Fix element indexing in Destroy component deallocation

Derived type `Destroy` function does not take step into consideration
when indexing the component element for deallocation. This leads to
incorrect deallocation in case like:

```
module mod1
  type :: t
    real, allocatable :: r(:)
  end type
contains
  subroutine do_smth(c)
    class(t), intent(out) :: c(:)
    do i = 1, size(c)
      if (allocated(c(i)%r)) then
        print*, i, 'not deallocated'
      end if
    end do
  end subroutine
end module

program test
  use mod1
  type(t) :: z(6)
  integer :: i
  do i = 1, 6
    Allocate(z(i)%r(i))
  end do
  call do_smth(z(::2))
end
```

Similar change was done in D142527

Reviewed By: klausler

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

18 months ago[RISCV][NFC] Reuse getDeinterleaveViaVNSRL to lower deinterleave intrinsics
Luke Lau [Wed, 22 Feb 2023 19:28:36 +0000 (19:28 +0000)]
[RISCV][NFC] Reuse getDeinterleaveViaVNSRL to lower deinterleave intrinsics

This modifies it to work on both scalable and fixed vectors

Reviewed By: reames

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

18 months ago[RISCV] Lower interleave and deinterleave intrinsics
Luke Lau [Mon, 20 Feb 2023 13:32:13 +0000 (13:32 +0000)]
[RISCV] Lower interleave and deinterleave intrinsics

Lower the two intrinsics introduced in D141924.

These intrinsics can be combined with loads and stores into the much more efficient segmented load and store instructions in a following patch.

Reviewed By: reames

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

18 months ago[Clang][NFC] Remove pointless defines from test command lines
John Brawn [Tue, 21 Feb 2023 15:43:32 +0000 (15:43 +0000)]
[Clang][NFC] Remove pointless defines from test command lines

A few tests use -D on the command line to define macros that are
already predefined. Remove these pointless defines, as an upcoming
patch will cause this to be a warning.

18 months ago[Assignment Tracking][NFC] Avoid doing some work when maps have same keys
OCHyams [Thu, 23 Feb 2023 15:50:51 +0000 (15:50 +0000)]
[Assignment Tracking][NFC] Avoid doing some work when maps have same keys

Where the new checks have been added, `SymmetricDifference` - still being built
- contains entries for variables present in `A` and not in `B`.  If
`SymmetricDifference` is empty at this point it means the variables (map keys)
in `A` are a subset of those in `B`, so if `A` and `B` are the same size then
we know they're identical.

This reduces the number of instructions retired building some of the CTMark
projects in a ReleaseLTO-g configuration (geomean change -0.05% with the best
improvement being -0.24% for tramp3d-v4)

Reviewed By: StephenTozer

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

18 months ago[InstCombine] NFC: Add implied condition to block in foldSelectInstWithICmp
Sander de Smalen [Thu, 23 Feb 2023 15:29:51 +0000 (15:29 +0000)]
[InstCombine] NFC: Add implied condition to block in foldSelectInstWithICmp

Added the condition 'TrueVal->getType()->isIntOrIntVectorTy' to a block of code
in foldSelectInstWithICmp which is only valid if the TrueVal is integer type.

This change was split off from D136861.

18 months ago[lldb] Skip test_stop_reply_contains_thread_pcs on Windows
David Spickett [Thu, 23 Feb 2023 16:08:44 +0000 (16:08 +0000)]
[lldb] Skip test_stop_reply_contains_thread_pcs on Windows

I marked this as expected to fail, but it doesn't always fail,
and an unexpected success is a failure.

Skip it instead.

18 months ago[LV] NFC: Move logic to query maximum vscale to its own function.
Sander de Smalen [Thu, 23 Feb 2023 12:20:36 +0000 (12:20 +0000)]
[LV] NFC: Move logic to query maximum vscale to its own function.

To query the maximum value for vscale, the LV queries the vscale_range
attribute or a TTI hook. To avoid having to reimplement the same behaviour
for multiple uses (such as in D142894), it makes sense to move this code
to a separate function.

18 months ago[clangd] Set diag data before emitting
Kadir Cetinkaya [Thu, 23 Feb 2023 13:47:55 +0000 (14:47 +0100)]
[clangd] Set diag data before emitting

Also fixes a benign use-after-free.

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

18 months ago[PS4/PS5] Specify no <complex.h> or <threads.h>
Paul Robinson [Wed, 22 Feb 2023 19:55:34 +0000 (11:55 -0800)]
[PS4/PS5] Specify no <complex.h> or <threads.h>

We've never provided these headers so set the preprocessor
toggles to reflect that.

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

18 months agoRevert "[Clang] Implement fix for DR2628"
Tobias Hieta [Tue, 21 Feb 2023 15:47:54 +0000 (16:47 +0100)]
Revert "[Clang] Implement fix for DR2628"

This reverts commit 368b6832de33b366d4eb155f940e7476daace6a8.

See https://github.com/llvm/llvm-project/issues/60777 for details

18 months ago[Flang] Don't crash when BOZ literals are on the rhs of an assignment
Peter Steinfeld [Wed, 22 Feb 2023 18:51:54 +0000 (10:51 -0800)]
[Flang] Don't crash when BOZ literals are on the rhs of an assignment

For BOZ literals, the rhsType will be empty.  Check for that before
trying to access its value.

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

18 months ago[SME2][AArch64] Add multi-vector rounding shift left intrinsics
Kerry McLaughlin [Thu, 23 Feb 2023 13:47:45 +0000 (13:47 +0000)]
[SME2][AArch64] Add multi-vector rounding shift left intrinsics

Adds intrinsics for the following SME2 instructions:
 - srshl (single, 2 & 4 vector)
 - srshl (multi, 2 & 4 vector)
 - urshl (single, 2 & 4 vector)
 - urshl (multi, 2 & 4 vector)

NOTE: These intrinsics are still in development and are subject to future changes.

Reviewed By: david-arm

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

18 months ago[SLP] Check with target before vectorizing GEP Indices.
Jonas Paulsson [Wed, 15 Feb 2023 18:46:38 +0000 (19:46 +0100)]
[SLP] Check with target before vectorizing GEP Indices.

The target hook prefersVectorizedAddressing() already exists to check with
target if address computations should be vectorized, so it seems like this
should be used in SLPVectorizer as well.

Reviewed By: ABataev, RKSimon

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

18 months ago[PatternMatch] Don't require DataLayout for m_VScale()
Nikita Popov [Wed, 22 Feb 2023 16:13:00 +0000 (17:13 +0100)]
[PatternMatch] Don't require DataLayout for m_VScale()

The m_VScale() matcher is unusual in that it requires a DataLayout.
It is currently used to determine the size of the GEP type. However,
I believe it is sufficient to check for the canonical
<vscale x 1 x i8> form here -- I don't think there's a need to
recognize exotic variations like <vscale x 1 x i4> as a vscale
constant representation as well.

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

18 months ago[Clang] Fix a crash when taking the address of a consteval lambda
Corentin Jabot [Thu, 23 Feb 2023 10:04:23 +0000 (11:04 +0100)]
[Clang] Fix a crash when taking the address of a consteval lambda

The `_invoke` function of lambdas was not respecting
the constexpr/consteval specifier of the call operator, so it was possible
to take its address in a non-immmediately invoked context,
even if the call operator was itself consteval.

In addition, we improve the diagnostic emmited in the lambda case
not to show that `invoke` method.

Fixes #57682

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

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

18 months ago(NFC)[ConstantFold][InstSimplify] add tests for folding load for patterned arrays...
khei4 [Thu, 23 Feb 2023 08:05:43 +0000 (17:05 +0900)]
(NFC)[ConstantFold][InstSimplify] add tests for folding load for patterned arrays and structs

18 months ago[LLDB] Mark test_stop_reply_contains_thread_pcs as an expected failure on Windows
David Spickett [Thu, 23 Feb 2023 14:08:01 +0000 (14:08 +0000)]
[LLDB] Mark test_stop_reply_contains_thread_pcs as an expected failure on Windows

This has been flaky on the Windows on Arm LLDB bot.

https://lab.llvm.org/buildbot/#/builders/219/builds/826

Given that test_stop_reply_reports_multiple_threads is already expected
to fail on Windows, this is not suprising.