platform/upstream/llvm.git
3 years ago[SLP][AArch64] Precommit test for D103629, checking <4 x i8> loads. NFC.
Sjoerd Meijer [Thu, 3 Jun 2021 16:04:56 +0000 (17:04 +0100)]
[SLP][AArch64] Precommit test for D103629, checking <4 x i8> loads. NFC.

3 years ago[Analyzer][solver] Fix crashes during symbol simplification
Gabor Marton [Wed, 23 Jun 2021 14:25:49 +0000 (16:25 +0200)]
[Analyzer][solver] Fix crashes during symbol simplification

Consider the code
```
  void f(int a0, int b0, int c)
  {
      int a1 = a0 - b0;
      int b1 = (unsigned)a1 + c;
      if (c == 0) {
          int d = 7L / b1;
      }
  }
```
At the point of divisiion by `b1` that is considered to be non-zero,
which results in a new constraint for `$a0 - $b0 + $c`. The type
of this sym is unsigned, however, the simplified sym is `$a0 -
$b0` and its type is signed. This is probably the result of the
inherent improper handling of casts. Anyway, Range assignment
for constraints use this type information. Therefore, we must
make sure that first we simplify the symbol and only then we
assign the range.

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

3 years ago[lldb] Skip TestDataFormatterSynthVal.py with GCC as the test compiler
Raphael Isemann [Fri, 25 Jun 2021 09:48:12 +0000 (11:48 +0200)]
[lldb] Skip TestDataFormatterSynthVal.py with GCC as the test compiler

3 years ago[lldb] Skip libstdc++ tests failing with GCC
Raphael Isemann [Fri, 25 Jun 2021 09:45:57 +0000 (11:45 +0200)]
[lldb] Skip libstdc++ tests failing with GCC

Tracked in llvm.org/pr50861

These tests fail with all GCC versions I tested (8.5, 9.4, 10.3, 11.1).

3 years ago[lldb] Skip tests failing with GCC due to LLDB not being able to call constructors
Raphael Isemann [Thu, 24 Jun 2021 15:21:12 +0000 (17:21 +0200)]
[lldb] Skip tests failing with GCC due to LLDB not being able to call constructors

Tracked in llvm.org/pr50814

These tests fail with all GCC versions I tested (8.5, 9.4, 10.3, 11.1).

3 years ago[SCEV] Support single-cond range check idiom in applyLoopGuards.
Florian Hahn [Fri, 25 Jun 2021 08:29:47 +0000 (09:29 +0100)]
[SCEV] Support single-cond range check idiom in applyLoopGuards.

This patch extends applyLoopGuards to detect a single-cond range check
idiom that InstCombine generates.

It extends applyLoopGuards to detect conditions of the form
(-C1 + X < C2). InstCombine will create this form when combining two
checks of the form (X u< C2 + C1) and (X >=u C1).

In practice, this enables us to correctly compute a tight trip count
bounds for code as in the function below. InstCombine will fold the
minimum iteration check created by LoopRotate with the user check (< 8).

    void unsigned_check(short *pred, unsigned width) {
        if (width < 8) {
            for (int x = 0; x < width; x++)
                pred[x] = pred[x] * pred[x];
        }
    }

As a consequence, LLVM creates dead vector loops for the code above,
e.g. see https://godbolt.org/z/cb8eTcqET

https://alive2.llvm.org/ce/z/SHHW4d

Reviewed By: nikic

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

3 years ago[OpaquePtr] Allow alias to opaque pointer
Nikita Popov [Fri, 25 Jun 2021 09:13:36 +0000 (11:13 +0200)]
[OpaquePtr] Allow alias to opaque pointer

By relaxing the LLParser pointer type assertion.

3 years ago[OpaquePtr] Split force-opaque-pointers test (NFC)
Nikita Popov [Fri, 25 Jun 2021 09:08:19 +0000 (11:08 +0200)]
[OpaquePtr] Split force-opaque-pointers test (NFC)

Separate out the case that uses llvm-dis without
--force-opaque-pointers. This will generally produce a different
result from the other cases, because things like global symbol
pointers will be non-opaque in this case.

3 years ago[lldb] Fix memory tag unsupported test
David Spickett [Fri, 25 Jun 2021 08:52:36 +0000 (08:52 +0000)]
[lldb] Fix memory tag unsupported test

This corrects the test added in
31f9960c38529ce805edf9764535eb0ce188cadf
and temporarily patched in
3b4aad1186e8e8e6f6c7887cb5e8d9bfd7d3ce2f.

This test checks that the memory tag read
command errors when you use it on a platform
without memory tagging.
(which is why we skip the test if you actually
have MTE)

The problem with this test is that there's
two levels of unsupported each with it's own
specific error.

On anything that isn't AArch64, there's no
tagging extension we support. So you're told
that that is the case. As in "this won't ever work".

When you're on AArch64 we know that MTE could
be present on the remote and when we find that it
isn't, we tell you that instead.

Expect a different error message on AArch64 to fix
the test.

3 years ago[llvm-cov] Enforce alignment of function records
serge-sans-paille [Tue, 22 Jun 2021 20:50:37 +0000 (22:50 +0200)]
[llvm-cov] Enforce alignment of function records

Function Records are required to be aligned on 8 bytes. This is enforced for each
records except the first, when one relies on the default alignment within an
std::string. There's no such guarantee, and indeed on 32 bits for some
implementation of std::string this is not enforced.

Provide a portable implementation based on llvm's MemoryBuffer.

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

3 years ago[AArch64] Custom lower <4 x i8> loads
Sjoerd Meijer [Thu, 24 Jun 2021 18:29:13 +0000 (19:29 +0100)]
[AArch64] Custom lower <4 x i8> loads

This custom lowers <4 x i8> vector loads using a 32-bit load, followed by 2
SSHLL instructions to extend it to e.g. a <4 x i32> vector. Before, it was
really inefficient and expensive to construct a <4 x i32> for this as 4 byte
loads and 4 moves were used. With this improvement SLP vectorisation might for
example become profitable, see D103629.

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

3 years ago[OpaquePtr] Enumerate alloca type
Nikita Popov [Fri, 25 Jun 2021 08:48:57 +0000 (10:48 +0200)]
[OpaquePtr] Enumerate alloca type

