platform/upstream/llvm.git
18 months ago[dataflow] add HTML logger: browse code/cfg/analysis timeline/state
Sam McCall [Wed, 8 Mar 2023 15:13:28 +0000 (16:13 +0100)]
[dataflow] add HTML logger: browse code/cfg/analysis timeline/state

With -dataflow-log=/dir we will write /dir/0.html etc for each
function analyzed.

These files show the function's code and CFG, and the path through
the CFG taken by the analysis. At each analysis point we can see the
lattice state.

Currently the lattice state dump is not terribly useful but we can
improve this: showing values associated with the current Expr,
simplifying flow condition, highlighting changes etc.

(Trying not to let this patch scope-creep too much, so I ripped out the
half-finished features)

Demo: https://htmlpreview.github.io/?https://gist.githubusercontent.com/sam-mccall/1746985bf13406bd19181af281aea9ff/raw/9718fdd48406dabccb3092acd983b4bd55da9dfa/analysis.html

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

18 months ago[OpenMP][MLIR] Add lowering of omp::FlagsAttr to LLVM-IR
Andrew Gozillon [Wed, 19 Apr 2023 13:21:24 +0000 (08:21 -0500)]
[OpenMP][MLIR] Add lowering of omp::FlagsAttr to LLVM-IR

The omp::FlagsAttr contains OpenMP RTL flags
given by a user to the compiler and a frontend
(flang currently) then populates the omp::FlagsAttr
which will then lower these to LLVM globals
which are utilised by the OpenMP runtime.

Reviewers: jdoerfert

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

18 months ago[AArch64] Remove dead tryMLAV64LaneV128 and tryMULLV64LaneV128 code.
David Green [Wed, 19 Apr 2023 13:26:27 +0000 (14:26 +0100)]
[AArch64] Remove dead tryMLAV64LaneV128 and tryMULLV64LaneV128 code.

As far as I can tell this code is never used, as the pattern recognised by
checkHighLaneIndex (an duplane with insert_subvec and extract_subvec) will not
be generated any more. There are no tests that change from removing it
(including the clang neon tests), and it didn't appear to come up in any
benchmarks I ran. There are already existing tablegen patterns for MLA with
index and s/umull with index.

Removing it also prevents it from causing problems for SVE, as in #62151.

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

18 months ago[DAGCombine][AArch64] Allow transformable to legal vectors to be used for MULH lowering.
Dinar Temirbulatov [Wed, 19 Apr 2023 13:24:58 +0000 (13:24 +0000)]
[DAGCombine][AArch64] Allow transformable to legal vectors to be used for MULH lowering.

It looks like it is still profitable to accept a transformable to a legal vector
type, not just a legal vector, as long as vector elements are the same between
two of those types.

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

18 months agoReapply D146987 "[Assignment Tracking] Enable by default"
OCHyams [Wed, 19 Apr 2023 12:59:08 +0000 (13:59 +0100)]
Reapply D146987 "[Assignment Tracking] Enable by default"

This reverts commit 7674ae7231c4e286b93eb399e475765630666f8b which
reverts D146987.

See https://reviews.llvm.org/D146987 for issues.

18 months ago[libc] Add the '--threads' and '--blocks' option to the GPU loaders
Joseph Huber [Mon, 17 Apr 2023 20:08:59 +0000 (15:08 -0500)]
[libc] Add the '--threads' and '--blocks' option to the GPU loaders

We will want to test the GPU `libc` with multiple threads in the future.
This patch adds the `--threads` and `--blocks` option to set the `x`
dimension of the kernel. Using CUDA terminology instead of OpenCL for
familiarity.

Depends on D148288 D148342

Reviewed By: jdoerfert, sivachandra, tra

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

18 months ago[libc] Add a support library for GPU utilities
Joseph Huber [Tue, 18 Apr 2023 14:44:27 +0000 (09:44 -0500)]
[libc] Add a support library for GPU utilities

The GPU has many features that can only be accessed through builtin or
intrinsic functions. Furthermore, these functions are unique for each
GPU target. This patch outlines an interface to create a common `libc`
interface to access these. Currently I only implement a function for the
CUDA equivalent of `blockIdx.x`. More will be added in the future.

Reviewed By: sivachandra

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

18 months ago[SLP]Fix cost estimation for buildvectors with extracts and/or constants.
Alexey Bataev [Fri, 14 Apr 2023 16:35:03 +0000 (09:35 -0700)]
[SLP]Fix cost estimation for buildvectors with extracts and/or constants.

If the partial matching is found and some other scalars must be
inserted, need to account the cost of the extractelements, transformed
to shuffles, and/or reused entries and calculate the cost of inserting
constants properly into the non-poison vectors.
Also, fixed the cost calculation for final gather/buildvector sequence.

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

18 months ago[SanitizerBinaryMetadata] Respect no_sanitize("thread") function attribute
Marco Elver [Wed, 19 Apr 2023 12:46:42 +0000 (14:46 +0200)]
[SanitizerBinaryMetadata] Respect no_sanitize("thread") function attribute

To avoid false positives, respect no_sanitize("thread") when atomics
metadata is enabled.

Reviewed By: dvyukov

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

18 months ago[gn build] Port bf47c1ed8556
LLVM GN Syncbot [Wed, 19 Apr 2023 12:38:32 +0000 (12:38 +0000)]
[gn build] Port bf47c1ed8556

18 months agoReapply "[Assignment Tracking] Fix fragment error for some DSE-shortened stores"
OCHyams [Wed, 19 Apr 2023 12:11:22 +0000 (13:11 +0100)]
Reapply "[Assignment Tracking] Fix fragment error for some DSE-shortened stores"

This reverts commit 6db6ab4815a44bfcaabfcdd84a0ff458394f6f52 which reverts
D148536.

Build issues addressed in D148698.

18 months ago[dataflow] Extract arena for Value/StorageLocation out of DataflowAnalysisContext
Sam McCall [Mon, 17 Apr 2023 18:35:20 +0000 (20:35 +0200)]
[dataflow] Extract arena for Value/StorageLocation out of DataflowAnalysisContext

