platform/upstream/llvm.git
3 years ago[lld-macho] Make range-check.s test more tolerant
Jez Ng [Fri, 12 Mar 2021 23:43:33 +0000 (18:43 -0500)]
[lld-macho] Make range-check.s test more tolerant

Summary: The exact out-of-range value seems to differ by 8 bytes on the
buildbots compared to my local machine. I'm guessing it has something to
do with what inputs we are getting from llvm-mc. Not sure why, but I
don't think it's super important -- let's just ignore the number, the
out-of-range message is the important thing here

3 years ago[flang] Update DE/ALLOCATE statement runtime message processing
peter klausler [Fri, 12 Mar 2021 21:33:50 +0000 (13:33 -0800)]
[flang] Update DE/ALLOCATE statement runtime message processing

Make error message descriptors on runtime DE/ALLOCATE API calls constant.
Fix a bug in error message truncation/padding.

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

3 years ago[gcov] Delete ancient MSVC workaround
Fangrui Song [Fri, 12 Mar 2021 23:10:12 +0000 (15:10 -0800)]
[gcov] Delete ancient MSVC workaround

3 years ago[gcov] Delete FreeBSD<10 (reached end of life for years) workaround
Fangrui Song [Fri, 12 Mar 2021 23:07:58 +0000 (15:07 -0800)]
[gcov] Delete FreeBSD<10 (reached end of life for years) workaround

3 years ago[AMDGPU] Fix getAlignedAGPRClassID
Stanislav Mekhanoshin [Fri, 12 Mar 2021 21:28:51 +0000 (13:28 -0800)]
[AMDGPU] Fix getAlignedAGPRClassID

Not all register classes were listed.

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

3 years ago[libFuzzer] Use macro instead of __attribute__.
Matt Morehouse [Fri, 12 Mar 2021 22:36:57 +0000 (14:36 -0800)]
[libFuzzer] Use macro instead of __attribute__.

This should fix the Windows buildbot errors.

3 years ago[lld-macho] Only codesign by default on arm64 macOS
Jez Ng [Fri, 12 Mar 2021 22:26:14 +0000 (17:26 -0500)]
[lld-macho] Only codesign by default on arm64 macOS

instead of doing it on all arm64 platforms.

Reviewed By: #lld-macho, gkm

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

3 years ago[lld-macho][nfc] Give every SyntheticSection a fake InputSection
Jez Ng [Fri, 12 Mar 2021 22:26:12 +0000 (17:26 -0500)]
[lld-macho][nfc] Give every SyntheticSection a fake InputSection

Previously, it was difficult to write code that handled both synthetic
and regular sections generically. We solve this problem by creating a
fake InputSection at the start of every SyntheticSection.

This refactor allows us to handle DSOHandle like a regular Defined
symbol (since Defined symbols must be attached to an InputSection), and
paves the way for supporting `__mh_*header` symbols. Additionally, it
simplifies our binding/rebase code.

I did have to extend Defined a little -- it now has a `linkerInternal`
flag, to indicate that `___dso_handle` should not be in the final symbol
table.

I've also added some additional testing for `___dso_handle`.

Reviewed By: #lld-macho, oontvoo

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

3 years ago[lld-macho] Check address ranges when applying relocations
Jez Ng [Fri, 12 Mar 2021 22:26:11 +0000 (17:26 -0500)]
[lld-macho] Check address ranges when applying relocations

This diff required fixing `getEmbeddedAddend` to apply sign
extension to 32-bit values. We were previously passing around wrong
64-bit addend values that became "right" after being truncated back to
32-bit.

I've also made `getEmbeddedAddend` return a signed int, which is similar
to what LLD-ELF does for its `getImplicitAddend`.

`reportRangeError`, `checkUInt`, and `checkInt` are counterparts of similar
functions in LLD-ELF.

Reviewed By: #lld-macho, thakis

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

3 years ago[libc][Obvious] Add string tests to non-full-build mode.
Siva Chandra Reddy [Fri, 12 Mar 2021 21:56:52 +0000 (13:56 -0800)]
[libc][Obvious] Add string tests to non-full-build mode.

3 years agoRevert "[CodeGenPrepare] Fix isIVIncrement (PR49466)"
Jordan Rupprecht [Fri, 12 Mar 2021 21:58:37 +0000 (13:58 -0800)]
Revert "[CodeGenPrepare] Fix isIVIncrement (PR49466)"

This reverts commit cf82700af8c658ae09b14c3d01bb1e73e48d3bd3 due to a compile timeout when building the following with `clang -O2`:

```
template <class, class = int> class a;
struct b {
  using d = int *;
};
struct e {
  using f = b::d;
};
class g {
public:
  e::f h;
  e::f i;
};
template <class, class> class a : g {
public:
  long j() const { return i - h; }
  long operator[](long) const noexcept;
};
template <class c, class k> long a<c, k>::operator[](long l) const noexcept {
  return h[l];
}
template <typename m, typename n> int fn1(m, n, const char *);
int o, p;
class D {
  void q(const a<long> &);
  long r;
};
void D::q(const a<long> &l) {
  int s;
  if (l[0])
    for (; l.j(); ++s) {
      if (l[s])
        while (fn1(o, 0, ""))
          ;
      r = l[s] / p;
    }
}
```

3 years ago[MemCpyOpt] Add test for memcpy in loop (NFC)
Nikita Popov [Fri, 12 Mar 2021 21:53:49 +0000 (22:53 +0100)]
[MemCpyOpt] Add test for memcpy in loop (NFC)

This is currently not being optimized.

3 years ago[libc] Adjust full build entrypoints for aarch64.
Siva Chandra [Fri, 12 Mar 2021 21:50:09 +0000 (13:50 -0800)]
[libc] Adjust full build entrypoints for aarch64.

3 years ago[IndirectCallPromotion] Recommit "Don't strip ".__uniq." suffix when it strips
Wei Mi [Fri, 12 Mar 2021 19:34:56 +0000 (11:34 -0800)]
[IndirectCallPromotion] Recommit "Don't strip ".__uniq." suffix when it strips
".llvm." suffix".

The recommit fixed a bug that symbols with "." at the beginning is not
properly handled in the last commit.