This is no longer implicitly enumerated through the pointer type.

3 years ago[OpaquePtr] Enumerate global variable type
Nikita Popov [Fri, 25 Jun 2021 08:45:29 +0000 (10:45 +0200)]
[OpaquePtr] Enumerate global variable type

This is no longer implicitly enumerated through the pointer type.

3 years ago[PowerPC] Change VSRpRC allocation order
Qiu Chaofan [Fri, 25 Jun 2021 08:00:07 +0000 (16:00 +0800)]
[PowerPC] Change VSRpRC allocation order

On PowerPC, VSRpRC represents the pairs of even and odd VSX register,
and VRRC corresponds to higher 32 VSX registers. In some cases, extra
copies are produced when handling incoming VRRC arguments with VSRpRC.

This patch changes allocation order of VSRpRC to eliminate this kind of
copy.

Stack frame sizes may increase if allocating non-volatile registers, and
some other vector copies happen. They need fix in future changes.

Reviewed By: nemanjai

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

3 years ago[LLD] [COFF] Fix handling of LTO comdats with nontrivial selection types after 728cc0...
Martin Storsjö [Sun, 20 Jun 2021 20:58:46 +0000 (23:58 +0300)]
[LLD] [COFF] Fix handling of LTO comdats with nontrivial selection types after 728cc0075e5dfdb454eb

Commit 728cc0075e5dfdb454ebe6418b63bdffae71ec14 made comdat symbols
from LTO objects be treated as any regular comdat symbol. This works
great for symbols that actually are IMAGE_COMDAT_SELECT_ANY, but
if the symbols have a less trivial selection type that require comparing
either the section chunk size or contents, we can't check that before
actually doing the LTO compilation.

Therefore bring back one aspect of handling from before; that comdat
resolution with a leader from an LTO symbol is essentially skipped,
like it was before 728cc0075e5dfdb454ebe6418b63bdffae71ec14.

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

3 years ago[ARM] Fix crash in chained BFI combine due to incorrectly RAUW'ing a node.
Amara Emerson [Thu, 24 Jun 2021 18:10:42 +0000 (11:10 -0700)]
[ARM] Fix crash in chained BFI combine due to incorrectly RAUW'ing a node.

For a bfi chain like:
a = bfi input, x, y
b = bfi a, x', y'

The previous code was RAUW'ing a with x, mutating the second 'b' bfi, and when
SelectionDAG's CSE code ended up deleting it unexpectedly, bad things happend.
There's no need to RAUW in this case because we can just return our newly
created replacement BFI node. It also looked incorrect because it didn't account
for other users of the 'a' bfi.

Since it seems that chains of more than 2 BFI nodes are hard/impossible to
produce without this combine kicking in at some point, I've removed that
functionality since it had no test coverage.

rdar://79095399

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

3 years ago[RISCV] Permit larger RVV stacks and stack offsets
Fraser Cormack [Tue, 22 Jun 2021 17:08:52 +0000 (18:08 +0100)]
[RISCV] Permit larger RVV stacks and stack offsets

This patch teaches the compiler to generate code to handle larger RVV
stack sizes and stack offsets which resolve an amount larger than 2047
vector registers in size.

The previous behaviour was asserting on such large values as it was only
able to materialize the constant by feeding it to the 12-bit immediate
of an `ADDI` instruction. The compiler can now materialize this amount
into a temporary register before continuing with the computation.

A test case for this scenario is included which also checks that the
temporary register used to materialize the amount doesn't require an
additional spill slot over what we're already reserving for RVV code.

Reviewed By: rogfer01

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

3 years ago[X86] Add description of FXAM instruction
Serge Pavlov [Wed, 23 Jun 2021 06:33:55 +0000 (13:33 +0700)]
[X86] Add description of FXAM instruction

Previously this instruction could be used only in assembler. This change
makes it available for compiler also. Scheduling information was copied
from FTST instruction, hopefully this can be a satisfactory approximation.

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

3 years ago[MC][ELF] Change SHT_LLVM_CALL_GRAPH_PROFILE relocations from SHT_RELA to SHT_REL
Fangrui Song [Fri, 25 Jun 2021 04:35:48 +0000 (21:35 -0700)]
[MC][ELF] Change SHT_LLVM_CALL_GRAPH_PROFILE relocations from SHT_RELA to SHT_REL

... even on targets preferring RELA. The section is only consumed by ld.lld
which can handle REL.

Follow-up to D104080 as I explained in the review. There are two advantages:

* The D104080 code only handles RELA, so arm/i386/mips32 etc may warn for -fprofile-use=/-fprofile-sample-use= usage.
* Decrease object file size for RELA targets

While here, change the relocation to relocate weights, instead of 0,1,2,3,..
I failed to catch the issue during review.

3 years agoRevert "[BuildLibCalls/SimplifyLibCalls] Fix attributes on created CallInst instruct...
Arthur Eubanks [Fri, 25 Jun 2021 02:21:16 +0000 (19:21 -0700)]
Revert "[BuildLibCalls/SimplifyLibCalls]  Fix attributes on created CallInst instructions."

This reverts commit 1eda5453f2dcc9a9a4b4578fe74163c529974503.

Causes https://crbug.com/1223647:
Incompatible argument and return types for 'returned' attribute
  tail call void @llvm.memset.p0i8.i64(i8* noalias noundef returned writeonly align 1 dereferenceable(255) %arraydecay, i8 0, i64 255, i1 false), !dbg !985

3 years ago[lld-macho] Move ICF members from InputSection to ConcatInputSection
Jez Ng [Fri, 25 Jun 2021 02:23:04 +0000 (22:23 -0400)]
[lld-macho] Move ICF members from InputSection to ConcatInputSection

`icfEqClass` only makes sense on ConcatInputSections since (in contrast
to literal sections) they are deduplicated as an atomic unit.

Similarly, `hasPersonality` and `replacement` don't make sense on
literal sections.

This mirrors LLD-ELF, which stores `icfEqClass` only on non-mergeable
sections.

Reviewed By: #lld-macho, gkm

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

