platform/upstream/llvm.git
3 years ago[doc] added section on generating the html doc
Christian Kühnel [Wed, 4 Aug 2021 14:26:37 +0000 (14:26 +0000)]
[doc] added section on generating the html doc

Added a new section on generating the html documentation
from the rst/md sources to our documentation.

Background: I wanted to check what my documenation
changes would look like on the website and had a hard
time finding how to do that. So I wanted to save other
folks the effort.

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

3 years ago[ARM] Regenerate ARM neon-copy.ll test. NFC
David Green [Mon, 9 Aug 2021 07:24:28 +0000 (08:24 +0100)]
[ARM] Regenerate ARM neon-copy.ll test. NFC

This test didn't include all test check lines, thanks to .'s in function
names. It also changed the triple to hard float to make a more
interesting test for NEON code generation.

3 years ago[M68k] Use separate asm operand class for different widths of address
Min-Yih Hsu [Mon, 9 Aug 2021 07:04:20 +0000 (00:04 -0700)]
[M68k] Use separate asm operand class for different widths of address

This could help asm parser to pick the correct variant of instruction.
This patch also migrated all the control instructions MC tests.

3 years ago[M68k][NFC] Coalesce render methods in different asm register op class
Min-Yih Hsu [Sun, 8 Aug 2021 22:41:03 +0000 (15:41 -0700)]
[M68k][NFC] Coalesce render methods in different asm register op class

And assign RegClass (i.e. operand class for all GPR) as the super class
of ARegClass and DRegClass. Note that this is a NFC change because
actually we already had XRDReg to model either address or data register
operands (as well as test coverage for it). The new super class syntax
added here is just making the relations between three RegClass-es more
explicit.

3 years ago[AArch64] NFC: Remove DecodeVectorRegisterClass from disassembler
Cullen Rhodes [Mon, 9 Aug 2021 06:52:47 +0000 (06:52 +0000)]
[AArch64] NFC: Remove DecodeVectorRegisterClass from disassembler

The decoder function and table are the same as FPR128, use that instead.

Reviewed By: david-arm

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

3 years ago[llvm-readobj][XCOFF] Print the length of the string table.
Esme-Yi [Mon, 9 Aug 2021 06:47:15 +0000 (06:47 +0000)]
[llvm-readobj][XCOFF] Print the length of the string table.

Reviewed By: jhenderson

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

3 years agoFix gcc build error after D105519
Pan, Tao [Mon, 9 Aug 2021 05:50:26 +0000 (13:50 +0800)]
Fix gcc build error after D105519

Same as 3bec7ed59e1b

Reviewed By: sbc100

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

3 years ago[MC][ELF] Do not error on parsing .debug_* section directive for MIPS
Simon Atanasyan [Sun, 8 Aug 2021 05:09:59 +0000 (08:09 +0300)]
[MC][ELF] Do not error on parsing .debug_* section directive for MIPS

MIPS .debug_* sections should have SHT_MIPS_DWARF section type to
distinguish among sections contain DWARF and ECOFF debug formats, but in
assembly files these sections have SHT_PROGBITS (@progbits) type. Now
assembler shows 'changed section type for ...' error when parsing
`.section .debug_*,"",@progbits` directive for MIPS targets.

The same problem exists for x86-64 target and this patch extends
workaround implemented in D76151. The patch adds one more case
when assembler ignores section types mismatch after `SwitchSection()`
call.

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

3 years agoRevert "SROA: Enhance speculateSelectInstLoads"
Christudasan Devadasan [Mon, 9 Aug 2021 05:13:39 +0000 (01:13 -0400)]
Revert "SROA: Enhance speculateSelectInstLoads"

This reverts commit ffc3fb665d0a0dccd64cc8c803ad8cc1a0d5dfa1.

3 years ago[LowerMemIntrinsics] Typo fix.
Michael Liao [Mon, 9 Aug 2021 02:37:30 +0000 (22:37 -0400)]
[LowerMemIntrinsics] Typo fix.

3 years ago[RISCV] Add optimizations for FMV_X_ANYEXTH similar to FMV_X_ANYEXTW_RV64.
Craig Topper [Mon, 9 Aug 2021 01:29:22 +0000 (18:29 -0700)]
[RISCV] Add optimizations for FMV_X_ANYEXTH similar to FMV_X_ANYEXTW_RV64.

This enables the fneg and fabs combines we have for FMV_X_ANYEXTW_RV64.

3 years ago[RISCV] Remove -target-abi from half-bitmanip-dagcombines.ll.
Craig Topper [Mon, 9 Aug 2021 01:18:53 +0000 (18:18 -0700)]
[RISCV] Remove -target-abi from half-bitmanip-dagcombines.ll.

This should be testing the custom ISD nodes we use for passing
half values in GPRs.

We should optimize these to integer operations, but we currently
don't.

3 years ago[RISCV] Introduce a RISCV CondCode enum instead of using ISD:SET* in MIR. NFC
Craig Topper [Sun, 8 Aug 2021 23:58:50 +0000 (16:58 -0700)]
[RISCV] Introduce a RISCV CondCode enum instead of using ISD:SET* in MIR. NFC

Previously we converted ISD condition codes to integers and stored
them directly in our MIR instructions. The ISD enum kind of belongs
to SelectionDAG so that seems like incorrect layering.

This patch instead uses a CondCode node on RISCV::SELECT_CC until
isel and then converts it from ISD encoding to a RISCV specific value.
This value can be converted to/from the RISCV branch opcodes in the
RISCV namespace.

My larger motivation is to possibly support a microarchitectural
feature of some CPUs where a short forward branch over a single
instruction can be predicated internally. This will require a new
pseudo instruction for select that needs to carry a branch condition
and live probably until RISCVExpandPseudos. At that point it can be
expanded to control flow without other instructions ending up in the
predicated basic block. Using an ISD encoding in RISCVExpandPseudos
doesn't seem like correct layering.