Original commit message:
Currently IndirectCallPromotion simply strip everything after the first "."
in LTO mode, in order to match the symbol name and the name with ".llvm."
suffix in the value profile. However, if -funique-internal-linkage-names
and thinlto are both enabled, the name may have both ".__uniq." suffix and
".llvm." suffix, and the current mechanism will strip them both, which is
unexpected. The patch fixes the problem.

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

3 years ago[libc] Introduce a full build mode CMake option.
Siva Chandra Reddy [Thu, 11 Mar 2021 23:25:24 +0000 (15:25 -0800)]
[libc] Introduce a full build mode CMake option.

This option will build LLVM libc as a full libc by itself. In this mode,
it is not expected that it will be mixed with other libcs. The
non-full-build mode will be the default LLVM libc build mode. In a future
where LLVM libc is complete enough, the full libc build will be made the
default mode.

3 years ago[tests] Cover a case brought up in review of D98222
Philip Reames [Fri, 12 Mar 2021 21:11:25 +0000 (13:11 -0800)]
[tests] Cover a case brought up in review of D98222

3 years ago[SystemZ][z/OS] Missing wchar functions libc++
Muiez Ahmed [Fri, 12 Mar 2021 20:22:03 +0000 (15:22 -0500)]
[SystemZ][z/OS] Missing wchar functions libc++

The aim is to add the missing z/OS specific implementations for mbsnrtowcs and wcsnrtombs, as part of libc++.

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

3 years ago[DebugInfo] Add an attribute to force type info to be emitted for types that are...
Amy Huang [Tue, 16 Feb 2021 21:13:52 +0000 (13:13 -0800)]
[DebugInfo] Add an attribute to force type info to be emitted for types that are required to be complete.

This was motivated by the fact that constructor type homing (debug info
optimization that we want to turn on by default) drops some libc++ types,
so an attribute would allow us to override constructor homing and emit
them anyway. I'm currently looking into the particular libc++ issue, but
even if we do fix that, this issue might come up elsewhere and it might be
nice to have this.

As I've implemented it now, the attribute isn't specific to the
constructor homing optimization and overrides all of the debug info
optimizations.

Open to discussion about naming, specifics on what the attribute should do, etc.

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

3 years ago[InstCombine] add test for zext-of-icmps; NFC
Sanjay Patel [Fri, 12 Mar 2021 19:15:27 +0000 (14:15 -0500)]
[InstCombine] add test for zext-of-icmps; NFC

PR49475 shows an infinite loop outcome, but this
tries to show the root cause with a minimal test.

3 years ago[DAGCombiner] Use isConstantSplatVectorAllZeros/Ones instead of isBuildVectorAllZeros...
Craig Topper [Fri, 12 Mar 2021 20:07:46 +0000 (12:07 -0800)]
[DAGCombiner] Use isConstantSplatVectorAllZeros/Ones instead of isBuildVectorAllZeros/Ones in visitMSTORE and visitMLOAD.

This allows us to optimize when the mask is a splat_vector in
addition to build_vector.

3 years ago[RISCV] Add test cases for masked load/store with all ones/zeros mask. NFC
Craig Topper [Fri, 12 Mar 2021 20:05:00 +0000 (12:05 -0800)]
[RISCV] Add test cases for masked load/store with all ones/zeros mask. NFC

These should be removed for all zeros mask or optimized to
unmasked for all ones.

3 years ago[OpenCL] Use spir target for CIndex tests for OpenCL.
Anastasia Stulova [Fri, 12 Mar 2021 20:11:26 +0000 (20:11 +0000)]
[OpenCL] Use spir target for CIndex tests for OpenCL.

This fixes failing bots.

Patch by azabaznov (Anton Zabaznov)!

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

3 years agoRevert "[gn build] (manually) port bcdd40f802a5"
Nico Weber [Fri, 12 Mar 2021 20:04:20 +0000 (15:04 -0500)]
Revert "[gn build] (manually) port bcdd40f802a5"

This reverts commit 0bd9d9aa3ce06268b565369b9e71b636792d35e0.
bcdd40f802a5 was reverted in 4f9cc1512d51af607

3 years ago[flang][OpenMP][FIX] Fix function to check nesting level of current directive.
Arnamoy Bhattacharyya [Fri, 12 Mar 2021 20:00:47 +0000 (15:00 -0500)]
[flang][OpenMP][FIX] Fix function to check nesting level of current directive.

3 years ago[OpaquePtrs] Remove some uses of type-less CreateGEP() (NFC)
Nikita Popov [Thu, 11 Mar 2021 17:59:49 +0000 (18:59 +0100)]
[OpaquePtrs] Remove some uses of type-less CreateGEP() (NFC)

This removes some (but not all) uses of type-less CreateGEP()
and CreateInBoundsGEP() APIs, which are incompatible with opaque
pointers.

There are a still a number of tricky uses left, as well as many
more variation APIs for CreateGEP.

3 years ago[RISCV] Teach normaliseSetCC to canonicalize X > -1 to X >= 0 and X < 1 to 0 >= X.
Craig Topper [Fri, 12 Mar 2021 19:46:22 +0000 (11:46 -0800)]
[RISCV] Teach normaliseSetCC to canonicalize X > -1 to X >= 0 and X < 1 to 0 >= X.

This allows the use of BGE with X0 instead of puting -1/1 in a
register.

Reviewed By: jrtc27

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

3 years agoRevert "[AsmParser][SystemZ][z/OS] Introducing HLASM Comment Syntax"
Hubert Tong [Fri, 12 Mar 2021 19:48:00 +0000 (14:48 -0500)]
Revert "[AsmParser][SystemZ][z/OS] Introducing HLASM Comment Syntax"

This reverts commit bcdd40f802a5dfd7b3ac11304e6099bfcdd25b1e.
See https://reviews.llvm.org/D98543.

3 years agoRevert "[Clang][ARM] Reenable arm_acle.c test."
Nico Weber [Fri, 12 Mar 2021 19:37:37 +0000 (14:37 -0500)]
Revert "[Clang][ARM] Reenable arm_acle.c test."

This reverts commit 5ae949a9276542b46f41374fbe7aee01e480d9d6.
Test fails everywhere.