3 years ago[PowerPC] Move PPCBranchSelector as close to asm printer as possible
Kai Luo [Fri, 25 Jun 2021 01:43:31 +0000 (01:43 +0000)]
[PowerPC] Move PPCBranchSelector as close to asm printer as possible

Currently, PPCBranchSelector is not immediately preceding asm printer pass. `-debug-pass=Structure` gives
```
      PowerPC Branch Selector
      Contiguously Lay Out Funclets
      StackMap Liveness Analysis
      Live DEBUG_VALUE analysis
      Lazy Machine Block Frequency Analysis
      Machine Optimization Remark Emitter
      Linux PPC Assembly Printer
```
After the patch
```
      Contiguously Lay Out Funclets
      StackMap Liveness Analysis
      Live DEBUG_VALUE analysis
      PowerPC Branch Selector
      Lazy Machine Block Frequency Analysis
      Machine Optimization Remark Emitter
      Linux PPC Assembly Printer
```

Reviewed By: nemanjai, #powerpc

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

3 years ago[PowerPC] Add XL compat __compare_and_swap builtins
Jinsong Ji [Fri, 25 Jun 2021 01:08:32 +0000 (01:08 +0000)]
[PowerPC] Add XL compat __compare_and_swap builtins

Prototype
int __compare_and_swap (volatile int* addr, int* old_val_addr, int
new_val);

int __compare_and_swaplp (volatile long* addr, long* old_val_addr, long
new_val);

Refer to
https://www.ibm.com/docs/en/xl-c-and-cpp-aix/16.1?topic=functions-compare-swap-compare-swaplp

Reviewed By: w2yehia

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

3 years ago[RISCV] Add vget/vset intrinsics for inserting and extracting between different lmuls.
Craig Topper [Thu, 24 Jun 2021 22:53:47 +0000 (15:53 -0700)]
[RISCV] Add vget/vset intrinsics for inserting and extracting between different lmuls.

These allow getting a whole register from a larger lmul. Or
inserting a whole register into a larger lmul register. Fractional
lmuls are not supported as they would require a vslide.

Based on this update to the intrinsic doc
https://github.com/riscv/rvv-intrinsic-doc/pull/99

Reviewed By: HsiangKai

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

3 years agoUnsupported sanitize-coverage-old-pm.c on 32 bit Arm
Muhammad Omair Javaid [Fri, 25 Jun 2021 00:55:25 +0000 (00:55 +0000)]
Unsupported sanitize-coverage-old-pm.c on 32 bit Arm

sanitize-coverage-old-pm.c is passing intermittently on different
arm v7 machines. This patch moves it to unsupported on all arm 32
targets reporting armv8l core.

3 years agoRevert "[hwasan] print exact mismatch offset for short granules."
Vitaly Buka [Fri, 25 Jun 2021 00:30:03 +0000 (17:30 -0700)]
Revert "[hwasan] print exact mismatch offset for short granules."

Breaks sanitizer-x86_64-linux-android and sanitizer-x86_64-linux-qemu bots.

This reverts commit 7e3f8b8affd0392c997564b5f34c61d6115a3516.

3 years ago[scudo] Clang-format tests
Vitaly Buka [Fri, 25 Jun 2021 00:28:01 +0000 (17:28 -0700)]
[scudo] Clang-format tests

3 years ago[gn build] Port 69d5a6662115
LLVM GN Syncbot [Fri, 25 Jun 2021 00:29:34 +0000 (00:29 +0000)]
[gn build] Port 69d5a6662115

3 years ago[libcxx][modularisation] splits `<utility>` into self-contained headers
Christopher Di Bella [Wed, 9 Jun 2021 23:10:17 +0000 (23:10 +0000)]
[libcxx][modularisation] splits `<utility>` into self-contained headers

* moves `std::hash` and `std::unary_function` into `__functional`
* Everything else goes into `__utility/${NAME}.h`

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

3 years agoChange the flang reshape runtime routine interface to use a result
Mark Leair [Thu, 24 Jun 2021 23:55:45 +0000 (16:55 -0700)]
Change the flang reshape runtime routine interface to use a result
argument instead of a result result object.

Change the reshape flang unit test to use the new interface. Also, add an
order argument to exercise the order subscript code in the rehsape runtime
routine.

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

3 years agoRevert "[Clang] XFAIL sanitize-coverage-old-pm.c on 32bit Armv8l"
Muhammad Omair Javaid [Thu, 24 Jun 2021 23:59:32 +0000 (04:59 +0500)]
Revert "[Clang] XFAIL sanitize-coverage-old-pm.c on 32bit Armv8l"

This reverts commit c5028f3473ed50a7433fe278984cd1a755b338b9.

3 years ago[PowerPC] Fix vec_add for 64-bit on pre-Power7 subtargets
Nemanja Ivanovic [Thu, 24 Jun 2021 23:41:12 +0000 (18:41 -0500)]
[PowerPC] Fix vec_add for 64-bit on pre-Power7 subtargets

The shift of the carry was actually incorrect.

3 years agoUpdate Bazel build for 744146f60b
Geoffrey Martin-Noble [Thu, 24 Jun 2021 23:33:13 +0000 (16:33 -0700)]
Update Bazel build for 744146f60b

Updates Bazel build files to match
https://github.com/llvm/llvm-project/commit/744146f60b

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

3 years ago[PowerPC] Fix bswap combine for big endian systems
Nemanja Ivanovic [Thu, 24 Jun 2021 23:03:06 +0000 (18:03 -0500)]
[PowerPC] Fix bswap combine for big endian systems

Commit 0464586ac515e8cfebe4c7615387fd625c8869f5 added a combine
for a 64-bit load feeding a bswap but the implementation is only
correct for little endian systems.
This fixes it for big endian systems.

3 years ago[MLIR][Sparse] Refactor lattice code into its own file
Gus Smith [Thu, 24 Jun 2021 22:18:40 +0000 (22:18 +0000)]
[MLIR][Sparse] Refactor lattice code into its own file

Moves iteration lattice/merger code into new SparseTensor/Utils directory. A follow-up CL will add lattice/merger unit tests.

Reviewed By: aartbik

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