Reviewed By: luismarques

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

3 years ago[RISCV] Move the $rs operand of PseudoStore from outs to ins. NFC
Craig Topper [Sun, 8 Aug 2021 22:57:39 +0000 (15:57 -0700)]
[RISCV] Move the $rs operand of PseudoStore from outs to ins. NFC

This is the data to be stored so it should be an input.

To keep operand order similar between loads and stores, move the temp
register to the first dest operand of floating point loads. Rework
the assembler code accordingly.

This doesn't have any functional effect because this Pseudo is only
used by the assembler which doesn't use ins/outs.

Reviewed By: luismarques

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

3 years ago[M68k] Update disassembler test case following up ADD / ADDA changes
Min-Yih Hsu [Sun, 8 Aug 2021 21:20:46 +0000 (14:20 -0700)]
[M68k] Update disassembler test case following up ADD / ADDA changes

Update disassembler test case to reflect the changes on ADD/ADDA
instruction separation.

3 years ago[clangd] Populate-switch triggers when the whole condition is selected.
Sam McCall [Sun, 8 Aug 2021 19:04:53 +0000 (21:04 +0200)]
[clangd] Populate-switch triggers when the whole condition is selected.

This allows vscode to find it as a diagnostic quickfix for -Wswitch.

While here, group the code into chunks and add a couple more comments.

3 years ago[DWARF] Remove collectChildrenAddressRanges (NFC)
Kazu Hirata [Sun, 8 Aug 2021 15:57:32 +0000 (08:57 -0700)]
[DWARF] Remove collectChildrenAddressRanges (NFC)

The last use was removed on Dec 21, 2018 in commit
c3f30a7fc6a166910d4b674301e9108f537daf3c.

3 years ago[libomptarget][amdgpu] use --allow-shlib-undefined to link on FreeBSD
Dimitry Andric [Sat, 7 Aug 2021 19:39:11 +0000 (21:39 +0200)]
[libomptarget][amdgpu] use --allow-shlib-undefined to link on FreeBSD

On FreeBSD, the `environ` symbol is undefined at link time for shared
libraries, but resolved by the dynamic linker at runtime. Therefore,
allow the symbol to be undefined when creating a shared library, by
using the `--allow-shlib-undefined` linker flag, instead of `-z defs`
(a.k.a `--no-undefined`).

Reviewed By: JonChesterfield

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

3 years ago[mlir] Avoid including <alloca.h> on FreeBSD and NetBSD
Dimitry Andric [Sat, 7 Aug 2021 19:55:19 +0000 (21:55 +0200)]
[mlir] Avoid including <alloca.h> on FreeBSD and NetBSD

Instead, include `<cstdlib>` which is the canonical header containing
the declaration of `alloca()`.

Reviewed By: bondhugula

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

3 years ago[LV] Support Interleaved Store Group With Gaps
Dorit Nuzman [Thu, 17 Jun 2021 15:39:09 +0000 (18:39 +0300)]
[LV] Support Interleaved Store Group With Gaps

Teach LV to use masked-store to support interleave-store-group with
gaps (instead of scatters/scalarization).

The symmetric case of using masked-load to support
interleaved-load-group with gaps was introduced a while ago, by
https://reviews.llvm.org/D53668; This patch completes the store-scenario
leftover from D53668, and solves PR50566.

Reviewed by: Ayal Zaks

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

3 years ago[M68k] Separate ADDA from ADD and migrate rest of the arithmetic MC tests
Min-Yih Hsu [Sat, 7 Aug 2021 23:37:35 +0000 (16:37 -0700)]
[M68k] Separate ADDA from ADD and migrate rest of the arithmetic MC tests

Previously ADD & ADDA (as well as SUB & SUBA) instructions are mixed
together, which not only violated Motorola assembly's syntax but also
made asm parsing more difficult. This patch separates these two kinds of
instructions migrate rest of the tests from
test/CodeGen/M68k/Encoding/Arithmetic to test/MC/M68k/Arithmetic.

Note that we observed minor regressions on codegen quality: Sometimes
isel uses ADD instead of ADDA even the latter can lead to shorter
sequence of code. This issue implies that some isel patterns might need
to be updated.

3 years agoUpdate `llvm-readobj` command invocation in extract-section.py
Min-Yih Hsu [Sun, 8 Aug 2021 00:07:28 +0000 (17:07 -0700)]
Update `llvm-readobj` command invocation in extract-section.py

Change `-elf-output-style` to `--elf-output-style` to reflect the recent
changes on short/long CLI options in LLVM binary utils.

3 years ago[RISCV] Autogenerate test. NFC
Craig Topper [Sun, 8 Aug 2021 00:11:11 +0000 (17:11 -0700)]
[RISCV] Autogenerate test. NFC

3 years ago[RISCV] Support FP_TO_S/UINT_SAT for i32 and i64.
Craig Topper [Sat, 7 Aug 2021 22:53:46 +0000 (15:53 -0700)]
[RISCV] Support FP_TO_S/UINT_SAT for i32 and i64.

The fcvt fp to integer instructions saturate if their input is
infinity or out of range, but the instructions produce a maximum
integer for nan instead of 0 required for the ISD opcodes.

This means we can use the instructions to do the saturating
conversion, but we'll need to fix up the nan case at the end.

We can probably improve the i8 and i16 default codegen as well,
but I'll leave that for a follow up.

Reviewed By: luismarques

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

3 years ago[lldb] Move Objective-C constants into ObjCConstants.h
Jonas Devlieghere [Sat, 7 Aug 2021 01:41:55 +0000 (18:41 -0700)]
[lldb] Move Objective-C constants into ObjCConstants.h

Move Objective-C constants into ObjCConstants.h and share them between
Cocoa and AppleObjCTypeEncodingParser.

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

3 years ago[MemCpyOpt] Remove MemDepAnalysis-based implementation
Nikita Popov [Sat, 8 May 2021 18:39:54 +0000 (20:39 +0200)]
[MemCpyOpt] Remove MemDepAnalysis-based implementation