DataflowAnalysisContext has a few too many responsibilities, this narrows them.

It also allows the Arena to be shared with analysis steps, which need to create
Values, without exposing the whole DACtx API (flow conditions etc).
This means Environment no longer needs to proxy all these methods.
(For now it still does, because there are many callsites to update, and maybe
if we separate bool formulas from values we can avoid churning them twice)

In future, if we untangle the concepts of Values from boolean formulas/atoms,
Arena would also be responsible for creating formulas and managing atom IDs.

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

18 months agoValueTracking: Handle shufflevector in computeKnownFPClass
Matt Arsenault [Thu, 13 Apr 2023 01:33:02 +0000 (21:33 -0400)]
ValueTracking: Handle shufflevector in computeKnownFPClass

18 months agoValueTracking: Add baseline tests for shufflevector computeKnownFPClass handling
Matt Arsenault [Tue, 18 Apr 2023 14:28:39 +0000 (10:28 -0400)]
ValueTracking: Add baseline tests for shufflevector computeKnownFPClass handling

18 months agoValueTracking: Handle insertelement in computeKnownFPClass
Matt Arsenault [Wed, 12 Apr 2023 23:21:49 +0000 (19:21 -0400)]
ValueTracking: Handle insertelement in computeKnownFPClass

18 months agoValueTracking: sitofp cannot return -0
Matt Arsenault [Thu, 13 Apr 2023 13:48:08 +0000 (09:48 -0400)]
ValueTracking: sitofp cannot return -0

18 months agoValueTracking: Add baseline test for computeKnownFPClass for minnum/maxnum
Matt Arsenault [Sat, 8 Apr 2023 23:29:53 +0000 (19:29 -0400)]
ValueTracking: Add baseline test for computeKnownFPClass for minnum/maxnum

18 months agoValueTracking: Add more fpext and fptrunc tests
Matt Arsenault [Mon, 17 Apr 2023 23:12:18 +0000 (19:12 -0400)]
ValueTracking: Add more fpext and fptrunc tests

18 months ago[lldb][RISCV] Add missing flags pointer to register infos
David Spickett [Wed, 19 Apr 2023 11:42:14 +0000 (11:42 +0000)]
[lldb][RISCV] Add missing flags pointer to register infos

 efd64c2f2506df3e2ed6d9da68e49f03fc31763c added these.

18 months ago[hwasan] provide a runtime flag for printing remaining threads in error report as...
Enna1 [Wed, 19 Apr 2023 11:27:26 +0000 (19:27 +0800)]
[hwasan] provide a runtime flag for printing remaining threads in error report as an extra information

This patch adds a runtime flag `print_live_threads_info`, which defaults to true, controls whether or not prints remaining threads in error report as an extra information.
We(ByteDance) are in the process of enabling hwasan for our server-side applications on AArch64/Linux, these server-side applications have thousands of threads, so it is nice to have this option.

Reviewed By: fmayer

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

18 months ago[NFC] Rename isPointerOffset to getPointerOffsetFrom and move to Value.h
OCHyams [Wed, 19 Apr 2023 10:59:37 +0000 (11:59 +0100)]
[NFC] Rename isPointerOffset to getPointerOffsetFrom and move to Value.h

Linking LLVMCore failed when building D148536 with shared libs enabled:
https://lab.llvm.org/buildbot/#/builders/121/builds/29766

Make isPointerOffset a Value method and rename it to getPointerOffsetFrom.

Reviewed By: jmorse

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

18 months ago[libcxxabi] [test] Fix the mingw test config
Martin Storsjö [Thu, 30 Mar 2023 11:40:17 +0000 (14:40 +0300)]
[libcxxabi] [test] Fix the mingw test config

Don't link libc++abi separately in addition to the main -lc++; in
mingw build configs, libc++abi is always bundled into libc++
(via LIBCXX_ENABLE_STATIC_ABI_LIBRARY).

In the case of a shared linked libc++, linking a separate static
libc++abi leads to linker errors.

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

18 months ago[libcxxabi] [test] Avoid mingw warnings about missing a return statement
Martin Storsjö [Sat, 1 Apr 2023 22:45:07 +0000 (01:45 +0300)]
[libcxxabi] [test] Avoid mingw warnings about missing a return statement

With current versions of mingw-w64 headers, code following
assert(false) isn't considered unreachable - thus add a dummy
"return nullptr;", to avoid warnings (treated as errors) for a
missing return statement.

The root cause does get fixed further upstream in mingw-w64 in
https://github.com/mingw-w64/mingw-w64/commit/1690994f515910a31b9fb7c7bd3a52d4ba987abe
though.

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

18 months ago[libcxxabi] Omit dllimport in public headers in MinGW mode
Martin Storsjö [Sat, 15 Apr 2023 21:58:51 +0000 (21:58 +0000)]
[libcxxabi] Omit dllimport in public headers in MinGW mode

This matches the corresponding change to libcxx headers in
dfa88927ae1411ccc3b248b7e624f2acf623d947.

This avoids needing to define _LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS
when building libcxxabi tests, for two reasons:
- It defaults to normal linkage (as opposed to dllimport), fixing
  linking of a static library version of libcxx/libcxxabi
- It avoids issues with using dllimport declarations on symbols when
  including cxxabi implementations into the testcase itself

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

18 months ago[AArch64][CostModel]: Add costs for zero/sign extend.
Hassnaa Hamdi [Wed, 19 Apr 2023 09:23:13 +0000 (09:23 +0000)]
[AArch64][CostModel]: Add costs for zero/sign extend.

Add cost for extending to illegal scalable vector types.
Add testing file for the extend operations.

Reviewed By: sdesmalen

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

18 months agoMake use of '#pragma clang diagnostic' only with __clang__.
Martin Liska [Wed, 19 Apr 2023 09:47:43 +0000 (11:47 +0200)]
Make use of '#pragma clang diagnostic' only with __clang__.

Otherwise one gets the following warning with GCC:
warning: ignoring ‘#pragma clang diagnostic’ [-Wunknown-pragmas]

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