3 years ago[OpenMP][NFC] libomp: fix wrong debug assertion.
AndreyChurbanov [Thu, 24 Jun 2021 23:02:14 +0000 (02:02 +0300)]
[OpenMP][NFC] libomp: fix wrong debug assertion.

Normalized bounds of chunk of iterations to steal from are inclusive,
so upper bound should not be decremented in expression to check.
Problem was in attempt to steal iterations 0:0, that caused assertion after
wrong decrement. Reported in comment to https://reviews.llvm.org/D103648.

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

3 years ago[AMDGPU] Reserve AMDGPU ELF e_flags machine 0x43
Tony Tye [Thu, 24 Jun 2021 02:01:24 +0000 (02:01 +0000)]
[AMDGPU] Reserve AMDGPU ELF e_flags machine 0x43

Reviewed By: kzhuravl, rampitec

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

3 years agoDisable TestAArch64UnwindPAC.py for non PAC targets
Muhammad Omair Javaid [Thu, 24 Jun 2021 22:49:05 +0000 (22:49 +0000)]
Disable TestAArch64UnwindPAC.py for non PAC targets

TestAArch64UnwindPAC.py started failing on LLDB buildbot as underlying
hardware does not support PAC. This patch skips this test for targets
which do not support PAC feature.

3 years ago[mlir][VectorToGPU] Add conversion for scf::For op with Matrix operands
thomasraoux [Thu, 24 Jun 2021 22:42:28 +0000 (15:42 -0700)]
[mlir][VectorToGPU] Add conversion for scf::For op with Matrix operands

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

3 years ago[mlir][VectorToGPU] Add conversion for splat constant to MMA const matrix
thomasraoux [Thu, 24 Jun 2021 22:29:49 +0000 (15:29 -0700)]
[mlir][VectorToGPU] Add conversion for splat constant to MMA const matrix

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

3 years agoDisable check_qmemtags unit tests
Muhammad Omair Javaid [Thu, 24 Jun 2021 22:30:06 +0000 (22:30 +0000)]
Disable check_qmemtags unit tests

check_qmemtags tests are broken on Arm 32 bits. This patch disables
these tests.

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

3 years ago[ELF] Fix .rela.llvm.call-graph-profile detection after D104080
Fangrui Song [Thu, 24 Jun 2021 22:21:28 +0000 (15:21 -0700)]
[ELF] Fix .rela.llvm.call-graph-profile detection after D104080

A SHT_SYMTAB section's sh_info is the number of local symbols.
sh_info may coincide with the section header index of SHT_LLVM_CALL_GRAPH_PROFILE.

3 years agoFix typo in TestMemoryTag.py
Muhammad Omair Javaid [Thu, 24 Jun 2021 22:17:50 +0000 (22:17 +0000)]
Fix typo in TestMemoryTag.py

TestMemoryTag.py should fail if underlying target doesnt support MTE.

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

3 years ago[OptTable] Rename PrintHelp to printHelp
Fangrui Song [Thu, 24 Jun 2021 21:47:03 +0000 (14:47 -0700)]
[OptTable] Rename PrintHelp to printHelp

To be consistent with other member functions and match the coding standard.

3 years ago[LLDB] Fix broken LLDB build due MemoryTagManager.h
Muhammad Omair Javaid [Thu, 24 Jun 2021 21:35:10 +0000 (02:35 +0500)]
[LLDB] Fix broken LLDB build due MemoryTagManager.h

Commit e0f2744a115c41e8d295b93dd74b39535c852390 broke LLDB build.
This patch fixes the build. Tested on Arm/AArch64 Linux.

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

3 years ago[ADT] Complete the StringRef case insensitive method renaming
Martin Storsjö [Wed, 23 Jun 2021 20:22:25 +0000 (23:22 +0300)]
[ADT] Complete the StringRef case insensitive method renaming

Remove the old name for the methods. These were only left behind to
ease the transition for downstreams.

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

3 years ago[mlir] Rename StringRef _lower() method calls to _insensitive()
Martin Storsjö [Thu, 24 Jun 2021 08:06:49 +0000 (11:06 +0300)]
[mlir] Rename StringRef _lower() method calls to _insensitive()

3 years ago[lldb] Rename StringRef _lower() method calls to _insensitive()
Martin Storsjö [Thu, 24 Jun 2021 08:06:42 +0000 (11:06 +0300)]
[lldb] Rename StringRef _lower() method calls to _insensitive()

3 years ago[lld] Rename StringRef _lower() method calls to _insensitive()
Martin Storsjö [Thu, 24 Jun 2021 08:06:35 +0000 (11:06 +0300)]
[lld] Rename StringRef _lower() method calls to _insensitive()

3 years ago[clang-tools-extra] Rename StringRef _lower() method calls to _insensitive()
Martin Storsjö [Thu, 24 Jun 2021 08:04:01 +0000 (11:04 +0300)]
[clang-tools-extra] Rename StringRef _lower() method calls to _insensitive()

3 years ago[clang] Rename StringRef _lower() method calls to _insensitive()
Martin Storsjö [Wed, 23 Jun 2021 11:52:36 +0000 (14:52 +0300)]
[clang] Rename StringRef _lower() method calls to _insensitive()

This is mostly a mechanical change, but a testcase that contains
parts of the StringRef class (clang/test/Analysis/llvm-conventions.cpp)
isn't touched.

3 years ago[llvm] Rename StringRef _lower() method calls to _insensitive()
Martin Storsjö [Wed, 23 Jun 2021 11:52:36 +0000 (14:52 +0300)]
[llvm] Rename StringRef _lower() method calls to _insensitive()

This is a mechanical change. This actually also renames the
similarly named methods in the SmallString class, however these
methods don't seem to be used outside of the llvm subproject, so
this doesn't break building of the rest of the monorepo.

3 years ago[ADT] Rename StringRef case insensitive methods for clarity
Martin Storsjö [Wed, 23 Jun 2021 11:52:36 +0000 (14:52 +0300)]
[ADT] Rename StringRef case insensitive methods for clarity

Rename functions with the `xx_lower()` names to `xx_insensitive()`.
This was requested during the review of D104218.

Test names and variables in llvm/unittests/ADT/StringRefTest.cpp
that refer to "lower" are renamed to "insensitive" correspondingly.