The MemorySSA-based implementation has been enabled for a few months
(since D94376). This patch drops the old MDA-based implementation
entirely.

I've kept this to only the basic cleanup of dropping various
conditions -- the code could be further cleaned up now that there
is only one implementation.

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

3 years ago[clang] Fix libclang linking on Solaris
Rainer Orth [Sat, 7 Aug 2021 19:14:15 +0000 (21:14 +0200)]
[clang] Fix libclang linking on Solaris

Linking `libclang.so` is currently broken on Solaris:

  ld: fatal: option --version-script requires option -z gnu-version-script-compat to be specified

While Solaris `ld` supports a considerable subset of `--version-script`,
there are some elements of the syntax that aren't.

The fix is equivalent to D78510 <https://reviews.llvm.org/D78510>.

Additionally, use of C-style comments is a GNU extension
that can easily be avoided by using `#` as comment character, which is
supported by GNU `ld`, `gold`, and `lld`.

Tested on `amd64-pc-solaris2.11`, `sparcv9-sun-solaris2.11`,
`x86_64-pc-linux-gnu`.

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

3 years ago[InstCombine] Remove nnan requirement for transformation to fabs from select
Krishna [Sat, 7 Aug 2021 15:56:49 +0000 (21:26 +0530)]
[InstCombine] Remove nnan requirement for transformation to fabs from select

In this patch, the "nnan" requirement is removed for the canonicalization of select with fcmp to fabs.
(i) FSub logic: Remove check for nnan flag presence in fsub. Example: https://alive2.llvm.org/ce/z/751svg (fsub).
(ii) FNeg logic: Remove check for the presence of nnan and nsz flag in fneg. Example: https://alive2.llvm.org/ce/z/a_fsdp (fneg).

Reviewed By: spatel

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

3 years ago[OpenMP] mark target task untied
Ye Luo [Sat, 7 Aug 2021 16:31:03 +0000 (12:31 -0400)]
[OpenMP] mark target task untied

OpenMP specification Tasking Terminology
target task :A mergeable and untied task that ...

Reviewed By: tianshilei1992

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

3 years ago[clang][NFC] Fix a -Wparentheses warning.
Craig Topper [Sat, 7 Aug 2021 15:56:31 +0000 (08:56 -0700)]
[clang][NFC] Fix a -Wparentheses warning.

3 years ago[X86] Teach shouldSinkOperands to recognize pmuldq/pmuludq patterns.
Craig Topper [Sat, 7 Aug 2021 05:19:38 +0000 (22:19 -0700)]
[X86] Teach shouldSinkOperands to recognize pmuldq/pmuludq patterns.

The IR for pmuldq/pmuludq intrinsics uses a sext_inreg/zext_inreg
pattern on the inputs. Ideally we pattern match these away during
isel. It is possible for LICM or other middle end optimizations
to separate the extend from the mul. This prevents SelectionDAG
from removing it or depending on how the extend is lowered, we
may not be able to generate an AssertSExt/AssertZExt in the
mul basic block. This will prevent pmuldq/pmuludq from being
formed at all.

This patch teaches shouldSinkOperands to recognize this so
that CodeGenPrepare will clone the extend into the same basic
block as the mul.

Fixes PR51371.

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

3 years ago[X86] Add test cases for pr51371. NFC
Craig Topper [Sat, 7 Aug 2021 15:39:54 +0000 (08:39 -0700)]
[X86] Add test cases for pr51371. NFC

3 years ago[IR] Remove unused declaration InitializeTypeMap (NFC)
Kazu Hirata [Sat, 7 Aug 2021 14:37:54 +0000 (07:37 -0700)]
[IR] Remove unused declaration InitializeTypeMap (NFC)

The corresponding function definition was removed on Apr 23, 2016 in
commit a59d3e5af889662139b8b08f2175f12567491441.