3 years ago[mlir] Annotate functions used only in debug mode with LLVM_ATTRIBUTE_UNUSED
Eugene Zhulenev [Fri, 12 Mar 2021 18:39:16 +0000 (10:39 -0800)]
[mlir] Annotate functions used only in debug mode with LLVM_ATTRIBUTE_UNUSED

Functions used only in `assert` cause warnings in release mode

Reviewed By: mehdi_amini, dcaballe, ftynse

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

3 years ago[Clang][ARM] Reenable arm_acle.c test.
David Green [Fri, 12 Mar 2021 19:21:21 +0000 (19:21 +0000)]
[Clang][ARM] Reenable arm_acle.c test.

This test was apparently disabled in 6fcd4e080f09c9765d6, without any
sign of how it was going to be reenabled. This patch rewrites the test
to use update_cc_test_checks, with midend optimizations other that
mem2reg disabled.

3 years ago[RISCV] Add test cases for failure to optimize select_cc with X < 1 or X > -1. NFC
Craig Topper [Fri, 12 Mar 2021 19:05:45 +0000 (11:05 -0800)]
[RISCV] Add test cases for failure to optimize select_cc with X < 1 or X > -1. NFC

We can use BGE with X0 to implement these, but we currently put
1 or -1 into a register.

3 years ago[SCEV] Improve modelling for (null) pointer constants
Roman Lebedev [Fri, 12 Mar 2021 19:05:55 +0000 (22:05 +0300)]
[SCEV] Improve modelling for (null) pointer constants

This is a continuation of D89456.

As it was suggested there, now that SCEV models `PtrToInt`,
we can try to improve SCEV's pointer handling.
In particular, i believe, i will need this in the future
to further fix `SCEVAddExpr`operation type handling.

This removes special handling of `ConstantPointerNull`
from `ScalarEvolution::createSCEV()`, and add constant folding
into `ScalarEvolution::getPtrToIntExpr()`.
This way, `null` constants stay as such in SCEV's,
but gracefully become zero integers when asked.

Reviewed By: Meinersbur

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

3 years ago[flang] Make the symbol count used for collating symbols static
Peter Steinfeld [Wed, 10 Mar 2021 16:23:26 +0000 (08:23 -0800)]
[flang] Make the symbol count used for collating symbols static

I changed the declaration of symbolCount_ in the type Symbols to be
static to avoid possible problems in the future when we might have
multiple objects of type Symbols.  Thanks to Peter for pointing out the
need for this change.

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

3 years ago[RISCV] Add support for scalable vector masked load/store.
Craig Topper [Fri, 12 Mar 2021 18:25:43 +0000 (10:25 -0800)]
[RISCV] Add support for scalable vector masked load/store.

Reviewed By: frasercrmck

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

3 years ago[NFC] Fix "unused parameter" error revealed in the Linux self-build.
Zahira Ammarguellat [Fri, 12 Mar 2021 18:23:19 +0000 (10:23 -0800)]
[NFC] Fix "unused parameter" error revealed in the Linux self-build.

3 years ago[AMDGPU] Fix -amdgpu-inline-arg-alloca-cost
Stanislav Mekhanoshin [Fri, 12 Mar 2021 17:19:46 +0000 (09:19 -0800)]
[AMDGPU] Fix -amdgpu-inline-arg-alloca-cost

Before D94153 this threshold was in a pre-scaled units.
After D94153 inlining threshold multiplier is not applied
to this portion of the threshold anymore. Restore the
threshold by applying the multiplier.

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

3 years ago[FileCheck] Add support for hex alternate form in FileCheck
Thomas Preud'homme [Thu, 11 Jun 2020 15:14:24 +0000 (16:14 +0100)]
[FileCheck] Add support for hex alternate form in FileCheck

Add printf-style alternate form flag to prefix hex number with 0x when
present. This works on both empty numeric expression (e.g. variable
definition from input) and when matching a numeric expression. The
syntax is as follows:

[[#%#<precision specifier><format specifier>, ...]

where <precision specifier> and <format specifier> are optional and ...
can be a variable definition or not with an empty expression or not.

This feature was requested in https://reviews.llvm.org/D81144#2075532
for llvm/test/MC/ELF/gen-dwarf64.s

Reviewed By: jdenny

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

3 years ago[mlir] fix a memory leak in NestedPattern
Alex Zinenko [Fri, 12 Mar 2021 11:19:47 +0000 (12:19 +0100)]
[mlir] fix a memory leak in NestedPattern

NestedPattern uses a BumpPtrAllocator to store child (nested) pattern
objects to decrease the overhead of dynamic allocation. This assumes all
allocations happen inside the allocator that will be freed as a whole.
However, NestedPattern contains `std::function` as a member, which
allocates internally using `new`, unaware of the BumpPtrAllocator. Since
NestedPattern only holds pointers to the nested patterns allocated in
the BumpPtrAllocator, it never calls their destructors, so the
destructor of the `std::function`s they contain are never called either,
leaking the allocated memory.

Make NestedPattern explicitly call destructors of nested patterns. This
additionally requires to actually copy the nested patterns in
copy-construction and copy-assignment instead of just sharing the
pointer to the arena-allocated list of children to avoid double-free. An
alternative solution would be to add reference counting to the list of
arena-allocated list of children.

Reviewed By: nicolasvasilache

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

3 years ago[NFC] Use llvm::raw_string_ostream instead of std::stringstream
serge-sans-paille [Fri, 12 Mar 2021 17:42:17 +0000 (18:42 +0100)]
[NFC] Use llvm::raw_string_ostream instead of std::stringstream

That's more efficient and we don't loose any valuable feature when doing so.

3 years agoAdd Semantic check for Flang OpenMP 4.5 - 2.15.3.6 Reduction clause
Yashaswini [Fri, 12 Mar 2021 17:22:21 +0000 (22:52 +0530)]
Add Semantic check for Flang OpenMP 4.5 - 2.15.3.6 Reduction clause
Implementation of Reduction clause restriction checks.

Files:

flang/lib/Semantics/check-directive-structure.h
flang/lib/Semantics/check-omp-structure.cpp
flang/lib/Semantics/check-omp-structure.h
flang/lib/Semantics/resolve-directives.cpp

Testcases:

flang/test/Semantics/omp-reduction01.f90
flang/test/Semantics/omp-reduction02.f90
flang/test/Semantics/omp-reduction03.f90
flang/test/Semantics/omp-reduction04.f90
flang/test/Semantics/omp-reduction05.f90
flang/test/Semantics/omp-reduction06.f90
flang/test/Semantics/omp-reduction07.f90
flang/test/Semantics/omp-reduction08.f90
flang/test/Semantics/omp-reduction09.f90
flang/test/Semantics/omp-reduction10.f90
flang/test/Semantics/omp-symbol08.f90

Reviewed by: Kiran Chandramohan @kiranchandramohan and Valentin Clement @clementval.

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

3 years ago[clang] Mark re-injected tokens appropriately during pragma handling
Kadir Cetinkaya [Fri, 12 Mar 2021 08:36:06 +0000 (09:36 +0100)]
[clang] Mark re-injected tokens appropriately during pragma handling

This hides such tokens from TokenWatcher, preventing crashes in clients
trying to match spelled and expanded tokens.

Fixes https://github.com/clangd/clangd/issues/712

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

3 years ago[gn build] (manually) port bcdd40f802a5
Nico Weber [Fri, 12 Mar 2021 17:15:52 +0000 (12:15 -0500)]
[gn build] (manually) port bcdd40f802a5

3 years ago[AsmParser][SystemZ][z/OS] Introducing HLASM Comment Syntax
Anirudh Prasad [Fri, 12 Mar 2021 16:39:03 +0000 (11:39 -0500)]
[AsmParser][SystemZ][z/OS] Introducing HLASM Comment Syntax

- This patch adds in support for the ordinary HLASM comment syntax asm
  statements (Reference - Chapter 7, Comment Statements, Ordinary Comment
  Statements)
- In brief, the ordinary comment syntax if used, must begin with the "*"
  character
- To achieve this, this patch makes use of the CommentString attribute
  provided in the base MCAsmInfo class
- In the SystemZMCAsmInfo class, the CommentString attribute was set to
  "*" based on the assembler dialect
- Furthermore, a new attribute RestrictCommentString, is provided to only
  treat a string as a comment if it appears at the start of the asm
  statement. Example: "jo *-4" is valid in HLASM (jump back 4 bytes from
  current point - similar to jo -4 in gnu asm) and we don't want "*-4" to
  be treated as a comment.
- RFC for HLASM Parser support implementation: https://lists.llvm.org/pipermail/llvm-dev/2021-January/147686.html

Reviewed By: scott.linder, Kai

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

3 years ago[lit] rewrap a few lines to 80 columns
Nico Weber [Sun, 7 Mar 2021 02:13:52 +0000 (21:13 -0500)]
[lit] rewrap a few lines to 80 columns

No behavior change.

3 years ago[libcxx] adds concept std::regular
Christopher Di Bella [Fri, 12 Mar 2021 07:46:37 +0000 (23:46 -0800)]
[libcxx] adds concept std::regular

Implements parts of:
    - P0898R3 Standard Library Concepts
    - P1754 Rename concepts to standard_case for C++20, while we still can

Depends on D97911

Reviewed By: EricWF, #libc, Quuxplusone

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

3 years ago[PowerPC] Add more missing overloads to altivec.h
Nemanja Ivanovic [Fri, 12 Mar 2021 15:19:58 +0000 (09:19 -0600)]
[PowerPC] Add more missing overloads to altivec.h

We are missing more predicate forms for 'vector double' and some
tests. This adds the missing overloads and completes the set of
test cases for them.

3 years ago[lldb] Remove unused StackFrame::TrackGlobalVariable
Dave Lee [Fri, 12 Mar 2021 16:47:55 +0000 (08:47 -0800)]
[lldb] Remove unused StackFrame::TrackGlobalVariable

Last used by the Go plugin which was removed in https://reviews.llvm.org/D54057.

3 years agoRevert "Revert "[compiler-rt][asan] Make wild-pointer crash error more useful""
Vy Nguyen [Fri, 12 Mar 2021 16:35:50 +0000 (11:35 -0500)]
Revert "Revert "[compiler-rt][asan] Make wild-pointer crash error more useful""

This reverts commit c578508b5bb20ccce5e2a43dd2afc41a49afec74.

Reland now that unrelated crash has been resolved.

3 years ago[clang] Use Constant::getAllOnesValue helper. NFCI.
Simon Pilgrim [Fri, 12 Mar 2021 15:13:42 +0000 (15:13 +0000)]
[clang] Use Constant::getAllOnesValue helper. NFCI.

Avoid -1ULL which MSVC tends to complain about

3 years ago[X86][AVX] Insert zeros byte elements into 256/512-bit vectors using shuffle/and
Simon Pilgrim [Fri, 12 Mar 2021 14:42:20 +0000 (14:42 +0000)]
[X86][AVX] Insert zeros byte elements into 256/512-bit vectors using shuffle/and

Avoid extracting/inserting subvectors which makes it more difficult for shuffle combining to merge them together.

3 years ago[X86] Provide lighter weight getTargetShuffleMask wrapper. NFCI.
Simon Pilgrim [Fri, 12 Mar 2021 12:51:36 +0000 (12:51 +0000)]
[X86] Provide lighter weight getTargetShuffleMask wrapper. NFCI.

Most callers to getTargetShuffleMask don't use the IsUnary flag.

3 years agoRevert "[IndirectCallPromotion] Don't strip ".__uniq." suffix when it strips"
Nico Weber [Fri, 12 Mar 2021 15:02:17 +0000 (10:02 -0500)]
Revert "[IndirectCallPromotion] Don't strip ".__uniq." suffix when it strips"

This reverts commit 90dfbeef5982ecfb5523b48f3c301bea033e5c3d.
Causes PR49554. Also see comments on https://reviews.llvm.org/D98389

3 years agoTest cases for rem-seteq fold with illegal types
Simonas Kazlauskas [Wed, 10 Mar 2021 13:05:36 +0000 (15:05 +0200)]
Test cases for rem-seteq fold with illegal types

This also briefly tests a larger set of architectures than the more
exhaustive functionality tests for AArch64 and x86.

As requested in D88785

Reviewed By: RKSimon

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

3 years agoGlobalISel: Fix marking byval arguments as immutable
Matt Arsenault [Sat, 6 Mar 2021 16:49:30 +0000 (11:49 -0500)]
GlobalISel: Fix marking byval arguments as immutable

byval arguments need to be assumed writable. Only implicitly stack
passed arguments which aren't addressable in the IR can be assumed
immutable.

Mips is still broken since for some reason its doing its own thing
with the ValueHandlers (and x86 doesn't actually handle byval
arguments now, although some of the code is there).

3 years agoGlobalISel: Partially fix handling of byval arguments
Matt Arsenault [Fri, 5 Mar 2021 22:28:32 +0000 (17:28 -0500)]
GlobalISel: Partially fix handling of byval arguments

This was essentially ignoring byval and treating them as a pointer
argument which needed to be loaded from. This should copy the frame
index value to the virtual register, not insert a load from the frame
index into the pointer value.

For AMDGPU, this was producing a load from the byval pointer argument,
to a pointer used for the byval arguments. I do not understand how
AArch64 managed to work before since it appears to be similarly
broken.

We could also change the ValueHandler API to avoid the extra copy from
the frame index, since currently it returns a new register.

I believe there is still an issue with outgoing byval arguments. These
should have a copy inserted in case the callee decided to overwrite
the memory.

3 years agoAArch64/GlobalISel: Don't use common prefix in test
Matt Arsenault [Sat, 6 Mar 2021 13:54:38 +0000 (08:54 -0500)]
AArch64/GlobalISel: Don't use common prefix in test

Unlike update_llc_test_checks, update_mir_test_checks isn't actually
smart enough to common functions with identical output.

3 years agoAMDGPU/GlobalISel: Cleanup call lowering sequence
Matt Arsenault [Wed, 3 Mar 2021 21:57:24 +0000 (16:57 -0500)]
AMDGPU/GlobalISel: Cleanup call lowering sequence

Now that handleAssignments is handling all of the argument splitting,
we don't have to move the insert point around.

3 years ago[NFC] Use StringRef instead of const char* for AsmPrinter
serge-sans-paille [Fri, 12 Mar 2021 13:27:15 +0000 (14:27 +0100)]
[NFC] Use StringRef instead of const char* for AsmPrinter

This avoids calling strlen to repeatedly compute some string size.

3 years ago[LV] Fix name in CHECK pattern after fb3ca7076
Florian Hahn [Fri, 12 Mar 2021 13:31:48 +0000 (13:31 +0000)]
[LV] Fix name in CHECK pattern after fb3ca7076

3 years ago[LV] Account IV recipes being uniform in VPTransformState::get().
Florian Hahn [Fri, 12 Mar 2021 13:22:29 +0000 (13:22 +0000)]
[LV] Account IV recipes being uniform in VPTransformState::get().

This patch fixes a crash when trying to get a scalar value using
VPTransformState::get() for uniform induction values or truncated
induction values. IVs and truncated IVs can be uniform and the updated
code accounts for that, fixing the crash.

This should fix
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31981

3 years ago[mlir] Remove mlir-cuda-runner
Christian Sigg [Thu, 11 Mar 2021 07:34:53 +0000 (08:34 +0100)]
[mlir] Remove mlir-cuda-runner

Change CUDA integration tests to use mlir-opt + mlir-cpu-runner instead.

Depends On D98203

Reviewed By: herhut

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

3 years ago[SimplifyCFG] avoid sinking insts within an infinite-loop
Sanjay Patel [Fri, 12 Mar 2021 12:56:54 +0000 (07:56 -0500)]
[SimplifyCFG] avoid sinking insts within an infinite-loop

The test is reduced from a C source example in:
https://llvm.org/PR49541

It's possible that the test could be reduced further or
the predicate generalized further, but it seems to require
a few ingredients (including the "late" SimplifyCFG options
on the RUN line) to fall into the infinite-loop trap.

3 years ago[Orc] Fix race condition in DebugObjectManagerPlugin
Stefan Gränitz [Fri, 12 Mar 2021 12:51:44 +0000 (13:51 +0100)]
[Orc] Fix race condition in DebugObjectManagerPlugin

During finalization the debug object is registered with the target. Materialization must wait for this process to finish. Otherwise we might start running code before the debugger finished processing the corresponding debug info.

Reviewed By: lhames

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

3 years ago[analyzer][solver] Prevent infeasible states (PR49490)
Valeriy Savchenko [Wed, 10 Mar 2021 13:50:34 +0000 (16:50 +0300)]
[analyzer][solver] Prevent infeasible states (PR49490)

This patch fixes the situation when our knowledge of disequalities
can help us figuring out that some assumption is infeasible, but
the solver still produces a state with inconsistent constraints.

Additionally, this patch adds a couple of assertions to catch this
type of problems easier.

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

3 years agoRevert "[InstrProfiling] Don't generate __llvm_profile_runtime_user"
Hans Wennborg [Fri, 12 Mar 2021 12:43:36 +0000 (13:43 +0100)]
Revert "[InstrProfiling] Don't generate __llvm_profile_runtime_user"

This broke the check-profile tests on Mac, see comment on the code
review.

> This is no longer needed, we can add __llvm_profile_runtime directly
> to llvm.compiler.used or llvm.used to achieve the same effect.
>
> Differential Revision: https://reviews.llvm.org/D98325

This reverts commit c7712087cbb505d324e1149fa224f607c91a8c6a.

Also reverting the dependent follow-up commit:

Revert "[InstrProfiling] Generate runtime hook for ELF platforms"

> When using -fprofile-list to selectively apply instrumentation only
> to certain files or functions, we may end up with a binary that doesn't
> have any counters in the case where no files were selected. However,
> because on Linux and Fuchsia, we pass -u__llvm_profile_runtime, the
> runtime would still be pulled in and incur some non-trivial overhead,
> especially in the case when the continuous or runtime counter relocation
> mode is being used. A better way would be to pull in the profile runtime
> only when needed by declaring the __llvm_profile_runtime symbol in the
> translation unit only when needed.
>
> This approach was already used prior to 9a041a75221ca, but we changed it
> to always generate the __llvm_profile_runtime due to a TAPI limitation.
> Since TAPI is only used on Mach-O platforms, we could use the early
> emission of __llvm_profile_runtime there, and on other platforms we
> could change back to the earlier approach where the symbol is generated
> later only when needed. We can stop passing -u__llvm_profile_runtime to
> the linker on Linux and Fuchsia since the generated undefined symbol in
> each translation unit that needed it serves the same purpose.
>
> Differential Revision: https://reviews.llvm.org/D98061

This reverts commit 87fd09b25f8892e07b7ba11525baa9c3ec3e5d3f.

3 years agoAdd support for digit separators in C2x.
Aaron Ballman [Fri, 12 Mar 2021 12:21:03 +0000 (07:21 -0500)]
Add support for digit separators in C2x.

WG14 adopted N2626 at the meetings this week. This commit adds support
for using ' as a digit separator in a numeric literal which is
compatible with the C++ feature.

3 years ago[PPC] Fix UBSAN warning about out of range shift. NFCI.
Simon Pilgrim [Fri, 12 Mar 2021 12:03:36 +0000 (12:03 +0000)]
[PPC] Fix UBSAN warning about out of range shift. NFCI.

3 years ago[builtins] Fix value of ARM_INEXACT
Alex Richardson [Fri, 12 Mar 2021 11:15:17 +0000 (11:15 +0000)]
[builtins] Fix value of ARM_INEXACT

The existing value of 0x1000 sets the IXE bit (Inexact floating-point exception
trap enable), but we really want to be setting IXC, bit 4:
Inexact cumulative floating-point exception bit. This bit is set to 1 to
indicate that the Inexact floating-point exception has occurred since 0 was
last written to this bit.

Reviewed By: kongyi, peter.smith
Differential Revision: https://reviews.llvm.org/D98353

3 years ago[PPC] Fix static analyzer / UBSAN warnings about out of range shifts. NFCI.
Simon Pilgrim [Fri, 12 Mar 2021 10:34:24 +0000 (10:34 +0000)]
[PPC] Fix static analyzer / UBSAN warnings about out of range shifts. NFCI.

3 years agoRevert "Mark gc.relocate and gc.result as readnone"
Serguei Katkov [Fri, 12 Mar 2021 08:32:53 +0000 (15:32 +0700)]
Revert "Mark gc.relocate and gc.result as readnone"

As readnone function they become movable and LICM can hoist them
out of a loop. As a result in LCSSA form phi node of type token
is created. No one is ready that GCRelocate first operand is phi node
but expects to be token.

GVN test were also updated, it seems it does not do what is expected.
Test for LICM is also added.

This reverts commit f352463ade6e49c3b0275f296d9190d828b7630b.

3 years ago[libcxx] Move Linaro 32 bit armv bots to buildkite
David Spickett [Tue, 2 Mar 2021 15:07:19 +0000 (15:07 +0000)]
[libcxx] Move Linaro 32 bit armv bots to buildkite

Instead of setting mcpu like the previous bots,
set the target triple.

Each config builds either Arm only or Thumb only
code. This gives us some coverage of thumb specific
issues.

The new agents on Linaro's side are running on v8 hardware
so will report arch "armv8l" just like the v8 bots.
(and buildkite can choose any of them for v7/v8 jobs)

Reviewed By: #libc, curdeius, Mordante

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

3 years ago[Matrix] Add missing newline to appease sphinx.
Florian Hahn [Fri, 12 Mar 2021 09:33:12 +0000 (09:33 +0000)]
[Matrix] Add missing newline to appease sphinx.

3 years ago[RISCV] Optimize INSERT_VECTOR_ELT sequences
Fraser Cormack [Mon, 8 Mar 2021 15:20:37 +0000 (15:20 +0000)]
[RISCV] Optimize INSERT_VECTOR_ELT sequences

This patch optimizes the codegen for INSERT_VECTOR_ELT in various ways.
Primarily, it removes the use of vslidedown during lowering, and the
vector element is inserted entirely using vslideup with a custom VL and
slide index.

Additionally, lowering of i64-element vectors on RV32 has been optimized
in several ways. When the 64-bit value to insert is the same as the
sign-extension of the lower 32-bits, the codegen can follow the regular
path. When this is not possible, a new sequence of two i32 vslide1up
instructions is used to get the vector element into a vector. This
sequence was suggested by @craig.topper. From there, the value is slid
into the final position for more consistent lowering across RV32 and
RV64.

Reviewed By: craig.topper

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

3 years ago[RISCV] Fix up stale VECREDUCE comments. NFC.
Fraser Cormack [Thu, 11 Mar 2021 09:33:47 +0000 (09:33 +0000)]
[RISCV] Fix up stale VECREDUCE comments. NFC.

Reviewed By: craig.topper

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

3 years ago[OpenCL] Refactor diagnostic for OpenCL extension/feature
Anton Zabaznov [Fri, 5 Mar 2021 13:23:49 +0000 (16:23 +0300)]
[OpenCL] Refactor diagnostic for OpenCL extension/feature

There is no need to check for enabled pragma for core or optional core features,
thus this check is removed

Reviewed By: Anastasia

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

3 years ago[mlir] fix memory leak on failure path in parser
Alex Zinenko [Thu, 11 Mar 2021 10:27:00 +0000 (11:27 +0100)]
[mlir] fix memory leak on failure path in parser

Forward references to blocks lead to `Block`s being allocated in the
parser, but they are not necessarily included into a region if parsing
fails, leading to a leak. Clean them up in parser destructor.

Reviewed By: rriddle, mehdi_amini

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

3 years ago[InstSimplify] Simplify smul.fix and smul.fix.sat
Bjorn Pettersson [Tue, 9 Mar 2021 21:05:41 +0000 (22:05 +0100)]
[InstSimplify] Simplify smul.fix and smul.fix.sat

Add simplification of smul.fix and smul.fix.sat according to
  X * 0 -> 0
  X * undef -> 0
  X * (1 << scale) -> X

This includes the commuted patterns and splatted vectors.

Reviewed By: nikic

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

3 years ago[ConstantFold] Handle undef/poison when constant folding smul_fix/smul_fix_sat
Bjorn Pettersson [Thu, 11 Mar 2021 10:38:36 +0000 (11:38 +0100)]
[ConstantFold] Handle undef/poison when constant folding smul_fix/smul_fix_sat

Do constant folding according to
  posion * C -> poison
  C * poison -> poison
  undef * C -> 0
  C * undef -> 0
for smul_fix and smul_fix_sat intrinsics (for any scale).

Reviewed By: nikic, aqjune, nagisa

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

3 years ago[mlir] Fix ConstantOp verifier
Marius Brehler [Mon, 8 Mar 2021 21:34:48 +0000 (22:34 +0100)]
[mlir] Fix ConstantOp verifier

This restricts the attributes to integers for constants of type
IndexType. So far an attribute like StringAttr as in

  %c1 = constant "" : index

is valid.

Reviewed By: mehdi_amini

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

3 years ago[libcxx] adds concept std::semiregular
Christopher Di Bella [Fri, 12 Mar 2021 03:49:27 +0000 (19:49 -0800)]
[libcxx] adds concept std::semiregular

Implements parts of:
    - P0898R3 Standard Library Concepts
    - P1754 Rename concepts to standard_case for C++20, while we still can

Depends on D97443

Reviewed By: Quuxplusone, EricWF, #libc

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

3 years agoRevert "[OpenMP] Do not propagate match extensions to nested contexts"
Johannes Doerfert [Fri, 12 Mar 2021 05:47:19 +0000 (23:47 -0600)]
Revert "[OpenMP] Do not propagate match extensions to nested contexts"

Two tests failed for some reason, need to investigate:
  https://lab.llvm.org/buildbot/#/builders/109/builds/10399

This reverts commit ad9e98b8efa0138559eb640023695dab54967a8d.

3 years agoRevert "[OpenMP] Introduce the `disable_selector_propagation` variant selector trait"
Johannes Doerfert [Fri, 12 Mar 2021 05:47:10 +0000 (23:47 -0600)]
Revert "[OpenMP] Introduce the `disable_selector_propagation` variant selector trait"

Need to revert ad9e98b8efa0138559eb640023695dab54967a8d which this
commit depends on.

This reverts commit f771ef7b5f0ed260d00931cd50e6fe462edbacaf.

3 years ago[Attributor] Derive `willreturn` based on `mustprogress`
Johannes Doerfert [Tue, 5 Jan 2021 22:55:54 +0000 (16:55 -0600)]
[Attributor] Derive `willreturn` based on `mustprogress`

Since D86233 we have `mustprogress` which, in combination with
`readonly`, implies `willreturn`. The idea is that every side-effect
has to be modeled as a "write". Consequently, `readonly` means there
is no side-effect, and `mustprogress` guarantees that we cannot "loop"
forever without side-effect.

Reviewed By: fhahn

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

3 years ago[Attributor][NFC] Update tests after D94741
Johannes Doerfert [Fri, 12 Mar 2021 05:21:32 +0000 (23:21 -0600)]
[Attributor][NFC] Update tests after D94741

The update_test_checks script can now check for global symbols and is able
to handle them properly when they differ across prefixes, e.g.,
attribute #0 might be different in different runs.

This patch simply updates all the Attributor tests with the new script.

Reviewed By: sstefan1

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

3 years ago[OpenMP][NFC] Use `AsyncInfo` as the variable name for a `__tgt_async_info`
Johannes Doerfert [Wed, 10 Feb 2021 20:04:37 +0000 (14:04 -0600)]
[OpenMP][NFC] Use `AsyncInfo` as the variable name for a `__tgt_async_info`

Reviewed By: grokos, tianshilei1992

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

3 years ago[OpenMP][DeviceRTL] Extract shuffle idiom and port it to declare variant
Johannes Doerfert [Sat, 30 Jan 2021 20:46:58 +0000 (14:46 -0600)]
[OpenMP][DeviceRTL] Extract shuffle idiom and port it to declare variant

The shuffle idiom is differently implemented in our supported targets.
To reduce the "target_impl" file we now move the shuffle idiom in it's
own self-contained header that provides the implementation for AMDGPU
and NVPTX. A fallback can be added later on.

Reviewed By: tianshilei1992

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

3 years ago[OpenMP] Introduce the `disable_selector_propagation` variant selector trait
Johannes Doerfert [Sun, 31 Jan 2021 17:32:29 +0000 (11:32 -0600)]
[OpenMP] Introduce the `disable_selector_propagation` variant selector trait

Nested `omp [begin|end] declare variant` inherit the selectors from
surrounding `omp (begin|end) declare variant` constructs. To stop such
propagation the user can add the `disable_selector_propagation` to the
`extension` set in the `implementation` selector.

Reviewed By: tianshilei1992

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

3 years ago[OpenMP] Do not propagate match extensions to nested contexts
Johannes Doerfert [Sun, 31 Jan 2021 06:37:56 +0000 (00:37 -0600)]
[OpenMP] Do not propagate match extensions to nested contexts

If we have nested declare variant context, it doesn't make sense to
inherit the match extension from the parent. Instead, just skip it.

Reviewed By: JonChesterfield

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

3 years ago[Utils] Check for more global information in update_test_checks
Johannes Doerfert [Fri, 15 Jan 2021 03:13:23 +0000 (21:13 -0600)]
[Utils] Check for more global information in update_test_checks

This allows to check for various globals (metadata/attributes/...) and
also resolves problems with globals (metadata/attributes/...) being
reused across different prefixes.

Reviewed By: sstefan1

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

3 years ago[FIX] Allow non-constant assume operand bundle operands.
Johannes Doerfert [Thu, 11 Mar 2021 19:43:09 +0000 (13:43 -0600)]
[FIX] Allow non-constant assume operand bundle operands.

Fixes PR49545

Reviewed By: zequanwu, fhahn, lebedev.ri

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

3 years agoDisable unique linkage suffixes ifor global vars until demanglers can be fixed.
Sriraman Tallam [Fri, 12 Mar 2021 04:05:37 +0000 (20:05 -0800)]
Disable unique linkage suffixes ifor global vars until demanglers can be fixed.

D96109 added support for unique internal linkage names for both internal
linkage functions and global variables. There was a lot of discussion on how to
get the demangling right for functions but I completely missed the point that
demanglers do not support suffixes for global vars. For example:

$ c++filt _ZL3foo
foo
$ c++filt _ZL3foo.uniq.123
_ZL3foo.uniq.123

The demangling for functions works as expected.

I am not sure of the impact of this. I don't understand how debuggers and other
tools depend on the correctness of global variable demangling so I am
pre-emptively disabling it until we can get the demangling support added.

Importantly, uniquefying global variables is not needed right now as we do not
do profile attribution to global vars based on sampling. It was added for
completeness and so this feature is not exactly missed.

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

3 years ago[Debug-Info] Add names for the debug line prologue.
Esme-Yi [Fri, 12 Mar 2021 04:42:19 +0000 (04:42 +0000)]
[Debug-Info] Add names for the debug line prologue.

Summary: This is a minor patch to add names for the debug line prologue, as a follow-up of D95998.

Reviewed By: dblaikie, ikudrin, shchenz

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

3 years ago[libc][NFC] Move the template implementation of integer_abs to __support.
Siva Chandra Reddy [Fri, 12 Mar 2021 04:06:08 +0000 (20:06 -0800)]
[libc][NFC] Move the template implementation of integer_abs to __support.

This eliminates cross-header dependency from stdlib to string.

3 years ago[RISCV] Return false from isShuffleMaskLegal except for splats.
Craig Topper [Fri, 12 Mar 2021 00:21:42 +0000 (16:21 -0800)]
[RISCV] Return false from isShuffleMaskLegal except for splats.

We don't support any other shuffles currently.

This changes the bswap/bitreverse tests that check for this in
their expansion code. Previously we expanded a byte swapping
shuffle through memory. Now we're scalarizing and doing bit
operations on scalars to swap bytes.

In the future we can probably use vrgather.vx to do a byte swap
shuffle.

3 years ago[libcxx] adds concept std::copyable
Christopher Di Bella [Fri, 12 Mar 2021 03:30:55 +0000 (19:30 -0800)]
[libcxx] adds concept std::copyable

Implements parts of:
    - P0898R3 Standard Library Concepts
    - P1754 Rename concepts to standard_case for C++20, while we still can

Depends on D97359

Reviewed By: EricWF, #libc, Quuxplusone, zoecarver

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

3 years ago[libcxx] adds concept std::movable
Christopher Di Bella [Fri, 12 Mar 2021 02:54:57 +0000 (18:54 -0800)]
[libcxx] adds concept std::movable

Implements parts of:
    - P0898R3 Standard Library Concepts
    - P1754 Rename concepts to standard_case for C++20, while we still can

Depends on D97162

Reviewed By: EricWF, #libc, Quuxplusone

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

3 years agoBPF: provide better error message for unsupported atomic operations
Yonghong Song [Thu, 11 Mar 2021 20:28:04 +0000 (12:28 -0800)]
BPF: provide better error message for unsupported atomic operations

Currently, BPF backend does not support all variants of
  atomic_load_{add,and,or,xor}, atomic_swap and atomic_cmp_swap
For example, it only supports 32bit (with alu32 mode) and 64bit
operations for atomic_load_{and,or,xor}, atomic_swap and
atomic_cmp_swap. Due to historical reason, atomic_load_add is
always supported with 32bit and 64bit.

If user used an unsupported atomic operation, currently,
codegen selectiondag cannot find bpf support and will issue
a fatal error. This is not user friendly as user may mistakenly
think this is a compiler bug.

This patch added Custom rule for unsupported atomic operations
and will emit better error message during ReplaceNodeResults()
callback. The following is an example output.

  $ cat t.c
  short sync(short *p) {
    return  __sync_val_compare_and_swap (p, 2, 3);
  }
  $ clang -target bpf -O2 -g -c t.c
  t.c:2:11: error: Unsupported atomic operations, please use 64 bit version
    return  __sync_val_compare_and_swap (p, 2, 3);
            ^
  fatal error: error in backend: Cannot select: t19: i64,ch =
    AtomicCmpSwap<(load store seq_cst seq_cst 2 on %ir.p)> t0, t2,
    Constant:i64<2>, Constant:i64<3>, t.c:2:11
    t2: i64,ch = CopyFromReg t0, Register:i64 %0
      t1: i64 = Register %0
    t11: i64 = Constant<2>
    t10: i64 = Constant<3>
  In function: sync
  PLEASE submit a bug report ...

Fatal error will still happen since we did not really do proper
lowering for these unsupported atomic operations. But we do get
a much better error message.

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

3 years agoRevert "[compiler-rt][asan] Make wild-pointer crash error more useful"
Vy Nguyen [Fri, 12 Mar 2021 03:06:37 +0000 (22:06 -0500)]
Revert "[compiler-rt][asan] Make wild-pointer crash error more useful"

This reverts commit f65e1aee4004c25fbeacd5024de1d17f0a7ebc5c.

3 years ago[libFuzzer] Add attribute noinline on Fuzzer::ExecuteCallback().
Jonas Paulsson [Thu, 4 Mar 2021 20:55:41 +0000 (14:55 -0600)]
[libFuzzer] Add attribute noinline on Fuzzer::ExecuteCallback().

The inlining of this function needs to be disabled as it is part of the
inpsected stack traces. It's string representation will look different
depending on if it was inlined or not which will cause it's string comparison
to fail.

When it was inlined in only one of the two execution stacks,
minimize_two_crashes.test failed on SystemZ. For details see
https://bugs.llvm.org/show_bug.cgi?id=49152.

Reviewers: Ulrich Weigand, Matt Morehouse, Arthur Eubanks

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

3 years ago[AMDGPU] Do not annotate an else branch if there is a kill
Carl Ritson [Fri, 12 Mar 2021 01:02:06 +0000 (10:02 +0900)]
[AMDGPU] Do not annotate an else branch if there is a kill

As llvm.amdgcn.kill is lowered to a terminator it can cause
else branch annotations to end up in the wrong block.
Do not annotate conditionals as else branches where there is
a kill to avoid this.

Reviewed By: arsenm

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