Unused function aliases with the former method names are left
in place (without any deprecation attributes) for transition purposes.

All references within the monorepo will be changed (with essentially
mechanical changes), and then the old names will be removed in a
later commit.

Also remove the superfluous method names at the start of doxygen
comments, for the methods that are touched here. (There are more
occurrances of this left in other methods though.) Also remove
duplicate doxygen comments from the implementation file.

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

3 years ago[Hexagon] Opaquify pointer usage in GEP commoning
Krzysztof Parzyszek [Thu, 24 Jun 2021 15:50:06 +0000 (10:50 -0500)]
[Hexagon] Opaquify pointer usage in GEP commoning

3 years ago[LangRef] clarify the meaning of noimplicitfloat
Bob Haarman [Thu, 10 Jun 2021 19:03:16 +0000 (12:03 -0700)]
[LangRef] clarify the meaning of noimplicitfloat

Adds some more text to the documentation for the noimplicitfloat
function attribute. Hopefully, this makes it clearer what
qualifies an implicit vs. explicit float, without becoming overly
long or going into target-specific details.

Reviewed By: rnk, craig.topper

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

3 years ago[lld-macho] Align all cstrings to 16 bytes when deduplicating
Jez Ng [Thu, 24 Jun 2021 20:22:49 +0000 (16:22 -0400)]
[lld-macho] Align all cstrings to 16 bytes when deduplicating

We previously did this only for x86_64, but it turns out that
arm64 needs this too -- see PR50791.

Ultimately this is a hack, and we should avoid over-aligning strings
that don't need it. I'm just having a hard time figuring out how ld64 is
determining the right alignment.

No new test for this since we were already testing this behavior for
x86_64, and extending it to arm64 seems too trivial.

Reviewed By: #lld-macho, thakis

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

3 years ago[Polly][ScopInliner] Indicate if the IR has changed.
Michael Kruse [Thu, 24 Jun 2021 20:17:21 +0000 (15:17 -0500)]
[Polly][ScopInliner] Indicate if the IR has changed.

Return true to indicate that the IR has changed if the nested pass
manager has changed it.

Fixes the ScopInliner tests in the LLVM_ENABLE_EXPENSIVE_CHECKS=ON
configuration.

Thanks to Alexandre Ganea for reporting.

3 years ago[compiler-rt][test] fix zero_page_pc on arm64e
Emily Shi [Thu, 24 Jun 2021 01:11:51 +0000 (18:11 -0700)]
[compiler-rt][test] fix zero_page_pc on arm64e

on arm64e, pointer auth would catch this access violation before asan.
sign the function pointer so pointer auth will ignore this violation and let asan catch it in this test case.

rdar://79652167

Reviewed By: delcypher

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

3 years ago[InstCombine] Make indexed compare fold opaque ptr compatible
Nikita Popov [Thu, 24 Jun 2021 20:31:06 +0000 (22:31 +0200)]
[InstCombine] Make indexed compare fold opaque ptr compatible

Rather than relying on pointer type equality (which, for a change,
is silently incorrect with opaque pointers) check that the GEP
source element types match.

3 years ago[OpaquePtr] Introduce option to force all pointers to be opaque pointers
Arthur Eubanks [Thu, 24 Jun 2021 15:21:24 +0000 (08:21 -0700)]
[OpaquePtr] Introduce option to force all pointers to be opaque pointers

We don't want to start updating tests to use opaque pointers until we're
close to the opaque pointer transition. However, before the transition
we want to run tests as if pointers are opaque pointers to see if there
are any crashes.

At some point when we have a flag to only create opaque pointers in the
bitcode and textual IR readers, and when we have fixed all places that
try to read a pointee type, this flag will be useless. However, until
then, this can help us find issues more easily.

Since the cl::opt is read into LLVMContext, we need to make sure
LLVMContext is created after cl::ParseCommandLineOptions().

Previously ValueEnumerator would visit the value types of global values
via the pointer type, but with opaque pointers we have to manually visit
the value type.

Reviewed By: nikic, dexonsmith

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

3 years ago[WPD] Don't optimize calls more than once
Arthur Eubanks [Wed, 23 Jun 2021 01:53:12 +0000 (18:53 -0700)]
[WPD] Don't optimize calls more than once

WPD currently assumes that there is a one to one correspondence between
type test assume sequences and virtual calls. However, with
-fstrict-vtable-pointers this may not be true. This ends up causing
crashes when we try to optimize a virtual call more than once (
applyUniformRetValOpt()/applyUniqueRetValOpt()/applyVirtualConstProp()/applySingleImplDevirt()).

applySingleImplDevirt() actually didn't previous crash because it would
replace the devirtualized call with the same direct call. Adding an
assert that the call is indirect causes the corresponding test to crash
with the rest of the patch.

This makes Chrome successfully build with -fstrict-vtable-pointers + WPD.

Reviewed By: tejohnson

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

3 years ago[Clang-Format] Add ReferenceAlignment directive
Seraphime Kirkovski [Thu, 24 Jun 2021 19:24:59 +0000 (21:24 +0200)]
[Clang-Format] Add ReferenceAlignment directive

This introduces ReferenceAlignment style option modeled around
PointerAlignment.
Style implementors can specify Left, Right, Middle or Pointer to
follow whatever the PointerAlignment option specifies.

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

3 years ago[PowerPC] Combine 64-bit bswap(load) without LDBRX
Nemanja Ivanovic [Thu, 24 Jun 2021 19:44:17 +0000 (14:44 -0500)]
[PowerPC] Combine 64-bit bswap(load) without LDBRX

When targeting CPUs that don't have LDBRX, we end up producing code that is
very inefficient and large for this common idiom. This patch just
optimizes it two 32-bit LWBRX instructions along with a merge.

This fixes https://bugs.llvm.org/show_bug.cgi?id=49610

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

3 years ago[InstCombine] Make varargs cast transform compatible with opaque ptrs
Nikita Popov [Thu, 24 Jun 2021 19:46:55 +0000 (21:46 +0200)]
[InstCombine] Make varargs cast transform compatible with opaque ptrs

The whole transform can be dropped once we have fully transitioned
to opaque pointers (as it's purpose is to remove no-op pointer
casts). For now, make sure that it handles opaque pointers correctly.