3 years ago[NFC][InstCombine] `vector_reduce_xor(?ext(<n x i1>))` --> `?ext(vector_reduce_add...
Roman Lebedev [Sat, 7 Aug 2021 12:59:21 +0000 (15:59 +0300)]
[NFC][InstCombine] `vector_reduce_xor(?ext(<n x i1>))` --> `?ext(vector_reduce_add(<n x i1>))`

Instead of expanding it ourselves,
we can just forward to `?ext(vector_reduce_add(<n x i1>))`, as per alive2:
https://alive2.llvm.org/ce/z/ymz7zE (self)
https://alive2.llvm.org/ce/z/eKu2v2 (skipped zext)
https://alive2.llvm.org/ce/z/c3BXgc (skipped sext)

3 years ago[NFC][InstCombine] Simplify emitted IR for `vector_reduce_xor(?ext(<n x i1>))`
Roman Lebedev [Sat, 7 Aug 2021 12:45:11 +0000 (15:45 +0300)]
[NFC][InstCombine] Simplify emitted IR for `vector_reduce_xor(?ext(<n x i1>))`

Now that we canonicalize low bit splatting to the form we were emitting
here ourselves, emit simpler IR that will be canonicalized later.

See 1e801439be26569c9ede6fd309a645b00adb656c for proofs:
https://alive2.llvm.org/ce/z/MjCm5W (self)
https://alive2.llvm.org/ce/z/kgqF4M (skipped zext)
https://alive2.llvm.org/ce/z/pgy3HP (skipped sext)

3 years ago[InstCombine] Prefer `-(x & 1)` as the low bit splatting pattern (PR51305)
Roman Lebedev [Sat, 7 Aug 2021 12:20:35 +0000 (15:20 +0300)]
[InstCombine] Prefer `-(x & 1)` as the low bit splatting pattern (PR51305)

Both patterns are equivalent (https://alive2.llvm.org/ce/z/jfCViF),
so we should have a preference. It seems like mask+negation is better
than two shifts.

3 years ago[NFC][InstCombine] Add tests for low bit splatting pattern (PR51305)
Roman Lebedev [Sat, 7 Aug 2021 11:40:10 +0000 (14:40 +0300)]
[NFC][InstCombine] Add tests for low bit splatting pattern (PR51305)

3 years ago[NFC][InstCombine] Autogenerate checklines in a few tests being affected by an upcomi...
Roman Lebedev [Sat, 7 Aug 2021 12:25:10 +0000 (15:25 +0300)]
[NFC][InstCombine] Autogenerate checklines in a few tests being affected by an upcoming change

3 years agoSROA: Enhance speculateSelectInstLoads
Christudasan Devadasan [Fri, 23 Jul 2021 12:28:55 +0000 (08:28 -0400)]
SROA: Enhance speculateSelectInstLoads

Allow the folding even if there is an
intervening bitcast.

Reviewed By: arsenm

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

3 years ago[VPlan] Iterate over phi recipes to detect reductions to fix.
Florian Hahn [Sat, 7 Aug 2021 13:02:24 +0000 (14:02 +0100)]
[VPlan] Iterate over phi recipes to detect reductions to fix.

After refactoring the phi recipes, we can now iterate over all header
phis in a VPlan to detect reductions when it comes to fixing them up
when tail folding.

This reduces the coupling with the cost model & legal by using the
information directly available in VPlan. It also removes a call to
getOrAddVPValue, which references the original IR value which may
become outdated after VPlan transformations.

Reviewed By: Ayal

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

3 years ago[MCA] Simplify the rounding logic used in TimelineView::printWaitTimeEntry.
Andrea Di Biagio [Sat, 7 Aug 2021 10:39:33 +0000 (11:39 +0100)]
[MCA] Simplify the rounding logic used in TimelineView::printWaitTimeEntry.

This is related to PR51392.

Before this patch, the timeline view was rounding doubles to the first decimal,
using a logic similar to this:

```
  double AverageTime = (double)Input / CumulativeExecutions;
  double Result = floor((AverageTime * 10) + 0.5) / 10
```

Here, Input and CumulativeExecutions are both unsigned integers.
The last operation is what effectively performs the rounding of AverageTime.

PR51392 has been raised because - under specific -m32 configurations of GCC -
one of the timeline tests reports slighlty different values (due to a different
rounding choice).

This patch tries to minimise the propagation of floating-point error by
hoisting the multiply by 10, so that it is performed on the unsigned.

```
  double AverageTime = (double)(Input * 10) / CumulativeExecutions;
  floor(AverageTime + 0.5) / 10