18 months ago[AMDGPU] Add more verbose logs to PromoteAlloca
pvanhout [Tue, 18 Apr 2023 12:22:45 +0000 (14:22 +0200)]
[AMDGPU] Add more verbose logs to PromoteAlloca

More specifically make it more talkative when it's looking at the users of
an alloca to promote it to a vector.

A common failure point of the pass is unknown or weird users of the alloca.
While debugging issues related to this pass one of the first thing I usually
did was to add logs to see how the users were being handled.
Having such logs in directly seems to be a nice addition.

Reviewed By: arsenm, rampitec

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

18 months ago[compiler-rt][ASAN] Replace find_executable with shtuil.which in script
David Spickett [Mon, 17 Apr 2023 13:36:03 +0000 (13:36 +0000)]
[compiler-rt][ASAN] Replace find_executable with shtuil.which in script

distutils is deprecated and shutil.which is the suggested
replacement for this function.

https://peps.python.org/pep-0632/#migration-advice
https://docs.python.org/3/library/shutil.html#shutil.which

which was added in 3.3 (https://docs.python.org/3/library/shutil.html#shutil.which)
and LLVM requires at least 3.6 (https://llvm.org/docs/GettingStarted.html#software).

Reviewed By: delcypher, vitalybuka

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

18 months agoRevert "[Assignment Tracking] Fix fragment error for some DSE-shortened stores"
OCHyams [Wed, 19 Apr 2023 09:02:24 +0000 (10:02 +0100)]
Revert "[Assignment Tracking] Fix fragment error for some DSE-shortened stores"

This reverts commit fca3e8e024f0015604d21e6f76f3e199345679c5.

Buildbot: https://lab.llvm.org/buildbot/#/builders/121/builds/29766

18 months agoRevert D146987 "[Assignment Tracking] Enable by default"
OCHyams [Wed, 19 Apr 2023 09:01:40 +0000 (10:01 +0100)]
Revert D146987 "[Assignment Tracking] Enable by default"

This reverts commit 107b307bd61e51aa66ea41f1a2c92c1459b39c7e due
to build errors in a parent commit fca3e8e024f0015604d21e6f76f3e199345679c5

18 months ago[AMDGPU] Don't transform illegal intrinsics to V_ILLEGAL
Jay Foad [Wed, 12 Apr 2023 13:22:40 +0000 (14:22 +0100)]
[AMDGPU] Don't transform illegal intrinsics to V_ILLEGAL

This reverts parts of D123693. The functionality of allowing unsupported
intrinsics to select has been superseded by D139000 "Remove function
with incompatible features".

Retain assembler/disassembler support for v_illegal on GFX10+ only,
where it is documented.

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

18 months ago[docs] Fix the CMAKE_BUILD_TYPE option in the cmake command in GettingStarted.rst
terrydang [Wed, 19 Apr 2023 08:45:05 +0000 (09:45 +0100)]
[docs] Fix the CMAKE_BUILD_TYPE option in the cmake command in GettingStarted.rst

The cmake command contained a duplicate CMAKE_BUILD_TYPE option in the
section "Compiling the LLVM Suite Source Code".

18 months ago[reland][libc] handle memset sequence as a separate struct
Guillaume Chatelet [Tue, 18 Apr 2023 15:16:20 +0000 (15:16 +0000)]
[reland][libc] handle memset sequence as a separate struct

These sequence of calls don't really make sense for head_tail and loop_and_tail.

18 months ago[RISCV] Combine concat_vectors of loads into strided loads
Luke Lau [Thu, 6 Apr 2023 14:26:31 +0000 (15:26 +0100)]
[RISCV] Combine concat_vectors of loads into strided loads

If we're concatenating several smaller loads separated by a stride, we
can try and increase the element size and perform a strided load.
For example:

```
concat_vectors (load v4i8, p+0), (load v4i8, p+n), (load v4i8, p+n*2), (load v4i8, p+n*3)
=>
vlse32 p, stride=n, VL=4
```

This pattern can be produced by the SLP vectorizer.

A special case is when the stride is exactly equal to the width of the
vector, in which case it can be converted into a single consecutive
vector load. For example:

```
concat_vectors (load v4i8, p), (load v4i8, p+4), (load v4i8, p+8), (load v4i8, p+12)
=>
vle8 p, VL=16
```

Reviewed By: craig.topper

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

18 months ago[RISCV] Add tests for concats of vectors that could become strided loads
Luke Lau [Thu, 6 Apr 2023 13:48:37 +0000 (14:48 +0100)]
[RISCV] Add tests for concats of vectors that could become strided loads

These patterns of concat_vector nodes of loads can be combined into
widened vector loads or a strided vector loads.

Co-authored-by: Philip Reames <preames@rivosinc.com>
Differential Revision: https://reviews.llvm.org/D147712

18 months agoReapply D146987 "[Assignment Tracking] Enable by default"
OCHyams [Wed, 19 Apr 2023 08:20:58 +0000 (09:20 +0100)]
Reapply D146987 "[Assignment Tracking] Enable by default"

This reverts commit efc8b52cbd942f4bd5ffe8f64da5fb8a3b7adc32
which reverts D146987.

See https://reviews.llvm.org/D146987 for issues.

18 months ago[Assignment Tracking] Fix fragment error for some DSE-shortened stores
OCHyams [Wed, 19 Apr 2023 07:43:02 +0000 (08:43 +0100)]
[Assignment Tracking] Fix fragment error for some DSE-shortened stores

`shortenAssignment` inserts dbg.assigns with fragments describing the dead part
of a shortened store after each dbg.assign linked to the store.

Without this patch it doesn't take into account that the dead part of a
shortened store may be outside the bounds of a variable of a linked
dbg.assign. It also doesn't correctly account for a non-zero offset in the
address modifying `DIExpression` of the dbg.assign (which is possible for
fragments now even though whole variables currently cannot have a non-zero
offset in their alloca).

Fix this by moving the dead slice into variable-space and performing an
intersect of that adjusted slice with the existing fragment.

This fixes a verifier error reported when building fuchsia with assignment
tracking enabled:
https://ci.chromium.org/ui/p/fuchsia/builders/ci/
        clang_toolchain.ci.core.x64-release/b8784000953022145169/overview

Reviewed By: jmorse

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

18 months agoRevert "Reapply [SimplifyCFG][LICM] Preserve nonnull, range and align metadata when...
Krasimir Georgiev [Wed, 19 Apr 2023 08:26:38 +0000 (08:26 +0000)]
Revert "Reapply [SimplifyCFG][LICM] Preserve nonnull, range and align metadata when speculating"

This reverts commit 6f7e5c0f1ac6cc3349a2e1479ac4208465b272c6.

Seems to expose a miscompile in rust, possibly exposing a bug in LLVM
somewhere. Investigation thread over at:
https://rust-lang.zulipchat.com/#narrow/stream/187780-t-compiler.2Fwg-llvm/topic/LLVM.20D146629.20breakage

18 months ago[LLDB][RISCV] Add RVV register infos
Emmmer [Mon, 6 Feb 2023 08:17:14 +0000 (16:17 +0800)]
[LLDB][RISCV] Add RVV register infos

RVV stands for "RISC-V V Extension", which adds 32 vector registers, and seven unprivileged CSRs (vstart, vxsat, vxrm, vcsr, vtype, vl, vlenb) to a base scalar RISC-V ISA.

The base vector extension is intended to provide general support for data-parallel execution within the 32-bit instruction encoding space, with later vector extensions supporting richer functionality for certain domains.

This patch adds the definitions of RVV registers in `RegisterInfos_riscv64.h`, whose purpose is to provide support (such as reading, writing, and calculating the offsets) for future register-related functions.

Reviewed By: kito-cheng

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

18 months ago[llvm-exegesis] Allow setting dump file name
Pavel Kosov [Wed, 19 Apr 2023 07:59:07 +0000 (10:59 +0300)]
[llvm-exegesis] Allow setting dump file name

This will be used for writing test cases.

~~

Huawei RRI, OS Lab

Reviewed By: courbet

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

18 months ago[flang][hlfir] Apply component lower bounds in hlfir.designate codegen
Jean Perier [Wed, 19 Apr 2023 07:00:51 +0000 (09:00 +0200)]
[flang][hlfir] Apply component lower bounds in hlfir.designate codegen

The array component indices in the "path" of a fir.slice are zero based
because FIR does not know about the component lower bounds.
When lowering hlfir.designate to FIR for `array%x(i, j)`, convert `i` and
`j` to zero based indices before generating the fir.slice.

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

18 months ago[GlobalISelEmitter] handle operand without MVT/class
Chen Zheng [Mon, 9 Jan 2023 04:07:52 +0000 (04:07 +0000)]
[GlobalISelEmitter] handle operand without MVT/class

There are some patterns in td files without MVT/class set
for some operands in target pattern that are from the source
pattern. This prevents GlobalISelEmitter from adding them as
a valid rule, because the target child operand is an
unsupported kind operand. For now, for a leaf child, only
IntInit and DefInit are handled in GlobalISelEmitter.

This issue can be workaround by adding MVT/class to the
patterns in the td files, like the workarounds for patterns
anyext and setcc in PPCInstrInfo.td in D140878.

To avoid adding the same workarounds for other patterns in
td files, this patch tries to handle the UnsetInit case in
GlobalISelEmitter.

Adding the new handling allows us to remove the workarounds
in the td files and also generates many selection rules for
PPC target.

Reviewed By: arsenm

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

18 months ago[mlir][linalg] ValueBoundsOpInterface: Add support for linalg.index
Matthias Springer [Wed, 19 Apr 2023 06:49:20 +0000 (15:49 +0900)]
[mlir][linalg] ValueBoundsOpInterface: Add support for linalg.index

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

18 months ago[clang][Interp][NFC] Small State.cpp refactoring
Timm Bäder [Wed, 19 Apr 2023 06:10:13 +0000 (08:10 +0200)]
[clang][Interp][NFC] Small State.cpp refactoring

18 months ago[RISCV] Fix canonical ordering of s* vs z* extensions in RISCVISAInfo
Alex Bradbury [Wed, 19 Apr 2023 06:03:57 +0000 (07:03 +0100)]
[RISCV] Fix canonical ordering of s* vs z* extensions in RISCVISAInfo

As noted in https://reviews.llvm.org/D148315, the ordering logic for
OrderedExtensionMap currently puts s* before z* extensions, but per the
ISA manual the correct order should be z* and then s* (with the
exception of zxm*, which are ordered after s*).

This patch fixes the ordering and adds a TODO for zxm*. The changes are
visible in the test case added in
a35e67fc5be654a7efdfa6125343b90f8960a487 which also demonstrates an
issue with the ordering of single letter extensions (which isn't
addressed in this patch).

This ordering matches the one used by GCC/binutils as well.

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

18 months ago[clang][Bazel] Add missing dependency after 310ee08d5d4
Adrian Kuegel [Wed, 19 Apr 2023 05:56:28 +0000 (07:56 +0200)]
[clang][Bazel] Add missing dependency after 310ee08d5d4

18 months ago[docs][RISCV] Use anonymous references in RISCVUsage to avoid warnings
Alex Bradbury [Wed, 19 Apr 2023 05:43:40 +0000 (06:43 +0100)]
[docs][RISCV] Use anonymous references in RISCVUsage to avoid warnings

2a5661c8415876be3fbd56ce90c2031e89ba0ef3 added a new external link with
the link text "0.2 draft specification". Surprisingly, as multiple links
have this same text but different targets this causes a warning, which
causes a failure on the llvm-sphinx-docs builder (which treats warnings
as errors). As suggested in
<https://github.com/sphinx-doc/sphinx/issues/3921>, this commit moves to
using anonymous references for the links in the experimental extensions
section.

18 months ago[RISCV][NFC] Consistently use Opcode local variable in RISCVAsmParser::validateInstru...
Alex Bradbury [Wed, 19 Apr 2023 05:31:10 +0000 (06:31 +0100)]
[RISCV][NFC] Consistently use Opcode local variable in RISCVAsmParser::validateInstruction

As we already do `unsigned Opcode = Inst.getOpcode();`, we may as well
use that variable.

18 months ago[RISCV] Bump Zfa version to 0.2 and correct RISCVUsage description
Alex Bradbury [Wed, 19 Apr 2023 05:24:53 +0000 (06:24 +0100)]
[RISCV] Bump Zfa version to 0.2 and correct RISCVUsage description

As of
https://github.com/riscv/riscv-isa-manual/commit/1f038182810727f5feca311072e630d6baac51da
in the riscv-isa-manual, Zfa is at version 0.2. Reviewing the commit
history for
zfa.tex
<https://github.com/riscv/riscv-isa-manual/commits/master/src/zfa.tex>
there are no relevant changes since 0.1. As such, we can simply
increment the version number.

This change also removes the claim in RISCVUsage that we implement a
"subset of" Zfa, as I believe this is no longer true. That sentence
previously incorrectly claimed we didn't implement fli.{h,s,d} (I
[corrected this a couple of weeks
ago](https://reviews.llvm.org/rG3d969191b277)) but I think should have
removed the "subset of" wording too.

As was noted during the review, we never added Zfa to the release notes.
This is corrected in this patch.

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

18 months ago[InstSimplify] Update tests for max(min,max) to cover more types.
Serguei Katkov [Wed, 19 Apr 2023 05:05:29 +0000 (12:05 +0700)]
[InstSimplify] Update tests for max(min,max) to cover more types.

18 months agoRevert "[AMDGPU] Ressociate patterns with sub to use SALU"
chenglin.bi [Wed, 19 Apr 2023 03:15:14 +0000 (11:15 +0800)]
Revert "[AMDGPU] Ressociate patterns with sub to use SALU"

The patch will caused dead loop because of DAGCombiner's canonicalization:
  // (x + C) - y  ->  (x - y) + C
  // y - (x + C)  ->  (y - x) - C
  // (x - C) - y  ->  (x - y) - C
  // (C - x) - y  ->  C - (x + y)

This reverts commit b3529b5bf3ba2cd7f38665de16450afefb263c9b.

18 months ago[RISCV] Customed lower vector nearbyint and rint in RISC-V.
Yeting Kuo [Tue, 18 Apr 2023 08:47:33 +0000 (16:47 +0800)]
[RISCV] Customed lower vector nearbyint and rint in RISC-V.

The patch lowers vector rint/nearbyint like vp.rint/nearbyint.

Reviewed By: craig.topper

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

18 months ago[RISCV] Remove SEW=8 case for floating-point
wangpc [Wed, 19 Apr 2023 02:45:10 +0000 (10:45 +0800)]
[RISCV] Remove SEW=8 case for floating-point

For floating-point instructions, SEW won't be 8. So we don't need
to generate scheduling resources for it.

Reviewed By: michaelmaitland

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

18 months ago[mlir][NFC] Minor cleanups around ShapedType
Matthias Springer [Wed, 19 Apr 2023 02:28:53 +0000 (11:28 +0900)]
[mlir][NFC] Minor cleanups around ShapedType

* Remove unnecessary casts.
* Use concrete shaped types (e.g., `MemRefType`, `RankedTensorType`) instead of `ShapedType` when possible.
* Minor documentation cleanups.

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

18 months ago[mlir][IR] Remove ShapedType::getSizeInBits
Matthias Springer [Wed, 19 Apr 2023 02:00:48 +0000 (11:00 +0900)]
[mlir][IR] Remove ShapedType::getSizeInBits

This function returns incorrect values for memrefs and vectors due to "widening".

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

18 months agobazel patch for OpenACC changes
Aart Bik [Wed, 19 Apr 2023 01:18:34 +0000 (18:18 -0700)]
bazel patch for OpenACC changes

Reviewed By: razvanlupusoru, anlunx

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

18 months agoRevert "[ExecutionEngine] Allow JIT tests to run on PowerPC."
Lang Hames [Wed, 19 Apr 2023 01:02:19 +0000 (18:02 -0700)]
Revert "[ExecutionEngine] Allow JIT tests to run on PowerPC."

This reverts commit d771f54107c4889cde449d2bf5ba13d193017716 due to builder
failures, e.g. https://lab.llvm.org/buildbot#builders/93/builds/14488.

18 months ago[libc] Add fuchsia/io.h for TestLogger
Alex Brachet [Wed, 19 Apr 2023 00:54:32 +0000 (00:54 +0000)]
[libc] Add fuchsia/io.h for TestLogger

b3c696fb86 started using TestLogger in tests. This class depends on
write_to_stderr which was previously only provided for Linux and
GPU's. Note, this function is used on those platforms in the libc
proper, though for Fuchsia we only ever want to provide this for
TestLogger.

No CMake files are changed because this fuchsia/ directory isn't
useful in any CMake build.

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

18 months ago[libc] move strerror and strsignal to OS msg maps
Michael Jones [Mon, 10 Apr 2023 20:10:27 +0000 (13:10 -0700)]
[libc] move strerror and strsignal to OS msg maps

Other OSes may have different mappings from error number to message.
This creates a system to allow new platforms to define their own
mappings.

Reviewed By: sivachandra

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

18 months ago[mlir][openacc] Fix build after D148389
Razvan Lupusoru [Tue, 18 Apr 2023 23:28:18 +0000 (16:28 -0700)]
[mlir][openacc] Fix build after D148389

Buildbot reported undefined references to LLVM dialect and Memref
dialect. The issue is that OpenACC dialect now depends on those
(since it attaches interface to the types) but the cmake file
did not explicitly add those dependencies.

Reviewed By: clementval, vzakhari

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

18 months ago[mlir][sparse] introduce a new compressed(hi) dimension level type
Peiming Liu [Tue, 18 Apr 2023 21:38:49 +0000 (21:38 +0000)]
[mlir][sparse] introduce a new compressed(hi) dimension level type

`compressed(hi)` is similar to `compressed`, but instead of reusing the previous position high as the current position low, it uses a pair of positions for each sparse index.

The patch only introduces the definition (syntax) but does not provide codegen implementation.

Reviewed By: aartbik

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

18 months ago[mlir][openacc] Add separate acc data operations for OpenACC data clauses
Razvan Lupusoru [Tue, 18 Apr 2023 00:01:51 +0000 (17:01 -0700)]
[mlir][openacc] Add separate acc data operations for OpenACC data clauses

As outlined in [1], data clauses are now implemented as separate operations
from the constructs that they belong to. Some of the highlighted benefits:
- Correctly represent dataflow of data operations
- Easier to track debugging information
- Friendlier to add attributes and to optimize operations

For now, all of the other operand lists are being kept until all references
to them in LLVM can be removed (such as those in flang lowering)

[1] https://discourse.llvm.org/t/rfc-openacc-dialect-data-operation-improvements/69825

Reviewed By: clementval, vzakhari

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

18 months ago[TableGen] Reduce the amount of storage space used for AddrSpaces in TypeSetByHwMode...
Craig Topper [Tue, 18 Apr 2023 22:13:54 +0000 (15:13 -0700)]
[TableGen] Reduce the amount of storage space used for AddrSpaces in TypeSetByHwMode. NFC

We reserved 16 AddrSpaces in every TypeSetByHwMode. But we only ever
use the first one on targets that make use of the AddrSpace feature.

The vector was populated by pushing for each entry in the ArrayRef
passed to the TypeSetByHwMode constructor. Each entry is a
ValueTypeByHwMode that stores one VT for each HwMode.

The vector is accessed by a loop in TypeSetByHwMode::getValueTypeByHwMode.
That loop is over HwModes with in the TypeSetByHwMode. This is
unrelated to how the vector was created. The entries in the vector
don't represent HwModes.

The targets that use AddrSpace don't make use of HwModes so the
loop in getValueTypeByHwMode will only run 1 iteration. So we only
the first entry in the vector is meaningful used.

This patch simplifies things by storing only 1 AddrSpace in
TypeSetByMode. Reducing the memory used by TypeSetByHwMode.
More work will be needed to support HwModes with AddrSpace if we
need a different AddrSpace for each HwMode.

Reviewed By: arsenm

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

18 months ago[gn build] Port c2114bd8e1f0
LLVM GN Syncbot [Tue, 18 Apr 2023 22:24:22 +0000 (22:24 +0000)]
[gn build] Port c2114bd8e1f0

18 months agoRevert "Non-debuginfo JITLink perf jitdump support"
Valentin Churavy [Tue, 18 Apr 2023 22:21:48 +0000 (18:21 -0400)]
Revert "Non-debuginfo JITLink perf jitdump support"

This reverts commit 76e1521b0acff739c0425d0fcbb9360fc17f1af8.

18 months ago[ELF] hash fn return type
Nathan Sidwell [Fri, 14 Apr 2023 21:12:05 +0000 (17:12 -0400)]
[ELF] hash fn return type

Be explicit about the 32bitness of the return type.

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

18 months ago[BOLT] Don't enable runtime when not building X86
Nathan Sidwell [Fri, 14 Apr 2023 12:51:05 +0000 (08:51 -0400)]
[BOLT] Don't enable runtime when not building X86

18 months agoRecommit "[ValueTracking] Apply the isKnownNonZero techniques in `ashr`/`lshl` to...
Noah Goldstein [Tue, 18 Apr 2023 21:34:56 +0000 (16:34 -0500)]
Recommit "[ValueTracking] Apply the isKnownNonZero techniques in `ashr`/`lshl` to `shl` and vice-versa" (2nd Try)

Wasn't related to the bug it was original thought to be causing.

18 months agoRecommit "[InstCombine] Add transforms for `(icmp {u|s}ge/le (xor X, Y), X)`" (2nd...
Noah Goldstein [Tue, 18 Apr 2023 21:34:17 +0000 (16:34 -0500)]
Recommit "[InstCombine] Add transforms for `(icmp {u|s}ge/le (xor X, Y), X)`" (2nd Try)

Wasn't related to the bug it was original thought to be causing.

18 months ago[InstCombine] Fix buggy `(mul X, Y)` -> `(shl X, Log2(Y))` transform PR62175
Noah Goldstein [Tue, 18 Apr 2023 21:34:02 +0000 (16:34 -0500)]
[InstCombine] Fix buggy `(mul X, Y)` -> `(shl X, Log2(Y))` transform PR62175

Bug was because we recognized patterns like `(shl 4, Z)` as a power of
2 we could take Log2 of (`2 + Z`), but doing `(shl X, (2 + Z))` can
cause a poison shift.
    https://alive2.llvm.org/ce/z/yuJm_k

The fix is to verify that `Log2(Y)` will be a non-poisonous shift
amount. We can do this with:
    `nsw` flag:
        - https://alive2.llvm.org/ce/z/yyyJBr
        - https://alive2.llvm.org/ce/z/YgubD_
    `nuw` flag:
        - https://alive2.llvm.org/ce/z/-4mpyV
        - https://alive2.llvm.org/ce/z/a6ik6r
    Prove `Y != 0`:
        - https://alive2.llvm.org/ce/z/ced4su
        - https://alive2.llvm.org/ce/z/X-JJHb

Reviewed By: nikic

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

18 months ago[ExecutionEngine] Allow JIT tests to run on PowerPC.
Lang Hames [Tue, 18 Apr 2023 22:11:58 +0000 (15:11 -0700)]
[ExecutionEngine] Allow JIT tests to run on PowerPC.

These tests passed on my ppc64le test machine. If they survive testing by the
buildbots then we can leave them enabled, and this will allow us to land the
new ppc64 JITLink backend (https://reviews.llvm.org/D148192).

18 months ago[AsmPrinter] Fix placement of function entry comments
Fangrui Song [Tue, 18 Apr 2023 22:01:36 +0000 (15:01 -0700)]
[AsmPrinter] Fix placement of function entry comments

The placement is currently wrong in the presence of function entry related
instrumentations (prefixdata, -fpatchable-function-entry=, -fsanitize=kcfi,
etc).

18 months ago[gwp_asan] Employ EXPECT_DEATH for zxtest compatibility
Caslyn Tonelli [Thu, 30 Mar 2023 00:03:05 +0000 (00:03 +0000)]
[gwp_asan] Employ EXPECT_DEATH for zxtest compatibility

Employ a similar tactic introduced by https://reviews.llvm.org/D94362
for gwp_asan tests. zxtest `ASSERT_DEATH` syntax differs from gtest in
that it expects a lambda.

zxtest does not have `EXPECT_DEATH`, so it introduced for Fuchsia builds
and wraps the expression with a lambda to create a compatible syntax
between zxtest and gtest for death tests.

An example of where this compatiblity is needed is in
`never_allocated.cpp`.

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

18 months agoRefactor BasicBlockSectionsProfileReader::getBBClusterInfoForFunction.
Rahman Lavaee [Tue, 18 Apr 2023 21:19:28 +0000 (21:19 +0000)]
Refactor BasicBlockSectionsProfileReader::getBBClusterInfoForFunction.

18 months ago[gn build] Port 76e1521b0acf
LLVM GN Syncbot [Tue, 18 Apr 2023 21:16:29 +0000 (21:16 +0000)]
[gn build] Port 76e1521b0acf

18 months agoNon-debuginfo JITLink perf jitdump support
Prem Chintalapudi [Tue, 18 Apr 2023 21:15:32 +0000 (17:15 -0400)]
Non-debuginfo JITLink perf jitdump support

This patch ports PerfJITEventListener to a JITLink plugin, but adds unwind record support and drops debuginfo support temporarily. Debuginfo can be enabled in the future by providing a way to obtain a DWARFContext from a LinkGraph.

See D146060 for an experimental implementation that adds debuginfo parsing.

Reviewed By: lhames

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

18 months ago[mlir][spirv][vector] Enable vector3 when converting to dot product
Lei Zhang [Tue, 18 Apr 2023 20:57:35 +0000 (13:57 -0700)]
[mlir][spirv][vector] Enable vector3 when converting to dot product

It's common to see such cases for contraction from convolution with
input channel as 3. Although we aren't utilizing all 4 lanes for
dot product, it should still be better than performing the multiply
and reduction separately.

Reviewed By: kuhar

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

18 months ago[Clang][NFC] Rename methods/vars to reflect their real usage
Bill Wendling [Mon, 17 Apr 2023 23:31:42 +0000 (16:31 -0700)]
[Clang][NFC] Rename methods/vars to reflect their real usage

The "getField" method is a bit confusing considering we also have a
"getFieldName" method. Instead, use "getFieldDecl" rather than
"getField".

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

18 months agoRemove hardcoded address bits in ABIMacOS_arm64
Jason Molenda [Tue, 18 Apr 2023 20:01:49 +0000 (13:01 -0700)]
Remove hardcoded address bits in ABIMacOS_arm64

A default number of addressing bits was hardcoded in
ABIMacOSX_arm64::FixAddress while we updated different
environments to fetch the value dynamically.  Remove
the old hardcoded value.

Differential Revision: https://reviews.llvm.org/D148603
rdar://108068497

18 months ago[NFC][lsan] Rename test function
Vitaly Buka [Tue, 18 Apr 2023 19:43:13 +0000 (12:43 -0700)]
[NFC][lsan] Rename test function

18 months ago[lsan] Disabled D148281 test on Darwin
Vitaly Buka [Tue, 18 Apr 2023 19:41:43 +0000 (12:41 -0700)]
[lsan] Disabled D148281 test on Darwin

For unknown reason it fails to link.

18 months ago[libc] Add two more recipes to do a cross build.
Siva Chandra Reddy [Fri, 31 Mar 2023 19:19:58 +0000 (12:19 -0700)]
[libc] Add two more recipes to do a cross build.

Reviewed By: jeffbailey

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

18 months ago[SLP]Add final resize to ShuffleCostEstimator::finalize member function and basic...
Alexey Bataev [Thu, 13 Apr 2023 18:28:54 +0000 (11:28 -0700)]
[SLP]Add final resize to ShuffleCostEstimator::finalize member function and basic add member functions.

Implemented the reshuffling in finalize member function + add basic
support for add member functions, used during vector build.

Part of D110978

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

18 months ago[libc][NFC] Move RoundingModeUtils to LibcFPTestHelpers.
Siva Chandra Reddy [Tue, 18 Apr 2023 00:35:28 +0000 (00:35 +0000)]
[libc][NFC] Move RoundingModeUtils to LibcFPTestHelpers.

Reviewed By: lntue

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

18 months agoReland "[clang-repl] Enable debugging of JIT-ed code."
Vassil Vassilev [Tue, 18 Apr 2023 16:22:04 +0000 (16:22 +0000)]
Reland "[clang-repl] Enable debugging of JIT-ed code."

Original commit message: "
[clang-repl] Enable debugging of JIT-ed code.

    This change follows llvm/llvm-project@21b5ebd and makes use of the jitlink
    infrastructure. In order to use this feature inside lldb one needs to run the
    lldb command: settings set plugin.jit-loader.gdb.enable on

    This works currently only on Darwin since jitlink is not a default ELF/x86-64
    backend yet.

    Differential revision: https://reviews.llvm.org/D148481
"

This patch reverts commit e64fbf2cca8c4763a058ba59a48ab8e4b8193028 and adds
the missing library dependencies which caused the initial failure.

18 months ago[mlir][sparse] remove redundate integration tests.
Peiming Liu [Tue, 18 Apr 2023 17:19:30 +0000 (17:19 +0000)]
[mlir][sparse] remove redundate integration tests.

The removed tests evaluate the same kernels in existing tests, namely `sparse_conv2d.mlir` and `spares_conv3d.mlir`.

Reviewed By: aartbik

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

18 months ago"Reland "[hwasan] Provide aliases for c allocation functions for Fuchsia"
Leonard Chan [Tue, 18 Apr 2023 18:26:01 +0000 (18:26 +0000)]
"Reland "[hwasan] Provide aliases for c allocation functions for Fuchsia"

This reverts commit cdf71d2ccd84ed7b8891924b04d1603f344038e9.

Relanding this because this only affects fuchsia builders and we moved
our hwasan builders to a non-blocking pool in the meantime.

18 months ago[PowerPC][LLD] Update DataLayout in tests
David Tenty [Tue, 18 Apr 2023 18:19:45 +0000 (14:19 -0400)]
[PowerPC][LLD] Update DataLayout in tests

Missed by the original commit of D147016 which updated the DataLayout for Power.

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

18 months ago[libc][Obvious] Fix the performance table in math function documentation.
Tue Ly [Tue, 18 Apr 2023 18:09:42 +0000 (14:09 -0400)]
[libc][Obvious] Fix the performance table in math function documentation.

18 months agoRevert "[SLP]Add final resize to ShuffleCostEstimator::finalize member function and...
Alexey Bataev [Tue, 18 Apr 2023 17:40:20 +0000 (10:40 -0700)]
Revert "[SLP]Add final resize to ShuffleCostEstimator::finalize member function and basic add member functions."

This reverts commit cd341f3f4878137d1c9e7a05c4c3a7bd8ff216dc to fix
a crash revealed by buildbot https://lab.llvm.org/buildbot#builders/124/builds/7108.

18 months ago[DAG] Restrict (fp_round (copysign X, Y)) -> (copysign (fp_round X), Y) combine
Philip Reames [Mon, 17 Apr 2023 21:36:27 +0000 (14:36 -0700)]
[DAG] Restrict (fp_round (copysign X, Y)) -> (copysign (fp_round X), Y) combine

This transformation creates an copysign node whose argument types do not match. RISCV does not handle such a case which results in a crash today. Looking at the relevant code in DAG, it looks like the process of enabling the non-matching types case was never completed for vectors at all. The transformation which triggered the RISCV crash is a specialization of another transform (specifically due to one use for profitability) which isn't enabled by default. Given that, I chose to match the preconditions for that other transform.

Other options here include:
* Updating RISCV codegen to handle the mismatched argument type case for vectors. This is slightly tricky as I don't see an obvious profitable lowering for this case which doesn't involve simply adding back in the round/trunc.
* Disabling the transform via a target hook.

This patch does involve two changes for AArch64 codegen. These could be called regressions, but well, the code after actually looks better than the code before.

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

18 months ago[ClangFE] Handle statement expressions properly with CheckAtomicAlignment().
Jonas Paulsson [Fri, 14 Apr 2023 10:12:29 +0000 (12:12 +0200)]
[ClangFE] Handle statement expressions properly with CheckAtomicAlignment().

Make CheckAtomicAlignment() return the computed pointer for reuse to avoid
emitting it twice.

Reviewed By: efriedma

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

18 months ago[X86] Create all-one vector(v8i32) for TESTC(X,~X) == TESTC(X,-1) if X is v8f32
Bing1 Yu [Tue, 18 Apr 2023 17:27:05 +0000 (01:27 +0800)]
[X86] Create all-one vector(v8i32) for TESTC(X,~X) == TESTC(X,-1) if X is v8f32

getAllOnesConstant can only take v8i32 instead of v8f32

Reviewed By: RKSimon

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

18 months ago[PowerPC] Add function pointer alignment to DataLayout
David Tenty [Tue, 18 Apr 2023 15:36:10 +0000 (11:36 -0400)]
[PowerPC] Add function pointer alignment to DataLayout

The alignment of function pointers was added to the Datalayout by
D57335 but currently is unset for the Power target. This will cause us
to compute a conservative minimum alignment of one if places like
Value::getPointerAlignment.

This patch implements the function pointer alignment in the Datalayout
for the Power backend and Power targets in clang, so we can query the
value for a particular Power target.

We come up with the correct value one of two ways:

- If the target uses function descriptor objects (i.e. ELFv1 & AIX ABIs),
  then a function pointer points to the descriptor, so use the alignment
  we would emit the descriptor with.
- If the target doesn't use function descriptor objects (i.e. ELFv2), a
  function pointer points to the global entry point, so use the minimum
  alignment for code on Power (i.e. 4-bytes).

Reviewed By: nemanjai

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

18 months ago[OpenMP][libomptarget][NFC] Remove error data member from AsyncInfoWrapperTy
Kevin Sala [Tue, 11 Apr 2023 16:41:39 +0000 (18:41 +0200)]
[OpenMP][libomptarget][NFC] Remove error data member from AsyncInfoWrapperTy

This patch removes the Err data member from the AsyncInfoWrapperTy class. Now the error
is stored externally, in the caller side, and it is explicitly passed to the
AsyncInfoWrapperTy::finalize() function as a reference.

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

18 months ago[vector] When trimming leading insertion dimensions, base the final result on the...
Benjamin Kramer [Tue, 18 Apr 2023 14:53:17 +0000 (16:53 +0200)]
[vector] When trimming leading insertion dimensions, base the final result on the ranks

This was incorrect when the number of dropped source dims was smaller
than the number of dropped dst dims. We still need to insert zeros if
there is anything dropped from the src.

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

18 months ago[Headers][doc] Add FMA intrinsic descriptions
Paul Robinson [Tue, 18 Apr 2023 16:26:35 +0000 (09:26 -0700)]
[Headers][doc] Add FMA intrinsic descriptions

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

18 months ago[GlobalOpt] Don't evaluate large memset (PR62191)
Nikita Popov [Tue, 18 Apr 2023 16:22:37 +0000 (18:22 +0200)]
[GlobalOpt] Don't evaluate large memset (PR62191)

If the memset is large, checking every single byte of the global
may be very slow. Add an upper bound on the size of memset we
handle.

For the common special case of memset zeroinitializer to zero,
add a fastpath that checks just that and is not length limited.

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

18 months ago[libc][NFC] Move ExecuteFunction test util to test/UnitTest.
Siva Chandra Reddy [Tue, 18 Apr 2023 08:09:18 +0000 (08:09 +0000)]
[libc][NFC] Move ExecuteFunction test util to test/UnitTest.

Reviewed By: lntue

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

18 months ago[flang] Fixed substr access in embox/rebox CodeGen.
Slava Zakharin [Tue, 18 Apr 2023 00:06:14 +0000 (17:06 -0700)]
[flang] Fixed substr access in embox/rebox CodeGen.

The code was using the original operand of the operation, while
it should have been using the remapped operands via the adaptor.

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