3 years ago[BuildLibCalls/SimplifyLibCalls] Fix attributes on created CallInst instructions.
Jonas Paulsson [Wed, 9 Jun 2021 21:35:22 +0000 (23:35 +0200)]
[BuildLibCalls/SimplifyLibCalls]  Fix attributes on created CallInst instructions.

- When emitting libcalls, do not only pass the calling convention from the
  function prototype but also the attributes.

- Do not pass attributes from e.g. libc memcpy to llvm.memcpy.

Review: Reid Kleckner, Eli Friedman, Arthur Eubanks

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

3 years ago[clang-format][NFC] Fix documentation
Björn Schäpers [Thu, 24 Jun 2021 19:19:14 +0000 (21:19 +0200)]
[clang-format][NFC] Fix documentation

This amends 64cf5eba06bd4f81954253b1e7a10be6fe92403e.

3 years ago[CodeGen] Don't create fake FunctionDecls when generating block/byref
Akira Hatanaka [Thu, 24 Jun 2021 18:45:52 +0000 (11:45 -0700)]
[CodeGen] Don't create fake FunctionDecls when generating block/byref
copy/dispose helper functions

We found out that these fake functions would cause clang to crash if the
changes proposed in https://reviews.llvm.org/D98799 were made.

The original patch was reverted in f681fd927e883301658dcac9a78109ee0aba12a8
because debug locations were missing in the body of the block byref
helper functions. This patch fixes the bug by calling CreateArtificial
after the calls to StartFunction.

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

3 years ago[NFC][Codegen] Autogenerate Thumb2/setjmp_longjmp.ll test
Roman Lebedev [Thu, 24 Jun 2021 18:33:43 +0000 (21:33 +0300)]
[NFC][Codegen] Autogenerate Thumb2/setjmp_longjmp.ll test

3 years ago[AMDGPU] Add gfx1035 target
Aakanksha Patil [Thu, 24 Jun 2021 18:32:41 +0000 (14:32 -0400)]
[AMDGPU] Add gfx1035 target

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

3 years ago[SimplifyCFG] Tail-merging all blocks with `resume` terminator
Roman Lebedev [Thu, 24 Jun 2021 18:25:06 +0000 (21:25 +0300)]
[SimplifyCFG] Tail-merging all blocks with `resume` terminator

Similar to what we already do for `ret` terminators.
As noted by @rnk, clang seems to already generate a single `ret`/`resume`,
so this isn't likely to cause widespread changes.

Reviewed By: rnk

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

3 years ago[libcxx][nfc] Update the synopsis comment in <ranges> to include drop_view.
zoecarver [Thu, 24 Jun 2021 18:05:50 +0000 (11:05 -0700)]
[libcxx][nfc] Update the synopsis comment in <ranges> to include drop_view.

3 years ago[libcxx][ranges] Enable borrowed range for drop view when T has borrowing enabled.
zoecarver [Thu, 24 Jun 2021 18:05:14 +0000 (11:05 -0700)]
[libcxx][ranges] Enable borrowed range for drop view when T has borrowing enabled.

3 years ago[gn build] Port 6adbc83ee9e4
LLVM GN Syncbot [Thu, 24 Jun 2021 18:02:44 +0000 (18:02 +0000)]
[gn build] Port 6adbc83ee9e4

3 years ago[libcxx][modularisation] moves <utility> content out of <type_traits>
Christopher Di Bella [Sat, 5 Jun 2021 02:47:47 +0000 (02:47 +0000)]
[libcxx][modularisation] moves <utility> content out of <type_traits>

Moves:

* `std::move`, `std::forward`, `std::declval`, and `std::swap` into
  `__utility/${FUNCTION_NAME}`.
* `std::swap_ranges` and `std::iter_swap` into
  `__algorithm/${FUNCTION_NAME}`

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

3 years ago[libcxx][NFC] removes `swap`'s dependency on `swap_ranges`
Christopher Di Bella [Wed, 23 Jun 2021 01:25:31 +0000 (01:25 +0000)]
[libcxx][NFC] removes `swap`'s dependency on `swap_ranges`

Under the as-if rule, we can directly implement the array overload for
`std::swap`. By removing this circular dependency where `swap` is
implemented in terms of `swap_ranges` and `swap_ranges` is defined in
terms of `swap`, we can split them into their own headers. This will:

* limit the surface area in which Hyrum's law can bite us;
* force users to include the correct headers;
* make finding the definitions trivial (`swap` is a utility;
  `swap_ranges` is an algorithm).

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

3 years agoAttempt to disable MLIR JIT tests on PowerPC to unbreak the bot
Mehdi Amini [Thu, 24 Jun 2021 17:47:50 +0000 (17:47 +0000)]
Attempt to disable MLIR JIT tests on PowerPC to unbreak the bot

This is until we figure how to turn on the large code size model.

3 years ago[libcxx][nfc] Add one more test case for contiguous_range.
zoecarver [Thu, 24 Jun 2021 17:45:25 +0000 (10:45 -0700)]
[libcxx][nfc] Add one more test case for contiguous_range.

If the `data` member function is different enough, `ranges::data` won't pick it, so the range remains a contiguous_range.

3 years ago[libcxx][ranges] Add contiguous_range.
zoecarver [Mon, 14 Jun 2021 20:08:15 +0000 (16:08 -0400)]
[libcxx][ranges] Add contiguous_range.

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

3 years ago[NFC][SimplifyCFG] Revisit tail-merge-resume.ll test
Roman Lebedev [Thu, 24 Jun 2021 17:31:28 +0000 (20:31 +0300)]
[NFC][SimplifyCFG] Revisit tail-merge-resume.ll test

Add an already somewhat-common resume block

3 years ago[AArch64][v8.3A] Avoid inserting implicit landing pads (PACI*SP)
Pablo Barrio [Tue, 15 Jun 2021 14:04:15 +0000 (15:04 +0100)]
[AArch64][v8.3A] Avoid inserting implicit landing pads (PACI*SP)