```

So we are trading a floating point multiply for a integer multiply (which can be
expanded using a simple MUL or using an `ADD + LEA` sequence). This decrease in
floating point operations executed should also help with decreasing the error in
the computation..

Strictly speaking, that computation will always be potentially subject to error
(depending on what values are passed in input). However, this patch should
improve the situation and make bug like PR51392 less frequent.

3 years ago[LLD] Add required `ppc` target to the test cases. NFC
Simon Atanasyan [Sat, 7 Aug 2021 10:29:59 +0000 (13:29 +0300)]
[LLD] Add required `ppc` target to the test cases. NFC

3 years ago[LLD] Support compressed input sections on big-endian targets
Simon Atanasyan [Fri, 6 Aug 2021 10:29:47 +0000 (13:29 +0300)]
[LLD] Support compressed input sections on big-endian targets

This patch enables compressed input sections on big-endian targets by
checking the target endianness and selecting an appropriate `Chdr`
structure.

Fixes PR51369

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

3 years ago[GlobalISel] Fix a combine causing DBG_VALUE with dangling vregs.
Amara Emerson [Sat, 7 Aug 2021 08:37:24 +0000 (01:37 -0700)]
[GlobalISel] Fix a combine causing DBG_VALUE with dangling vregs.

We should use MachineInstr::eraseFromParentAndMarkDBGValuesForRemoval()
instead of eraseFromParent().

We should probably use that in other places too but fix this issue which
affects clang bootstrap builds for now.

3 years ago[OpenMP] Fix accidental reuse of VLA size
Roger Ferrer Ibanez [Fri, 6 Aug 2021 20:22:23 +0000 (20:22 +0000)]
[OpenMP] Fix accidental reuse of VLA size

We were using an OpaqueValueExpr allocated on the stack to store
the size of a VLA. Because the VLASizeMap in CodegenFunction
uses the address of the expression to avoid recomputing VLAs,
we were accidentally reusing an earlier llvm::Value. This led to
invalid LLVM IR.

This is a temporary solution until VLASizeMap can be pushed and popped
based on the context.

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

3 years agoFix PPC buildbot break caused by 4c4093e6e39fe6601f9c95a95a6bc242ef648cd5
Nemanja Ivanovic [Sat, 7 Aug 2021 03:03:44 +0000 (22:03 -0500)]
Fix PPC buildbot break caused by 4c4093e6e39fe6601f9c95a95a6bc242ef648cd5

This commit adds the isnan intrinsic and provides a default expansion
for it in the SDAG. However, it makes the assumption that types
it operates on are IEEE-compliant types. This is not always the case.
An example of that is PPC "double double" which has a representation
that
- Does not need to conform to IEEE requirements for isnan as it is
  not an IEEE-compliant type
- Does not have a representation that allows for straightforward
  reinterpreting as an integer and use of integer operations

The result was that this commit broke __builtin_isnan for ppc_fp128
making many valid numeric values report a NaN.

This patch simply changes the expansion to always expand to unordered
comparison (regardless of whether FP exceptions are tracked). This
is inline with previous semantics.

3 years ago[AVR][clang] Add '$SYSROOT/avr' to possible avr-libc locations
Matt Jacobson [Sat, 7 Aug 2021 02:23:14 +0000 (10:23 +0800)]
[AVR][clang] Add '$SYSROOT/avr' to possible avr-libc locations

Reviewed by: benshi001

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

3 years ago[profile][Fuchsia] Add missing system header #include
Roland McGrath [Fri, 6 Aug 2021 02:51:48 +0000 (19:51 -0700)]
[profile][Fuchsia] Add missing system header #include

The _zx_vmar_root_self function is not a system call but
a libc function declared in a separate header.

Reviewed By: gulfem

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

3 years agoRe-land "[lldb] Upstream support for Foundation constant classes"
Jonas Devlieghere [Sat, 7 Aug 2021 00:24:47 +0000 (17:24 -0700)]
Re-land "[lldb] Upstream support for Foundation constant classes"

Upstream support for NSConstantArray, NSConstantIntegerNumber,
NSConstant{Float,Double}Number and NSConstantDictionary.

We would've upstreamed this earlier but testing it requires
-fno-constant-nsnumber-literals, -fno-constant-nsarray-literals and
-fno-constant-nsdictionary-literals which haven't been upstreamed yet.
As a temporary workaround use the system compiler (xcrun clang) for the
constant variant of the tests.

I'm just upstreaming this. The patch and the tests were all authored by
Fred Riss.

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

3 years agoRevert "[lldb] Upstream support for Foundation constant classes"
Sterling Augustine [Fri, 6 Aug 2021 23:50:00 +0000 (16:50 -0700)]
Revert "[lldb] Upstream support for Foundation constant classes"

This reverts commit 34d78b6a6755946e547afc47d38b59b6a2854457.

This breaks build bots witha  missing file:
/home/worker/2.0.1/lldb-x86_64-debian/llvm-project/lldb/source/Plugins/Language/ObjC/Cocoa.cpp:10:10: fatal error: 'objc/runtime.h' file not found

3 years agoUse LC_DYLD_EXPORTS_TRIE to locate the dyld trie structure if present
Jim Ingham [Fri, 6 Aug 2021 23:36:25 +0000 (16:36 -0700)]
Use LC_DYLD_EXPORTS_TRIE to locate the dyld trie structure if present

The pointer to the dyld trie data structure which lldb needs to parse to get
"trampoline kinds" on Darwin used to be a field in the LC_DYLD_INFO load command. A
new load command was added recently dedicated to this purpose: LC_DYLD_EXPORTS_TRIE.
The format of the trie did not change, however. So all we have to do is use the new
command if present. The commands are supposed to be mutually exclusive, so I added
an lldb_assert to warn if they are not.

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

3 years ago[MLIR][STD] Add safe scalar constant propagation for FPTruncOp
Max Kudryavtsev [Fri, 6 Aug 2021 23:29:21 +0000 (16:29 -0700)]
[MLIR][STD] Add safe scalar constant propagation for FPTruncOp

Perform scalar constant propagation for FPTruncOp only if the resulting value can be represented without precision loss or rounding.

Example:
%cst = constant 1.000000e+00 : f32
%0 = fptrunc %cst : f32 to bf16
-->
%cst = constant 1.000000e+00 : bf16

Reviewed By: mehdi_amini

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

3 years agoopencl-c.h: add 3.0 optional extension support for a few more bits
Dave Airlie [Fri, 6 Aug 2021 23:25:00 +0000 (09:25 +1000)]
opencl-c.h: add 3.0 optional extension support for a few more bits

These 3 are fairly simple, pipes, workgroups and subgroups.

Reviewed By: Anastasia

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

3 years ago[NVPTX] Add NVPTX intrinsics for CUDA PTX 6.5 ldmatrix instructions
Steffen Larsen [Fri, 6 Aug 2021 22:10:37 +0000 (15:10 -0700)]
[NVPTX] Add NVPTX intrinsics for CUDA PTX 6.5 ldmatrix instructions

Adds NVPTX intrinsics for the CUDA PTX `ldmatrix.sync.aligned` instructions added in PTX 6.5.

PTX ISA description of `ldmatrix.sync.aligned`: https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#warp-level-matrix-instructions-ldmatrix

Authored-by: Steffen Larsen <steffen.larsen@codeplay.com>
Reviewed By: tra

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

3 years ago[lldb] Upstream support for Foundation constant classes
Jonas Devlieghere [Fri, 6 Aug 2021 20:06:46 +0000 (13:06 -0700)]
[lldb] Upstream support for Foundation constant classes

Upstream support for NSConstantArray, NSConstantIntegerNumber,
NSConstant{Float,Double}Number and NSConstantDictionary.

We would've upstreamed this earlier but testing it requires
-fno-constant-nsnumber-literals, -fno-constant-nsarray-literals and
-fno-constant-nsdictionary-literals which haven't been upstreamed yet.
As a temporary workaround use the system compiler (xcrun clang) for the
constant variant of the tests.

I'm just upstreaming this. The patch and the tests were all authored by
Fred Riss.

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

3 years ago[AMDGPU] Added test for MachineLICM reg pressure. NFC.
Stanislav Mekhanoshin [Fri, 6 Aug 2021 23:00:35 +0000 (16:00 -0700)]
[AMDGPU] Added test for MachineLICM reg pressure. NFC.

The test shows excessive register pressure after the MachineLICM.
This is a pre-commit for the patch fixing it.

Differential Revision:

3 years agoAdd a "current" token to the ThreadID option to break set/modify.
Jim Ingham [Wed, 28 Jul 2021 23:59:55 +0000 (16:59 -0700)]
Add a "current" token to the ThreadID option to break set/modify.

This provides a convenient way to limit a breakpoint
to the current thread when setting it from the command line w/o
having to figure out what the current thread is.

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

3 years agoRevert "[lit] Have REQUIRES support the target triple"
Paul Robinson [Fri, 6 Aug 2021 22:01:35 +0000 (15:01 -0700)]
Revert "[lit] Have REQUIRES support the target triple"

This reverts commit 100a7b6197863d4d5ebc97761d7e98063e164e26.

Speculating that this is the reason behind a sanitizer failure:
https://lab.llvm.org/buildbot/#/builders/37/builds/5945

3 years agoFix Windows bots failure caused by 8c4208d5c1671d1b44eaf87e8f876b7d635f5114
Zequan Wu [Fri, 6 Aug 2021 21:42:55 +0000 (14:42 -0700)]
Fix Windows bots failure caused by 8c4208d5c1671d1b44eaf87e8f876b7d635f5114

3 years ago[OpenMP]Fix PR51349: Remove AlwaysInline for if regions.
Joseph Huber [Fri, 6 Aug 2021 14:53:51 +0000 (10:53 -0400)]
[OpenMP]Fix PR51349: Remove AlwaysInline for if regions.

After D94315 we add the `NoInline` attribute to the outlined function to handle
data environments in the OpenMP if clause. This conflicted with the `AlwaysInline`
attribute added to the outlined function. for better performance in D106799.
The data environments should ideally not require NoInline, but for now this
fixes PR51349.

Reviewed By: mikerice

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

3 years ago[InstCombine] reduce vector casting before icmp
Sanjay Patel [Fri, 6 Aug 2021 20:36:32 +0000 (16:36 -0400)]
[InstCombine] reduce vector casting before icmp

There may be some generalizations (see test comments) of these patterns,
but this should handle the cases motivated by:
https://llvm.org/PR51315
https://llvm.org/PR51259

The backend may want to transform differently, but at least for
the x86 examples that I looked at, there does not appear to be
any significant perf diff either way.

3 years ago[InstCombine] add tests for icmp of casted vector; NFC
Sanjay Patel [Fri, 6 Aug 2021 19:58:19 +0000 (15:58 -0400)]
[InstCombine] add tests for icmp of casted vector; NFC

https://llvm.org/PR51315

3 years ago[amdgpu] Revise the conversion from i64 to f32.
Michael Liao [Wed, 4 Aug 2021 20:22:51 +0000 (16:22 -0400)]
[amdgpu] Revise the conversion from i64 to f32.

- Replace 'cmp+sel' with 'umin' if possible.

Reviewed By: foad

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

3 years ago[Profile][NFC] Clean up initializeProfileForContinuousMode
Zequan Wu [Thu, 5 Aug 2021 19:08:04 +0000 (12:08 -0700)]
[Profile][NFC] Clean up initializeProfileForContinuousMode

Merge two versions of `initializeProfileForContinuousMode` function into one.

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

3 years ago[Clang][DiagnosticSemaKinds] combine diagnostic texts
Nick Desaulniers [Fri, 6 Aug 2021 20:48:20 +0000 (13:48 -0700)]
[Clang][DiagnosticSemaKinds] combine diagnostic texts

The diagnostic texts for warning on attributes that don't appear on the
initial declaration is generally useful.  We'd like to re-use it in
D106030, but first let's combine two that already are very similar so we
may re-use it a third time in that commit.

Also, fix a few places that were using notePreviousDefinition to point
to declarations, to instead use diag::note_previous_declaration.

Reviewed By: aaron.ballman

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

3 years ago[clangd] Add basic support for attributes (selection, hover)
Sam McCall [Tue, 20 Oct 2020 10:01:48 +0000 (12:01 +0200)]
[clangd] Add basic support for attributes (selection, hover)

These aren't terribly common, but we currently mishandle them badly.
Not only do we not recogize the attributes themselves, but we often end up
selecting some node other than the parent (because source ranges aren't accurate
in the presence of attributes).

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

3 years agoReapply "Support Attr in DynTypedNode and ASTMatchers."
Sam McCall [Fri, 6 Aug 2021 20:28:31 +0000 (22:28 +0200)]
Reapply "Support Attr in DynTypedNode and ASTMatchers."

This reverts commit 3241680f111ddf3eac37db88cacac199083543f0.
Fixed mangled post-test formatting :-(

3 years agoRevert "Support Attr in DynTypedNode and ASTMatchers."
Sam McCall [Fri, 6 Aug 2021 20:27:54 +0000 (22:27 +0200)]
Revert "Support Attr in DynTypedNode and ASTMatchers."

This reverts commit a4bdcdadc6ffab250b218bbdae9a0ced05bebfc9.

Fails bots:
https://lab.llvm.org/buildbot/#/builders/109/builds/20231/steps/6/logs/stdio

3 years agoSupport Attr in DynTypedNode and ASTMatchers.
Sam McCall [Mon, 19 Oct 2020 21:36:50 +0000 (23:36 +0200)]
Support Attr in DynTypedNode and ASTMatchers.

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

3 years ago[lldb] Try harder to find the __NSCFBoolean addresses
Fred Riss [Fri, 22 May 2020 02:21:51 +0000 (19:21 -0700)]
[lldb] Try harder to find the __NSCFBoolean addresses

It looks like recent CoreFoundation builds strip the non-public symbol
that we were looking for to find the 2 boolean "classes". The public
symbol is of course there, and it contains the address of the private
one. If we don't find the private symbol directly, go through a memory
read at the public symbol's location instead.

3 years agoChange TargetLowering::canMergeStoresTo() to take a MF instead of DAG.
Amara Emerson [Fri, 6 Aug 2021 19:42:03 +0000 (12:42 -0700)]
Change TargetLowering::canMergeStoresTo() to take a MF instead of DAG.

DAG is unnecessary and we need this hook to implement store merging on GlobalISel too.

3 years ago[libomptarget][amdgpu] don't declare Elf_Note on FreeBSD
Dimitry Andric [Fri, 6 Aug 2021 19:06:08 +0000 (21:06 +0200)]
[libomptarget][amdgpu] don't declare Elf_Note on FreeBSD

On FreeBSD, the system `<libelf.h>` already declares `struct Elf_Note`
indirectly (via `<sys/elf_common.h>`). This results in compile errors
when building the libomptarget amdgpu plugin. Avoid redeclaring `struct
Elf_Note` on FreeBSD to fix the errors.

Reviewed By: JonChesterfield

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

3 years ago[MachO] Introduce chained fixups related load commands.
Davide Italiano [Fri, 6 Aug 2021 19:37:06 +0000 (12:37 -0700)]
[MachO] Introduce chained fixups related load commands.

3 years ago[ARC] Add codegen for llvm.ctlz intrinsic for the ARC backend
Thomas Johnson [Fri, 6 Aug 2021 08:56:54 +0000 (10:56 +0200)]
[ARC] Add codegen for llvm.ctlz intrinsic for the ARC backend

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

3 years agoRevert "[clang][fpenv][patch] Change clang option -ffp-model=precise to select ffp...
Zahira Ammarguellat [Fri, 6 Aug 2021 19:01:47 +0000 (12:01 -0700)]
Revert "[clang][fpenv][patch] Change clang option -ffp-model=precise to select ffp-contract=on"

This reverts commit 48ad446a0fb2c9b98cb7047e4daf8a84c29cef8f.

3 years ago[flang] Lift -Werror checks into local functions
Asher Mancinelli [Fri, 6 Aug 2021 16:47:18 +0000 (10:47 -0600)]
[flang] Lift -Werror checks into local functions

Lift checks for -Werror into local functions.

Reviewed By: awarzynski

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

3 years ago[llvm] [cmake] Export LLVM_ENABLE_NEW_PASS_MANAGER into LLVMConfig.cmake
Michał Górny [Fri, 6 Aug 2021 08:56:54 +0000 (10:56 +0200)]
[llvm] [cmake] Export LLVM_ENABLE_NEW_PASS_MANAGER into LLVMConfig.cmake

Include the vaue of LLVM_ENABLE_NEW_PASS_MANAGER in generated
LLVMConfig.cmake since it is needed by clang's build system.  This fixes
test failures when the new pass manager is enabled (i.e. by default)
by having clang's CMake files correctly detect that and skip relevant
tests.

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

3 years ago[mlir] Add patterns for vector.transfer_read/write to Linalg bufferization.
Alexander Belyaev [Fri, 6 Aug 2021 13:34:30 +0000 (15:34 +0200)]
[mlir] Add patterns for vector.transfer_read/write to Linalg bufferization.

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

3 years ago[CUDA, MemCpyOpt] Add a flag to force-enable memcpyopt and use it for CUDA.
Artem Belevich [Tue, 20 Jul 2021 21:37:06 +0000 (14:37 -0700)]
[CUDA, MemCpyOpt] Add a flag to force-enable memcpyopt and use it for CUDA.

Attempt to enable MemCpyOpt unconditionally in D104801 uncovered the fact that
there are users that do not expect LLVM to materialize `memset` intrinsic.

While other passes can do that, too, MemCpyOpt triggers it more frequently and
breaks sanitizers and some downstream users.

For now introduce a flag to force-enable the flag and opt-in only CUDA
compilation with NVPTX back-end.

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

3 years ago[CMake] Check the builtins library value first
Petr Hosek [Fri, 6 Aug 2021 08:47:38 +0000 (01:47 -0700)]
[CMake] Check the builtins library value first

When the builtins library isn't found, find_compiler_rt_library
returns NOTFOUND so we'll end up linking against -lNOTFOUND. We need
to check the return value before adding it to the list.

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

3 years agoRevert "[PowerPC][AIX] Limit attribute aligned to 4096."
Sean Fertile [Fri, 6 Aug 2021 16:53:25 +0000 (12:53 -0400)]
Revert "[PowerPC][AIX] Limit attribute aligned to 4096."

This reverts commit 5181be344adbf7ba7dffc73526893d4e7750d34c.

Break libcxx type_traits header which uses aligned storage with
alignments greater than 4096. Reverting untill we can fix the header.

3 years ago2nd Speculative fix for MachO lld test after "Have REQUIRES support the target triple"
Paul Robinson [Fri, 6 Aug 2021 17:49:22 +0000 (10:49 -0700)]
2nd Speculative fix for MachO lld test after "Have REQUIRES support the target triple"

See: http://45.33.8.238/macm1/15677/step_10.txt

Follow-up to f88ad8d as it appears the lld invocations both emit an
error message; so, try adding 'not' to the RUN lines.

3 years ago[libc][nfc] move ctype_utils and FPUtils to __support
Michael Jones [Thu, 5 Aug 2021 21:27:29 +0000 (21:27 +0000)]
[libc][nfc] move ctype_utils and FPUtils to __support

Some ctype functions are called from other libc functions (e.g. isspace
is used in atoi). By moving ctype_utils.h to __support it becomes easier
to include just the implementations of these functions. For these
reasons the implementation for isspace was moved into
ctype_utils as well.

FPUtils was moved to simplify the build order, and to clarify which
files are a part of the actual libc.

Many files were modified to accomodate these changes, mostly changing
the #include paths.

Reviewed By: sivachandra

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

3 years ago[gn build] Port 4ad9ec8a328c
LLVM GN Syncbot [Fri, 6 Aug 2021 16:59:24 +0000 (16:59 +0000)]
[gn build] Port 4ad9ec8a328c

3 years ago[clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++
Sam McCall [Thu, 5 Aug 2021 12:27:40 +0000 (14:27 +0200)]
[clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++

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

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

3 years ago[mlir][NFC] Fix typos in DataLayoutInterfaces.td
Markus Böck [Fri, 6 Aug 2021 16:53:49 +0000 (18:53 +0200)]
[mlir][NFC] Fix typos in DataLayoutInterfaces.td

3 years ago[LoopCacheAnalysis]: handle mismatch type for Numerator and CacheLineSize
Zheng Chen [Fri, 6 Aug 2021 16:29:47 +0000 (16:29 +0000)]
[LoopCacheAnalysis]: handle mismatch type for Numerator and CacheLineSize

fix an assertion due to mismatch type for Numerator and CacheLineSize in loop cache analysis pass.

Reviewed By: bmahjour

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

3 years ago[GlobalISel][KnownBits] Implement G_CTPOP
Jon Roelofs [Thu, 5 Aug 2021 21:57:44 +0000 (14:57 -0700)]
[GlobalISel][KnownBits] Implement G_CTPOP

Implementation copied almost verbatim from ValueTracking.

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

3 years ago[MemCpyOpt] Teach memcpyopt to handle loads from the constant memory.
Michael Liao [Thu, 5 Aug 2021 20:48:49 +0000 (16:48 -0400)]
[MemCpyOpt] Teach memcpyopt to handle loads from the constant memory.

- Loads from the constant memory (either explicit one or as the source
  of memory transfer intrinsics) won't alias any stores.

Reviewed By: asbirlea, efriedma

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

3 years ago[LegalizeTypes] Add a simple expansion for SMULO when a libcall isn't available.
Craig Topper [Fri, 6 Aug 2021 16:31:05 +0000 (09:31 -0700)]
[LegalizeTypes] Add a simple expansion for SMULO when a libcall isn't available.

This isn't optimal, but prevents crashing when the libcall isn't
available. It just calculates the full product and makes sure the high bits
match the sign of the low half. Each of the pieces should go through their own
type legalization.

This can make D107420 unnecessary.

Needs tests, but I wanted to start discussion about D107420.

Reviewed By: FreddyYe

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

3 years ago[ARM] Define ComplexPatternFuncMutatesDAG
David Green [Fri, 6 Aug 2021 16:35:11 +0000 (17:35 +0100)]
[ARM] Define ComplexPatternFuncMutatesDAG

Some of the Arm complex pattern functions call canExtractShiftFromMul,
which can modify the DAG in-place. For this to be valid and handled
successfully we need to define ComplexPatternFuncMutatesDAG.

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

3 years agoSpeculative fix for MachO lld test after "Have REQUIRES support the target triple"
Paul Robinson [Fri, 6 Aug 2021 16:23:32 +0000 (09:23 -0700)]
Speculative fix for MachO lld test after "Have REQUIRES support the target triple"

See: http://45.33.8.238/macm1/15677/step_10.txt

This is a test that has `REQUIRES: x86` which means it never ran
before; I don't have a MachO environment but based on the FileCheck
output it looks like it should be sufficient to remove one CHECK line.

3 years ago[llvm-objcopy] [COFF] Do not patch debug entries if PointerToRawData is zero
Pirama Arumuga Nainar [Tue, 3 Aug 2021 05:17:53 +0000 (22:17 -0700)]
[llvm-objcopy] [COFF] Do not patch debug entries if PointerToRawData is zero

Fix an edge case missed by https://reviews.llvm.org/D78921.  For e.g.,
the Repro debug entry (generated with the /Brepro linker flag) does not
have a debug-directory payload.  Do not attempt to patch Debug entries
without a payload.

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

3 years agoDisable a dataflow fuzz test after "Have REQUIRES support the target triple"
Paul Robinson [Fri, 6 Aug 2021 16:14:27 +0000 (09:14 -0700)]
Disable a dataflow fuzz test after "Have REQUIRES support the target triple"

See: https://lab.llvm.org/buildbot/#/builders/75/builds/8095/steps/8/logs/stdio

which shows:
unsupported option '-fsanitize=dataflow' for target 'i386-unknown-linux-gnu'

The other dataflow tests in the same directory were already disabled,
so I think it's fine to disable this one as well.

3 years ago[lldb] Fix TestFunctionStarts.py on AS
Jonas Devlieghere [Fri, 6 Aug 2021 16:01:52 +0000 (09:01 -0700)]
[lldb] Fix TestFunctionStarts.py on AS

The tests strips the binary which invalidates the code signature. Skip
code signing for this test.

3 years ago[MLIR][std] Introduce bitcast operation
Geoffrey Martin-Noble [Thu, 5 Aug 2021 22:45:35 +0000 (15:45 -0700)]
[MLIR][std] Introduce bitcast operation

This patch introduces a bitcast operation to the standard dialect.
RFC: https://llvm.discourse.group/t/rfc-introduce-a-bitcast-op/3774

Reviewed By: silvas

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

3 years ago[CodeGen] Remove computeDefOperandLatency (NFC)
Kazu Hirata [Fri, 6 Aug 2021 15:26:55 +0000 (08:26 -0700)]
[CodeGen] Remove computeDefOperandLatency (NFC)

The last use was removed on Oct 9, 2016 in commit
5c924d71173afc93aa0f0d115bd445a7496f4294.

3 years ago[mlir] support collapsed loops in OpenMP-to-LLVM translation
Alex Zinenko [Wed, 28 Jul 2021 19:42:25 +0000 (21:42 +0200)]
[mlir] support collapsed loops in OpenMP-to-LLVM translation

Reviewed By: Meinersbur

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

3 years agoFix test failure found by "Have REQUIRES support the target triple"
Paul Robinson [Fri, 6 Aug 2021 15:07:51 +0000 (08:07 -0700)]
Fix test failure found by "Have REQUIRES support the target triple"

3 years ago[AIX] Define _ARCH_PPC64 macro for 32-bit
Jake Egan [Fri, 6 Aug 2021 14:42:18 +0000 (10:42 -0400)]
[AIX] Define _ARCH_PPC64 macro for 32-bit

%%%
The macro _ARCH_PPC64 is already defined for 64-bit, but this patch defines it for 32-bit on AIX to follow xlc. See: https://www.ibm.com/docs/en/xl-c-and-cpp-aix/13.1.0?topic=features-macros-related-architecture-settings

Note: This change creates a discrepancy between GCC, which defines _ARCH_PPC64 only for 64-bit mode.

Tested with SPEC.
%%%

Reviewed By: cebowleratibm

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