PACI*SP have the advantage that they are in HINT space, meaning
they can be run successfully in hardware without PAuth support -
they will just behave as a NOP. However, PACI*SP are also implicit
landing pads (think of an extra BTI jc). Therefore, they allow
indirect jumps of all kinds into them, potentially inserting new
gadgets. This patch replaces PACI*SP by PACI* LR, SP when
compiling explicitly for hardware with full PAuth support. PACI*
is not in the HINT space, therefore it will fault when run in
hardware without PAuth support, but it is also not a landing pad,
making programs safer in newer HW.

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

3 years ago[InstSimplify] move extract with undef index fold; NFC
Sanjay Patel [Thu, 24 Jun 2021 17:19:07 +0000 (13:19 -0400)]
[InstSimplify] move extract with undef index fold; NFC

This puts it closer to the other undef query check and
will avoid a potential ordering problem if we allow
folding non-constant-int indexes.

3 years agoPrecommit tests for context senstive attribute dropping
Anna Thomas [Thu, 24 Jun 2021 17:09:40 +0000 (13:09 -0400)]
Precommit tests for context senstive attribute dropping

Precommit tests from D104641.
The patch will fix the callsites by dropping the context-sensitive
attributes.

Reviewed-By: Self
3 years ago[MLIR][SCF] Inline single block ExecuteRegionOp
William S. Moses [Thu, 24 Jun 2021 16:33:54 +0000 (12:33 -0400)]
[MLIR][SCF] Inline single block ExecuteRegionOp

This commit adds a canonicalization pass which inlines any single block execute region

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

3 years ago[InstSimplify][test] add test for extract of splat; NFC
Sanjay Patel [Thu, 24 Jun 2021 16:51:45 +0000 (12:51 -0400)]
[InstSimplify][test] add test for extract of splat; NFC

This is shown in:
https://llvm.org/PR50817

3 years ago[InstSimplify][test] move tests that don't require InstCombine; NFC
Sanjay Patel [Thu, 24 Jun 2021 16:44:41 +0000 (12:44 -0400)]
[InstSimplify][test] move tests that don't require InstCombine; NFC

These are existing/missing simplifications, so the tests
don't need the full power of InstCombine.

3 years ago[TargetLowering][ARM] Don't alter opaque constants in TargetLowering::ShrinkDemandedC...
Craig Topper [Thu, 24 Jun 2021 16:08:57 +0000 (09:08 -0700)]
[TargetLowering][ARM] Don't alter opaque constants in TargetLowering::ShrinkDemandedConstant.

We don't constant fold based on demanded bits elsewhere in
SimplifyDemandedBits, so I don't think we should shrink them either.

The affected ARM test changes because a constant become non-opaque
and eventually enabled some constant folding. This no longer happens.
I checked and InstCombine is able to simplify this test. I'm not sure exactly
what it was trying to test.

Reviewed By: lebedev.ri, dmgreen

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

3 years ago[CMake] Don't LTO optimize targets on Darwin either
Petr Hosek [Fri, 21 May 2021 06:58:07 +0000 (23:58 -0700)]
[CMake] Don't LTO optimize targets on Darwin either

This is a follow up to D102732 which also expands the logic to Darwin.

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

3 years ago[AsmParser][SystemZ][z/OS] Support for emitting labels in upper case
Anirudh Prasad [Thu, 24 Jun 2021 16:49:38 +0000 (12:49 -0400)]
[AsmParser][SystemZ][z/OS] Support for emitting labels in upper case

- Currently, the emitting of labels in the parsePrimaryExpr function is case independent. It just takes the identifier and emits it.
- However, for HLASM the emitting of labels is case independent. We are emitting them in the upper case only, to enforce case independency. So we need to ensure that at the time of parsing the label we are emitting the upper case (in `parseAsHLASMLabel`), but also, when we are processing a PC-relative relocatable expression, we need to ensure we emit it in upper case (in `parsePrimaryExpr`)
- To achieve this a new MCAsmInfo attribute has been introduced which corresponding targets can override if needed.

Reviewed By: abhina.sreeskantharajan, uweigand

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

3 years agoUpdate Bazel build for 929189a499
Geoffrey Martin-Noble [Thu, 24 Jun 2021 16:42:14 +0000 (09:42 -0700)]
Update Bazel build for 929189a499

Updates Bazel build files to match
https://github.com/llvm/llvm-project/commit/929189a499

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

3 years ago[lldb][AArch64] Add "memory tag read" command
David Spickett [Fri, 19 Feb 2021 16:31:46 +0000 (16:31 +0000)]
[lldb][AArch64] Add "memory tag read" command

This new command looks much like "memory read"
and mirrors its basic behaviour.

(lldb) memory tag read new_buf_ptr new_buf_ptr+32
Logical tag: 0x9
Allocation tags:
[0x900fffff7ffa000, 0x900fffff7ffa010): 0x9
[0x900fffff7ffa010, 0x900fffff7ffa020): 0x0

Important proprties:
* The end address is optional and defaults to reading
  1 tag if ommitted
* It is an error to try to read tags if the architecture
  or process doesn't support it, or if the range asked
  for is not tagged.
* It is an error to read an inverted range (end < begin)
  (logical tags are removed for this check so you can
  pass tagged addresses here)
* The range will be expanded to fit the tagging granule,
  so you can get more tags than simply (end-begin)/granule size.
  Whatever you get back will always cover the original range.

Reviewed By: omjavaid

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

3 years ago[mlir] remove repeated use of TypeToLLVM.cpp in cmake targets
Alex Zinenko [Thu, 24 Jun 2021 16:34:49 +0000 (18:34 +0200)]
[mlir] remove repeated use of TypeToLLVM.cpp in cmake targets

3 years ago[lldb][AArch64] Add MTE memory tag reading to lldb
David Spickett [Fri, 19 Feb 2021 15:57:29 +0000 (15:57 +0000)]
[lldb][AArch64] Add MTE memory tag reading to lldb

This adds GDB client support for the qMemTags packet
which reads memory tags. Following the design
which was recently committed to GDB.

https://sourceware.org/gdb/current/onlinedocs/gdb/General-Query-Packets.html#General-Query-Packets
(look for qMemTags)

lldb commands will use the new Process methods
GetMemoryTagManager and ReadMemoryTags.

The former takes a range and checks that:
* The current process architecture has an architecture plugin
* That plugin provides a MemoryTagManager
* That the range of memory requested lies in a tagged range
  (it will expand it to granules for you)

If all that was true you get a MemoryTagManager you
can give to ReadMemoryTags.

This two step process is done to allow commands to get the
tag manager without having to read tags as well. For example
you might just want to remove a logical tag, or error early
if a range with tagged addresses is inverted.

Note that getting a MemoryTagManager doesn't mean that the process
or a specific memory range is tagged. Those are seperate checks.
Having a tag manager just means this architecture *could* have
a tagging feature enabled.

An architecture plugin has been added for AArch64 which
will return a MemoryTagManagerAArch64MTE, which was added in a
previous patch.

Reviewed By: omjavaid

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

3 years ago[LLD][LLVM] CG Graph profile using relocations
Alexander Yermolovich [Thu, 24 Jun 2021 15:02:45 +0000 (08:02 -0700)]
[LLD][LLVM] CG Graph profile using relocations

Currently when .llvm.call-graph-profile is created by llvm it explicitly encodes the symbol indices. This section is basically a black box for post processing tools. For example, if we run strip -s on the object files the symbol table changes, but indices in that section do not. In non-visible behavior indices point to wrong symbols. The visible behavior indices point outside of Symbol table: "invalid symbol index".

This patch changes the format by using R_*_NONE relocations to indicate the from/to symbols. The Frequency (Weight) will still be in the .llvm.call-graph-profile, but symbol information will be in relocation section. In LLD information from both sections is used to reconstruct call graph profile. Relocations themselves will never be applied.

With this approach post processing tools that handle relocations correctly work for this section also. Tools can add/remove symbols and as long as they handle relocation sections with this approach information stays correct.

Doing a quick experiment with clang-13.
The size went up from 107KB to 322KB, aggregate of all the input sections. Size of clang-13 binary is ~118MB. For users of -fprofile-use/-fprofile-sample-use the size of object files will go up slightly, it will not impact final binary size.

Reviewed By: jhenderson, MaskRay

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

3 years ago[MLIR][LLVM] Expose type translator from LLVM to MLIR Type
William S. Moses [Tue, 22 Jun 2021 17:57:04 +0000 (13:57 -0400)]
[MLIR][LLVM] Expose type translator from LLVM to MLIR Type

This commit moves the type translator from LLVM to MLIR to a public header for use by external projects or other code.

Unlike a previous attempt (https://reviews.llvm.org/D104726), this patch moves the type conversion into separate files which remedies the linker error which was only caught by CI.

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

3 years ago[lldb][AArch64] Add memory tag reading to lldb-server
David Spickett [Fri, 19 Feb 2021 15:57:59 +0000 (15:57 +0000)]
[lldb][AArch64] Add memory tag reading to lldb-server

This adds memory tag reading using the new "qMemTags"
packet and ptrace on AArch64 Linux.

This new packet is following the one used by GDB.
(https://sourceware.org/gdb/current/onlinedocs/gdb/General-Query-Packets.html)

On AArch64 Linux we use ptrace's PEEKMTETAGS to read
tags and we assume that lldb has already checked that the
memory region actually has tagging enabled.

We do not assume that lldb has expanded the requested range
to granules and expand it again to be sure.
(although lldb will be sending aligned ranges because it happens
to need them client side anyway)
Also we don't assume untagged addresses. So for AArch64 we'll
remove the top byte before using them. (the top byte includes
MTE and other non address data)

To do the ptrace read NativeProcessLinux will ask the native
register context for a memory tag manager based on the
type in the packet. This also gives you the ptrace numbers you need.
(it's called a register context but it also has non register data,
so it saves adding another per platform sub class)

The only supported platform for this is AArch64 Linux and the only
supported tag type is MTE allocation tags. Anything else will
error.

Ptrace can return a partial result but for lldb-server we will
be treating that as an error. To succeed we need to get all the tags
we expect.

(Note that the protocol leaves room for logical tags to be
read via qMemTags but this is not going to be implemented for lldb
at this time.)

Reviewed By: omjavaid

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

3 years ago[VPlan] Fix indentation of check lines in sinking test (NFC).
Florian Hahn [Thu, 24 Jun 2021 15:38:33 +0000 (16:38 +0100)]
[VPlan] Fix indentation of check lines in sinking test (NFC).

3 years ago[gn build] Fix a comment typo and a comment copy-pasto
Nico Weber [Thu, 24 Jun 2021 15:06:15 +0000 (11:06 -0400)]
[gn build] Fix a comment typo and a comment copy-pasto

3 years ago[mlir][Linalg] Add support for scf::ForOp in comprehensive bufferization (7/n)
Nicolas Vasilache [Thu, 24 Jun 2021 14:39:50 +0000 (14:39 +0000)]
[mlir][Linalg] Add support for scf::ForOp in comprehensive bufferization (7/n)

scf::ForOp bufferization analysis proceeds just like for any other op (including FuncOp) at its boundaries; i.e. if:

1. The tensor operand is inplaceable.
2. The matching result has no subsequent read (i.e. all reads dominate the scf::ForOp).
3. In  and does not create a RAW interference.

then it can bufferize inplace.

Still there are a few differences:

1. bbArgs for an scf::ForOp are always considered inplaceable when seen from ops inside the body. This is because a) either the matching tensor operand is not inplaceable and an alloc will be inserted (which makes bbArg itself inplaceable); or b) the tensor operand and bbArg are both already inplaceable.
2. Bufferization within the scf::ForOp body has implications to the outside world : the scf.yield terminator may well ping-pong values of the same type. This muddies the water for alias analysis and is not supported atm. Such cases result in a pass failure.

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

3 years ago[AArch64] Precommit extending load tests for D104782. NFC.
Sjoerd Meijer [Wed, 23 Jun 2021 12:40:46 +0000 (13:40 +0100)]
[AArch64] Precommit extending load tests for D104782. NFC.

3 years ago[lldb][AArch64] Fix unpack tags test case
David Spickett [Thu, 24 Jun 2021 14:52:02 +0000 (15:52 +0100)]
[lldb][AArch64] Fix unpack tags test case

Use %zu to print size_t vars.