platform/upstream/llvm.git
2 years agoAdjust Bazel BUILD files for 6d45558c1
Dmitri Gribenko [Fri, 15 Apr 2022 13:45:18 +0000 (15:45 +0200)]
Adjust Bazel BUILD files for 6d45558c1

2 years ago[BOLT] Check if LLVM_REVISION is defined
Amir Ayupov [Fri, 15 Apr 2022 13:13:19 +0000 (06:13 -0700)]
[BOLT] Check if LLVM_REVISION is defined

Handle the case where LLVM_REVISION is undefined (due to LLVM_APPEND_VC_REV=OFF
or otherwise) by setting "<unknown>" value as before D123549.

Reviewed By: yota9

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

2 years agoFix failing test case found by bots:
Aaron Ballman [Fri, 15 Apr 2022 13:19:25 +0000 (09:19 -0400)]
Fix failing test case found by bots:

https://lab.llvm.org/buildbot#builders/109/builds/36683
https://lab.llvm.org/buildbot#builders/164/builds/15456
(and others)

2 years ago[clang][lex] NFC: Use FileEntryRef in PreprocessorLexer::getFileEntry()
Jan Svoboda [Fri, 15 Apr 2022 12:48:34 +0000 (14:48 +0200)]
[clang][lex] NFC: Use FileEntryRef in PreprocessorLexer::getFileEntry()

This patch changes the return type of `PreprocessorLexer::getFileEntry()` so that its clients may stop using the deprecated APIs of `FileEntry`.

Reviewed By: bnbarham

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

2 years ago[clang] NFCI: Use FileEntryRef in FileManagerTest
Jan Svoboda [Fri, 15 Apr 2022 12:48:27 +0000 (14:48 +0200)]
[clang] NFCI: Use FileEntryRef in FileManagerTest

This patch removes use of the deprecated `{File,Directory}Entry::getName()` from `FileManager` unit tests by using `{File,Directory}EntryRef` instead.

Reviewed By: bnbarham

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

2 years ago[clang] NFCI: Use DirectoryEntryRef in collectIncludePCH
Jan Svoboda [Fri, 15 Apr 2022 12:48:19 +0000 (14:48 +0200)]
[clang] NFCI: Use DirectoryEntryRef in collectIncludePCH

This patch removes use of the deprecated `DirectoryEntry::getName()` from `collectIncludePCH` by using `{File,Directory}EntryRef` instead.

Reviewed By: bnbarham

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

2 years ago[clang][CodeGen] NFCI: Use FileEntryRef
Jan Svoboda [Fri, 15 Apr 2022 12:48:01 +0000 (14:48 +0200)]
[clang][CodeGen] NFCI: Use FileEntryRef

This patch removes use of the deprecated `DirectoryEntry::getName()` from clangCodeGen by using `{File,Directory}EntryRef` instead.

Reviewed By: bnbarham

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

2 years ago[clang][parse] NFCI: Use FileEntryRef in Parser::ParseModuleImport()
Jan Svoboda [Fri, 15 Apr 2022 12:47:34 +0000 (14:47 +0200)]
[clang][parse] NFCI: Use FileEntryRef in Parser::ParseModuleImport()

This patch removes use of the deprecated `DirectoryEntry::getName()` from `Parser` by using `{File,Directory}EntryRef` instead.

Reviewed By: bnbarham

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

2 years ago[C89/C2x] Diagnose calls to a function without a prototype but passes arguments
Aaron Ballman [Fri, 15 Apr 2022 13:07:28 +0000 (09:07 -0400)]
[C89/C2x] Diagnose calls to a function without a prototype but passes arguments

This catches places where a function without a prototype is
accidentally used, potentially passing an incorrect number of
arguments, and is a follow-up to the work done in
https://reviews.llvm.org/D122895 and described in the RFC
(https://discourse.llvm.org/t/rfc-enabling-wstrict-prototypes-by-default-in-c).
The diagnostic is grouped under the new -Wdeprecated-non-prototypes
warning group and is enabled by default.

The diagnostic is disabled if the function being called was implicitly
declared (the user already gets an on-by-default warning about the
creation of the implicit function declaration, so no need to warn them
twice on the same line). Additionally, the diagnostic is disabled if
the declaration of the function without a prototype was in a location
where the user explicitly disabled deprecation warnings for functions
without prototypes (this allows the provider of the API a way to
disable the diagnostic at call sites because the lack of prototype is
intentional).

2 years ago[mlir][vector] Reorder elementwise(transpose)
Lei Zhang [Fri, 15 Apr 2022 12:57:24 +0000 (08:57 -0400)]
[mlir][vector] Reorder elementwise(transpose)

Similar to the existing pattern for reodering cast(transpose),
this makes transpose following transpose and increases the chance
of embedding the transposition inside contraction op. Actually
cast ops are just special instances of elementwise ops.

Reviewed By: ThomasRaoux

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

2 years ago[AArch64] Async unwind - Fix MTE codegen emitting frame adjustments in a loop
Momchil Velikov [Fri, 15 Apr 2022 11:19:02 +0000 (12:19 +0100)]
[AArch64] Async unwind - Fix MTE codegen emitting frame adjustments in a loop

When untagging the stack, the compiler may emit a sequence like:
```
        .LBB0_1:
          st2g sp, [sp], #32
          sub x8, x8, #32
          cbnz x8, .LBB0_1
          stg sp, [sp], #16
```
These stack adjustments cannot be described by CFI instructions.

This patch disables merging of SP update with untagging, i.e. makes the
compiler use an additional scratch register (there should be plenty
available at this point as we are in the epilogue) and generate:
```
            mov     x9, sp
            mov     x8, #256
            stg     x9, [x9], #16
    .LBB0_1:
            sub     x8, x8, #32
            st2g    x9, [x9], #32
            cbnz    x8, .LBB0_1
            add     sp, sp, #272
```
Merging is disabled only when we need to generate asynchronous unwind
tables.

Reviewed By: eugenis

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

2 years agoRequire asserts in newly added test
Roman Lebedev [Fri, 15 Apr 2022 12:56:37 +0000 (15:56 +0300)]
Require asserts in newly added test

2 years ago[UpdateTestChecks] Prevent rapid onset insanity when forced to write LoopVectorize...
Roman Lebedev [Fri, 15 Apr 2022 12:37:29 +0000 (15:37 +0300)]
[UpdateTestChecks] Prevent rapid onset insanity when forced to write LoopVectorize-driven costmodel tests

Subj, or on other words, we have a lot of tests that are driven by
the LoopVectorizer's debug output, but we don't have
any meaningful way to autogenerate checklines in them,
which means that an insurmountable amount of manual work
is required when modifying the appropriate cost models.

That is not sustainable, so this presents a solution.

Reviewed By: RKSimon

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

2 years ago[gn build] Port 1d83750f631d
LLVM GN Syncbot [Fri, 15 Apr 2022 11:44:38 +0000 (11:44 +0000)]
[gn build] Port 1d83750f631d

2 years ago[libc++] Implement ranges::copy{, _n, _if, _backward}
Nikolas Klauser [Fri, 15 Apr 2022 11:43:40 +0000 (13:43 +0200)]
[libc++] Implement ranges::copy{, _n, _if, _backward}

Reviewed By: Mordante, var-const, #libc

Spies: sstefan1, libcxx-commits, mgorny

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

2 years ago[AArch64][SelectionDAG] Refactor to support more scalable vector extending stores
zhongyunde [Fri, 15 Apr 2022 01:44:11 +0000 (09:44 +0800)]
[AArch64][SelectionDAG] Refactor to support more scalable vector extending stores

Similar to D122281, we should firstly exclude all scalable vector extending
stores and then selectively enable those which we directly support.

Also merge integer and float scalable vector into scalable_vector_valuetypes.

Reviewed By: paulwalker-arm

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

2 years ago[gn build] (manually) port 6d45558c1a05d (MipsGenPostLegalizeGICombiner)
Nico Weber [Fri, 15 Apr 2022 11:05:15 +0000 (07:05 -0400)]
[gn build] (manually) port 6d45558c1a05d (MipsGenPostLegalizeGICombiner)

2 years ago[ExpandMemCmp] Properly expand `bcmp` to an equality pattern.
Clement Courbet [Fri, 15 Apr 2022 09:11:26 +0000 (11:11 +0200)]
[ExpandMemCmp] Properly expand `bcmp` to an equality pattern.

Before that change, constant-size `bcmp` would miss an opportunity to generate
a more efficient equality pattern and would generate a -1/0-1 pattern
instead.

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

2 years ago[NFC] Add test in preparation for D123849.
Clement Courbet [Fri, 15 Apr 2022 09:08:52 +0000 (11:08 +0200)]
[NFC] Add test in preparation for D123849.

2 years ago[WebAssembly] Remove TODO comment for IAS, NFC
Brad Smith [Fri, 15 Apr 2022 08:24:49 +0000 (04:24 -0400)]
[WebAssembly] Remove TODO comment for IAS, NFC

IAS has been enabled on WebAssembly since commit 0a55d3f557a74cfb459b24e442072302d5444baf.

2 years ago[UpdateTestChecks] Add NVPTX support in update_llc_test_checks.py
Daniil Kovalev [Fri, 15 Apr 2022 07:57:38 +0000 (10:57 +0300)]
[UpdateTestChecks] Add NVPTX support in update_llc_test_checks.py

This patch makes possible generating NVPTX assembly check lines with
update_llc_test_checks.py utility.

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

2 years agoApply clang-tidy fixes for readability-identifier-naming in TestTypes.cpp (NFC)
Mehdi Amini [Mon, 4 Apr 2022 00:18:47 +0000 (00:18 +0000)]
Apply clang-tidy fixes for readability-identifier-naming in TestTypes.cpp (NFC)

2 years agoApply clang-tidy fixes for modernize-use-default-member-init in ControlFlowSinkUtils...
Mehdi Amini [Mon, 4 Apr 2022 00:03:35 +0000 (00:03 +0000)]
Apply clang-tidy fixes for modernize-use-default-member-init in ControlFlowSinkUtils.cpp (NFC)

2 years ago[Driver] Move Lanai IAS enabling to Generic_GCC::IsIntegratedAssemblerDefault, NFC
Brad Smith [Fri, 15 Apr 2022 07:52:58 +0000 (03:52 -0400)]
[Driver] Move Lanai IAS enabling to Generic_GCC::IsIntegratedAssemblerDefault, NFC

Reviewed By: MaskRay, jpienaar

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

2 years ago[lit] Forward more sanitizer env in TestingConfig
Vitaly Buka [Fri, 15 Apr 2022 07:31:22 +0000 (00:31 -0700)]
[lit] Forward more sanitizer env in TestingConfig

2 years ago[NFC] Reformat a part of TestingConfig.py
Vitaly Buka [Fri, 15 Apr 2022 07:22:23 +0000 (00:22 -0700)]
[NFC] Reformat a part of TestingConfig.py

2 years ago[RISCV][NFC] Refactor VL patterns for vnsrl and vnsra
Lian Wang [Fri, 8 Apr 2022 02:51:12 +0000 (02:51 +0000)]
[RISCV][NFC] Refactor VL patterns for vnsrl and vnsra

Reviewed By: frasercrmck

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

2 years ago[ELF][ARM] Fix unneeded thunk for branches to hidden undefined weak
Fangrui Song [Fri, 15 Apr 2022 06:58:13 +0000 (23:58 -0700)]
[ELF][ARM] Fix unneeded thunk for branches to hidden undefined weak

Similar to D123750 for AArch64.

2 years agoAMDGPU: Add more mad_64_32 test cases
Nicolai Hähnle [Fri, 15 Apr 2022 04:50:57 +0000 (23:50 -0500)]
AMDGPU: Add more mad_64_32 test cases

Test the behavior when a MUL is used multiple times, as well as when it
is uniform.

Run the tests for gfx9 as well, which added S_MUL_HI_[IU]32.

2 years ago[mlir] Fix verification order of nested ops.
Chia-hung Duan [Fri, 15 Apr 2022 04:33:40 +0000 (04:33 +0000)]
[mlir] Fix verification order of nested ops.

In order to increase parallism, certain ops with regions and have the
IsIsolatedFromAbove trait will have their verification delayed. That
means the region verifier may access the invalid ops and may lead to a
crash.

Reviewed By: rriddle

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

2 years agoAMDGPU: Add mixed sign/zero-extend multiply-add test
Nicolai Hähnle [Fri, 15 Apr 2022 04:02:02 +0000 (23:02 -0500)]
AMDGPU: Add mixed sign/zero-extend multiply-add test

There's a missed opportunity here that a later patch will exploit.

2 years ago[flang][runtime] Don't skip input spaces when they are significant
Peter Klausler [Wed, 6 Apr 2022 21:42:29 +0000 (14:42 -0700)]
[flang][runtime] Don't skip input spaces when they are significant

When formatted input (not list-directed or NAMELIST) is in "BZ" mode,
either because a BZ control edit descriptor appeared in a FORMAT or
BLANK="ZERO" appeared in OPEN or READ, input editing must not skip
over blanks before or within the input field.

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

2 years ago[mlir] Update bazel file after adding nvgpu to nvvm conversion
Thomas Raoux [Fri, 15 Apr 2022 04:07:46 +0000 (04:07 +0000)]
[mlir] Update bazel file after adding nvgpu to nvvm conversion

2 years ago[LoongArch] Fix shared build. NFC.
Michael Liao [Fri, 15 Apr 2022 04:16:26 +0000 (00:16 -0400)]
[LoongArch] Fix shared build. NFC.

2 years ago[PGO][test] Fix memop_size_opt.ll
Fangrui Song [Fri, 15 Apr 2022 04:16:04 +0000 (21:16 -0700)]
[PGO][test] Fix memop_size_opt.ll

2 years ago[PGO][test] Remove duplicate --pgo-instr-memop tests
Fangrui Song [Fri, 15 Apr 2022 04:13:43 +0000 (21:13 -0700)]
[PGO][test] Remove duplicate --pgo-instr-memop tests

2 years ago[LoongArch] Add support for selecting constant materializations.
wanglei [Fri, 15 Apr 2022 03:43:36 +0000 (11:43 +0800)]
[LoongArch] Add support for selecting constant materializations.

Integer materializing can generate LU12I_W, ORI, LU32I_D, LU52I_D and
ADDI_W instructions.

According to the sign-extended behavior of these instructions
(except ORI), the generated instruction sequence can be improved.

For example, load -1 into general register:
The ADDI_W instruction performs the operation that the [31:0] bit data
in the general register `rj` plus the 12-bit immediate `simm12` sign
extension 32-bit data; the resultant [31:0] bit is sign extension, then
written into the general register `rd`.

Normal sequence:

```
lu12i.w $a0, -1
ori $a0, $a0, 2048
```

Improved with sign-extended instruction:

```
addi.w $a0, $zero,  -1
```

Reviewed By: SixWeining, MaskRay

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

2 years ago[mlir][vector] Add operations used for Vector distribution
Thomas Raoux [Wed, 13 Apr 2022 18:38:11 +0000 (18:38 +0000)]
[mlir][vector] Add operations used for Vector distribution

Add vector op warp_execute_on_lane_0 that will be used to do incremental
vector distribution in order to target warp level vector programming for
architectures with GPU-like SIMT programming model.
The idea behing the op is discussed further on discourse:
https://discourse.llvm.org/t/vector-vector-distribution-large-vector-to-small-vector/1983/23

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

2 years ago[PGO][test] Change opt -foo tests to -passes= and remove duplicates
Fangrui Song [Fri, 15 Apr 2022 03:35:35 +0000 (20:35 -0700)]
[PGO][test] Change opt -foo tests to -passes= and remove duplicates

2 years ago[mlir] Add assert to fail with more info (NFC)
Jacques Pienaar [Fri, 15 Apr 2022 02:54:12 +0000 (19:54 -0700)]
[mlir] Add assert to fail with more info (NFC)

This would have assert before during tensor type construction with
opaque error, assert and fail earlier now.

2 years ago[RISCV][VP] Add RVV codegen for vp.trunc.
jacquesguan [Tue, 12 Apr 2022 09:34:40 +0000 (09:34 +0000)]
[RISCV][VP] Add RVV codegen for vp.trunc.

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

2 years agoAdd missing word in llc docs
Michael Williamson [Fri, 15 Apr 2022 02:28:23 +0000 (22:28 -0400)]
Add missing word in llc docs

2 years ago[BOLT][NFC] Use LLVM_REVISION instead of BOLT_VERSION_STRING
Amir Ayupov [Fri, 15 Apr 2022 02:09:44 +0000 (19:09 -0700)]
[BOLT][NFC] Use LLVM_REVISION instead of BOLT_VERSION_STRING

Remove duplicate version string identification

Reviewed By: rafauler

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

2 years ago[mlir][LLVMIR] Add more vector predication intrinsic ops.
jacquesguan [Fri, 8 Apr 2022 03:38:40 +0000 (03:38 +0000)]
[mlir][LLVMIR] Add more vector predication intrinsic ops.

This revision adds vector predication select, merge and load/store intrinsic ops.

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

2 years ago[gcov][test] Change some legacy PM tests to new PM and remove others
Fangrui Song [Fri, 15 Apr 2022 02:12:14 +0000 (19:12 -0700)]
[gcov][test] Change some legacy PM tests to new PM and remove others

2 years agoclang/AMDGPU: Define macro for -munsafe-fp-atomics
Matt Arsenault [Thu, 14 Apr 2022 22:49:50 +0000 (18:49 -0400)]
clang/AMDGPU: Define macro for -munsafe-fp-atomics

The HIP headers want to use this to swap the implementation of the
function, rather than relying on backend expansion of the generic
atomic instruction.

Fixes: SWDEV-332998

2 years agoMips/GlobalISel: Add stub post-legalizer combiner
Matt Arsenault [Sun, 10 Apr 2022 16:08:10 +0000 (12:08 -0400)]
Mips/GlobalISel: Add stub post-legalizer combiner

This enables no combines, just adds the boilerplate for the new pass.

2 years ago[utils] Use git to checkout code instead of svn in building docker image
Xiaodong Liu [Fri, 15 Apr 2022 01:34:16 +0000 (01:34 +0000)]
[utils] Use git to checkout code instead of svn in building docker image

Reviewed By: sammccall

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

2 years agoFix MLIR website generation
Mehdi Amini [Fri, 15 Apr 2022 01:28:10 +0000 (01:28 +0000)]
Fix MLIR website generation

2 years agollvm-reduce: Handle cloning MachineFrameInfo and stack objects
Matt Arsenault [Wed, 13 Apr 2022 23:01:20 +0000 (19:01 -0400)]
llvm-reduce: Handle cloning MachineFrameInfo and stack objects

This didn't work at all before, and would assert on any frame
index. Also copy the other fields, which I believe should cover
everything. There are a few that are untested since MIR serialization
is apparently still missing them (isStatepointSpillSlot,
ObjectSSPLayout, and ObjectSExt/ObjectZExt).

2 years ago[flang] Accept TYPE(intrinsic type) in declarations only for non-extension type
Peter Klausler [Wed, 6 Apr 2022 21:00:40 +0000 (14:00 -0700)]
[flang] Accept TYPE(intrinsic type) in declarations only for non-extension type

To avoid clashing with names of user derived types, the redundant
syntax TYPE(intrinsic type spec) must be interpreted as a monomorphic
derived type when "intrinsic type spec" is a single word.  This
affects TYPE(BYTE) and TYPE(DOUBLECOMPLEX), but not TYPE(DOUBLE COMPLEX)
in free form source.

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

2 years ago[libomptarget] [amdgpu] Hostcall offset check should consider implicit args
Dhruva Chakrabarti [Thu, 14 Apr 2022 23:38:49 +0000 (23:38 +0000)]
[libomptarget] [amdgpu] Hostcall offset check should consider implicit args

Fixed hostcall offset check to compare against kernarg segment size
and implicit arguments. Improved the corresponding debug print.

Reviewed By: JonChesterfield

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

2 years agollvm-reduce: Inform MRI of used phys reg masks
Matt Arsenault [Wed, 13 Apr 2022 22:40:52 +0000 (18:40 -0400)]
llvm-reduce: Inform MRI of used phys reg masks

I'm not sure how to directly observe this invisible cache for a test.

2 years agollvm-reduce: Copy register allocation hints to clone
Matt Arsenault [Wed, 13 Apr 2022 21:39:04 +0000 (17:39 -0400)]
llvm-reduce: Copy register allocation hints to clone

2 years agoAMDGPU: Select i8/i16 global and flat atomic load/store
Matt Arsenault [Tue, 12 Apr 2022 22:10:02 +0000 (18:10 -0400)]
AMDGPU: Select i8/i16 global and flat atomic load/store

As far as I know these should be atomic anyway, as long as the address
is aligned. Unaligned atomics hit an ugly error in AtomicExpand.

2 years ago[flang] Defer NAMELIST group item name resolution
Peter Klausler [Wed, 6 Apr 2022 19:51:57 +0000 (12:51 -0700)]
[flang] Defer NAMELIST group item name resolution

Items in NAMELIST groups might be host-associated implicitly-typed
variables, but name resolution can't know that when the NAMELIST
appears in a specification part and the host's execution part has
not yet been analyzed.  So defer NAMELIST group item name resolution
to the end of the execution part.  This is safe because nothing
else in name resolution depends on whether a variable is in a
NAMELIST group or not.

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

2 years agoAMDGPU: Fix assert if v_mov_b32_dpp is last instruction in the block
Matt Arsenault [Fri, 8 Apr 2022 14:16:56 +0000 (10:16 -0400)]
AMDGPU: Fix assert if v_mov_b32_dpp is last instruction in the block

This can happen if the use instruction is a phi.

Fixes issue 49961

2 years agollvm-reduce: Fix asserting on undef virtual registers
Matt Arsenault [Wed, 13 Apr 2022 21:07:44 +0000 (17:07 -0400)]
llvm-reduce: Fix asserting on undef virtual registers

This was only populating the virtual register map for def operands
that appeared in the function, but that may not exist if there are
only undef uses.

2 years agollvm-reduce: Fix handling of generic virtual registers
Matt Arsenault [Wed, 13 Apr 2022 17:18:41 +0000 (13:18 -0400)]
llvm-reduce: Fix handling of generic virtual registers

Try to preserve register banks, types and names. Fixes the lowest
hanging fruit in issue 54894.

2 years agoMachineCSE: Report this requires SSA
Matt Arsenault [Wed, 13 Apr 2022 14:45:27 +0000 (10:45 -0400)]
MachineCSE: Report this requires SSA

2 years agollvm-reduce: Fix some copy-pasted comment errors
Matt Arsenault [Wed, 13 Apr 2022 01:51:30 +0000 (21:51 -0400)]
llvm-reduce: Fix some copy-pasted comment errors

2 years agoMachineFunction: Remove unused field
Matt Arsenault [Fri, 15 Apr 2022 00:16:15 +0000 (20:16 -0400)]
MachineFunction: Remove unused field

2 years agoRemove folder introduced by incorrect patch level
Jonas Devlieghere [Thu, 14 Apr 2022 23:59:56 +0000 (16:59 -0700)]
Remove folder introduced by incorrect patch level

2 years ago[flang] Allow modification of construct entities
Peter Klausler [Tue, 5 Apr 2022 20:42:12 +0000 (13:42 -0700)]
[flang] Allow modification of construct entities

Construct entities from ASSOCIATE, SELECT TYPE, and SELECT RANK
are modifiable if the are associated with modifiable variables
without vector subscripts.  Update WhyNotModifiable() to accept
construct entities that are appropriate.

A need for more general error reporting from one overload of
WhyNotModifiable() caused its result type to change to
std::optional<parser::Message> instead of ::MessageFixedText,
and this change had some consequences that rippled through
call sites.

Some test results that didn't allow for modifiable construct
entities needed to be updated.

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

2 years ago[lldb] Show the DBGError if dsymForUUID can't find a dSYM
Jonas Devlieghere [Thu, 14 Apr 2022 23:52:38 +0000 (16:52 -0700)]
[lldb] Show the DBGError if dsymForUUID can't find a dSYM

Show the user the DBGError (if available) when dsymForUUID fails.

rdar://90949180

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

2 years ago[mlir][nvgpu] Move mma.sync and ldmatrix in nvgpu dialect
Thomas Raoux [Thu, 14 Apr 2022 22:10:51 +0000 (22:10 +0000)]
[mlir][nvgpu] Move mma.sync and ldmatrix in nvgpu dialect

Move gpu operation mma.sync and ldmatrix in nvgpu as they are specific
to nvidia target.

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

2 years ago[randstruct] Add test for "-frandomize-layout-seed-file" flag
Bill Wendling [Thu, 14 Apr 2022 23:35:41 +0000 (16:35 -0700)]
[randstruct] Add test for "-frandomize-layout-seed-file" flag

This test makes sure that the "-frandomize-layout-seed" and
"-frandomize-layout-seed-file" flags generate the same layout for the
record.

Reviewed By: aaron.ballman, MaskRay

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

2 years agoRevert "[lldb] Pin the shared cache when iterating over its images"
Jonas Devlieghere [Thu, 14 Apr 2022 22:05:07 +0000 (15:05 -0700)]
Revert "[lldb] Pin the shared cache when iterating over its images"

This reverts commit af969141fa285157044e34fb6b27963c3278241b because it
didn't have the intended performance benefit to offset the increase in
our (virtual) memory usage.

2 years ago[flang] Fix TYPE/CLASS IS (T(...)) in SELECT TYPE
Peter Klausler [Mon, 4 Apr 2022 23:43:44 +0000 (16:43 -0700)]
[flang] Fix TYPE/CLASS IS (T(...)) in SELECT TYPE

TYPE IS and CLASS IS guards in SELECT TYPE constructs are
allowed to specify the same type as the type of the selector
but f18's implementation of that predicate required strict
equality of the derived type representations.  We need to
allow for assumed values of LEN type parameters to match
explicit and deferred type parameter values in the selector
and require equality for KIND type parameters.  Implement
DerivedTypeSpec::Match() to perform this more relaxed type
comparison, and use it in check-select-type.cpp.

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

2 years agoRevert "[randstruct] Add test for "-frandomize-layout-seed-file" flag"
Bill Wendling [Thu, 14 Apr 2022 23:07:00 +0000 (16:07 -0700)]
Revert "[randstruct] Add test for "-frandomize-layout-seed-file" flag"

There's a test failure.

This reverts commit 31ea4798ad0990838ccd27f80ca112f177ce91d9.

2 years agoApply clang-tidy fixes for modernize-use-default-member-init in PDLLServer.cpp (NFC)
Mehdi Amini [Sun, 3 Apr 2022 23:59:34 +0000 (23:59 +0000)]
Apply clang-tidy fixes for modernize-use-default-member-init in PDLLServer.cpp (NFC)

2 years agoApply clang-tidy fixes for modernize-use-default-member-init in SparseTensorUtils...
Mehdi Amini [Sun, 3 Apr 2022 23:40:43 +0000 (23:40 +0000)]
Apply clang-tidy fixes for modernize-use-default-member-init in SparseTensorUtils.cpp (NFC)

2 years ago[flang] Local generics must not shadow host-associated generics
Peter Klausler [Wed, 13 Apr 2022 17:27:36 +0000 (10:27 -0700)]
[flang] Local generics must not shadow host-associated generics

It is possible for generic interfaces of equivalent (but not necessarily
identical -- operator(.eq.) is equivalent to operator(==)) names to
be declared in a host scope and a nested scope, and the nested declaration
should function as an extension of the host's.

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

2 years ago[flang] Inner INTRINSIC must not shadow host generic
Peter Klausler [Thu, 14 Apr 2022 21:55:47 +0000 (14:55 -0700)]
[flang] Inner INTRINSIC must not shadow host generic

A generic interface (however spelled) can have the same name as
an intrinsic procedure in the same scope.  When an explicit INTRINSIC
attribute statement appears in a nested scope, semantics was
unconditionally declaring a new symbol that hid the generic entirely.
Catch this case and create instead a host association symbol for
the generic that can then be decorated with the INTRINSIC attribute.

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

2 years ago[randstruct] Add test for "-frandomize-layout-seed-file" flag
Bill Wendling [Thu, 14 Apr 2022 22:40:48 +0000 (15:40 -0700)]
[randstruct] Add test for "-frandomize-layout-seed-file" flag

This test makes sure that the "-frandomize-layout-seed" and
"-frandomize-layout-seed-file" flags generate the same layout for the
record.

Reviewed By: aaron.ballman, MaskRay

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

2 years ago[flang][runtime] Preserve effect of positioning in record in non-advancing output
Peter Klausler [Mon, 4 Apr 2022 21:30:38 +0000 (14:30 -0700)]
[flang][runtime] Preserve effect of positioning in record in non-advancing output

When formatted non-advancing output ends in a control edit descriptor
like nX or Tn or TRn that effectively extends the record, fill any
gap with explicit blanks at the completion of the WRITE.

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

2 years ago[flang] Make F0.1 output editing of zero edge case consistent
Peter Klausler [Mon, 4 Apr 2022 19:09:05 +0000 (12:09 -0700)]
[flang] Make F0.1 output editing of zero edge case consistent

The statement
  PRINT '(2F0.1)', 0.0, 0.5
should emit consistent ".0 .5" output, not "0.0 .5".

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

2 years ago[Driver] Remove unneeded -f[no-]pascal-strings translation. NFC
Fangrui Song [Thu, 14 Apr 2022 22:20:58 +0000 (15:20 -0700)]
[Driver] Remove unneeded -f[no-]pascal-strings translation. NFC

They used to translate to -m[no-]pascal-strings.
This is unneeded after 28c96319c8ab397c2e7d1a47b852bf2afae4f04b or some point in
2009 when -m[no-]pascal-strings became aliases for -f[no-]pascal-strings.

2 years ago[mlir][sparse][taco] Use the SparseCompiler from python/tools.
Bixia Zheng [Thu, 14 Apr 2022 16:41:27 +0000 (09:41 -0700)]
[mlir][sparse][taco] Use the SparseCompiler from python/tools.

Copy the implementation of SparseCompiler from python/tools to taco/tools until we have a common place to install it. Modify TACO to use this SparseCompiler for compilation and jitting.

Reviewed By: aartbik

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

2 years ago[flang] Raise FP exceptions from runtime conversion to binary
Peter Klausler [Mon, 4 Apr 2022 18:39:51 +0000 (11:39 -0700)]
[flang] Raise FP exceptions from runtime conversion to binary

Formatted READs of REAL should convert the exception flags from
the decimal-to-binary conversion library into real runtime FP
exceptions so that they at least show up in the termination message
of a STOP statement.

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

2 years ago[NVPTX][tests] Do not run the test CodeGen/Generic/2010-11-04-BigByval.ll
Igor Chebykin [Thu, 14 Apr 2022 21:22:12 +0000 (14:22 -0700)]
[NVPTX][tests] Do not run the test CodeGen/Generic/2010-11-04-BigByval.ll

NVPTX does not support the testcase llvm/test/CodeGen/Generic/2010-11-04-BigByval.ll
There are NVPTX specific testcases for byval args in the llvm/test/CodeGen/NVPTX
The test is marked as UNSUPPORTED for NVPTX due to unacceptable run time when using XFAIL

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

2 years ago[DFSan] Avoid replacing uses of functions in comparisions.
Andrew Browne [Wed, 13 Apr 2022 18:49:49 +0000 (11:49 -0700)]
[DFSan] Avoid replacing uses of functions in comparisions.

This can cause crashes by accidentally optimizing out checks for
extern_weak_func != nullptr, when replaced with a known-not-null wrapper.

This solution isn't perfect (only avoids replacement on specific patterns)
but should address common cases.

Internal reference: b/185245029

Reviewed By: vitalybuka

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

2 years agoComment out assertions about initializer size added in D123649.
Eli Friedman [Thu, 14 Apr 2022 20:50:03 +0000 (13:50 -0700)]
Comment out assertions about initializer size added in D123649.

They're causing failures in LLVM test-suite.  Added some regression
tests that explain the issue.

2 years ago[flang] Correct interaction between generics and intrinsics
Peter Klausler [Mon, 4 Apr 2022 13:44:05 +0000 (06:44 -0700)]
[flang] Correct interaction between generics and intrinsics

Fortran allows a generic interface to have he same name as an
intrinsic procedure.  If the intrinsic is explicitly marked with
the INTRINSIC attribute, restrictions apply (C848) - the generic
must contain only functions or subroutines, depending on the
intrinsic.  Explicit or not, the generic overrides the intrinsic,
but the intrinsic behavior must still be available for calls
whose actual arguments do not match any of the specific procedures.

Semantics was not checking constraint C848, and it didn't allow
an explicit INTRINSIC attribute on a name of a generic interface.

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

2 years ago[X86] Fix test case for SoftPromoteHalf of STRICT_FP_EXTEND/STRICT_FP_ROUND.
Jameson Nash [Wed, 13 Apr 2022 21:49:36 +0000 (17:49 -0400)]
[X86] Fix test case for SoftPromoteHalf of STRICT_FP_EXTEND/STRICT_FP_ROUND.

Tests that should have been with
33b9f3abd78ffe31e2f468f64d36dbdf75b25d6e
when writing the tests that should have been with
0daf9b8e41327b1511b2bbc272184ff4fdb8de79.

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

2 years ago[libc++][NFC] Add missing 'return 0' to test
Louis Dionne [Thu, 14 Apr 2022 20:08:43 +0000 (16:08 -0400)]
[libc++][NFC] Add missing 'return 0' to test

2 years ago[libc][docs] Add doc for libc string functions
Michael Jones [Tue, 12 Apr 2022 23:20:55 +0000 (16:20 -0700)]
[libc][docs] Add doc for libc string functions

This patch adds a document describing the status of the string functions
in LLVM-libc.

Reviewed By: sivachandra, jeffbailey

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

2 years ago[flang] Use full result range for clock_gettime implementation of SYSTEM_CLOCK
V Donaldson [Tue, 12 Apr 2022 17:26:14 +0000 (10:26 -0700)]
[flang] Use full result range for clock_gettime implementation of SYSTEM_CLOCK

Update the primary clock_gettime implementation of SYSTEM_CLOCK to use
the full range of values, dependent on the type kind of the requested
result.  Counts/sec and count max for supported kinds become:

 kind          counts/sec             count max

    1                  10                   127
    2                1000                 32767
    4                1000            2147483647
    8          1000000000   9223372036854775807
   16          1000000000   9223372036854775807

The secondary "fallback" implementation is not changed.

Real valued COUNT_RATE arguments are not changed.

The test program below has calls for kinds 1, 2, 4, 8, 16.  Support for
these types varies by compiler.  The code as given can be restricted to
accommodate these variations, with results shown below.

subroutine c
  integer(1) c1, r1, m1
  integer(2) c2, r2, m2
  integer(4) c4, r4, m4
  integer(8) c8, r8, m8
  integer(16) c16, r16, m16

  print*
  print '(a5,3a22)', 'kind', 'counts/sec', 'count max', 'count'
  print*

  call system_clock(c1, r1, m1)
  print '(i5,3i22)', 1, r1, m1, c1

  call system_clock(c2, r2, m2)
  print '(i5,3i22)', 2, r2, m2, c2

  call system_clock(c4, r4, m4)
  print '(i5,3i22)', 4, r4, m4, c4

  call system_clock(c8, r8, m8)
  print '(i5,3i22)', 8, r8, m8, c8

  call system_clock(c16, r16, m16)
  print '(i5,3i22)', 16, r16, m16, c16
end

subroutine k(j)
  j = 0
  do i=1,1000000000
    j = j + i
  enddo
end

program p
  do i=1,1 ! increase loop count to check for (kind=1) wraparound
    call k(j)
    call c
  enddo
end

=== flang output without change (last column counts vary per run) ===

 kind          counts/sec             count max                 count

    1                 -24                   127                    83
    2                1000                   290                   211
    4                1000                   290                   211
    8          1000000000             290448383             211631452
   16          1000000000             290448383             211633853

=== flang output with change (last column counts vary per run) ===

    1                  10                   127                    21
    2                1000                 32767                  2100
    4                1000            2147483647                  2100
    8          1000000000   9223372036854775807            2100183374
   16          1000000000   9223372036854775807            2100185353

Other compilers; kind support varies (last column counts vary per run).
Test and ouput modified to avoid crashes and normalize results.
Some negative values indicate unsupported kinds; others are bugs.

 kind          counts/sec             count max                 count

    1                   0                     0                  -127
    2                   0                     0                -32767
    4                1000            2147483647              69271692
    8          1000000000   9223372036854775807        69271692353290
   16          1000000000   9223372036854775807        69271692354794

=======

    1                  10                   127                     0
    2                1000                 32767                     0
    4             1000000            2147483647                     0
    8            10000000   9223372036854775807                     9

=======

    1                   0                     0                  -127
    2                1000                 32767                  3263
    4               10000            2147483647            1788192630
    8             1000000   9223372036854775807      1649443459263095

=======

    1                 -24                    -1                    36
    2                1000                    -1                -10716
    4                1000            2147483647             176018980
    8                1000   9223372036854775807         1649443460644

=======

    2                 100                 28799                 23080
    4                 100               8639999               4285480
    8                 100               8639999               4285480
   16                 100               8639999               4285480

=======

    1                 -24                    -1                     4
    2                1000                 23551                -26108
    4                1000              86399999              67541508
    8             1000000   9223372036854775807      1649443541508087

2 years ago[VE][compiler-rt] Correct location of VE support in clear_cache function, NFC
Brad Smith [Thu, 14 Apr 2022 19:45:37 +0000 (15:45 -0400)]
[VE][compiler-rt] Correct location of VE support in clear_cache function, NFC

Looks like when the VE support was added it was added a few lines below where it should have been.

Reviewed By: MaskRay

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

2 years ago[PS5] Add basic PS5 driver behavior
Paul Robinson [Wed, 13 Apr 2022 18:32:14 +0000 (11:32 -0700)]
[PS5] Add basic PS5 driver behavior

This adds a PS5-specific ToolChain subclass, which defines some basic
PS5 driver behavior. Future patches will add more target-specific
driver behavior.

2 years ago[lldb] Remove TestShell.test
Jonas Devlieghere [Thu, 14 Apr 2022 19:08:27 +0000 (12:08 -0700)]
[lldb] Remove TestShell.test

Remove TestShell.test because it's failing on the bot with "this is a
non-interactive debug session, cannot get permission to debug
processes." The only thing that's special about this test is the shell
we're launching with. I need to do a bit of digging to understand why
that's causing this error.

rdar://91766931

2 years ago[flang] Fix shape analysis of RESHAPE result
Peter Klausler [Fri, 1 Apr 2022 23:01:04 +0000 (16:01 -0700)]
[flang] Fix shape analysis of RESHAPE result

Shape analysis of RESHAPE(..., SHAPE=s) should of course return
the SHAPE= actual argument when it is constant; but when it is
not, its length is still known, and thus so is the rank of the
result of RESHAPE(), and shape analysis should at least return
a shape vector of the right length rather than a result that
makes the result appear to be a scalar, which can lead to some
bogus error messages.

Also, while here: rename a private GetShapeHelper::AsShape()
routine so that it can't be confused with the ones in the API
of shape.h.

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

2 years agoAllow flexible array initialization in C++.
Eli Friedman [Thu, 14 Apr 2022 18:56:40 +0000 (11:56 -0700)]
Allow flexible array initialization in C++.

Flexible array initialization is a C/C++ extension implemented in many
compilers to allow initializing the flexible array tail of a struct type
that contains a flexible array. In clang, this is currently restricted
to C. But this construct is used in the Microsoft SDK headers, so I'd
like to extend it to C++.

For now, this doesn't handle dynamic initialization; probably not hard
to implement, but it's extra code, and I don't think it's necessary for
the expected uses.  And we explicitly fail out of constant evaluation.

I've added some additional code to assert that initializers have the
correct size, with or without flexible array init. This might catch
issues unrelated to flexible array init.

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

2 years ago[gn build] Port b9ca972b1ff0
LLVM GN Syncbot [Thu, 14 Apr 2022 18:36:20 +0000 (18:36 +0000)]
[gn build] Port b9ca972b1ff0

2 years ago[BPF] handle opaque-pointer for __builtin_preserve_enum_value
Yonghong Song [Thu, 14 Apr 2022 15:42:52 +0000 (08:42 -0700)]
[BPF] handle opaque-pointer for __builtin_preserve_enum_value

Opaque pointer [1] is enabled as the default with commit [2].
Andrii found that current __builtin_preserve_enum_value() can only handle
non opaque pointer code pattern and will segfault with latest
llvm main branch where opaque-pointer is enabled by default.

This patch added the opaque pointer support.
Besides llvm selftests, also verified with bpf-next bpf selftests.

  [1] https://llvm.org/docs/OpaquePointers.html
  [2] https://reviews.llvm.org/D123122

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

2 years ago[HLSL] Pointers are unsupported in HLSL
Chris Bieneman [Thu, 14 Apr 2022 01:47:28 +0000 (20:47 -0500)]
[HLSL] Pointers are unsupported in HLSL

HLSL does not support pointers or references. This change generates
errors in sema for generating pointer, and reference types as well as
common operators (address-of, dereference, arrow), which are used with
pointers and are unsupported in HLSL.

Reviewed By: aaron.ballman

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

2 years ago[ELF][AArch64] Fix unneeded thunk for branches to hidden undefined weak
Fangrui Song [Thu, 14 Apr 2022 18:32:29 +0000 (11:32 -0700)]
[ELF][AArch64] Fix unneeded thunk for branches to hidden undefined weak

Similar to D119787 for PPC64.

A hidden undefined weak may change its binding to local before some
`isUndefinedWeak` code, so some `isUndefinedWeak` code needs to be changed to
`isUndefined`. The undefined non-weak case has been errored, so just using
`isUndefined` is fine.

The Linux kernel recently has a usage that a branch from 0xffff800008491ee0
references a hidden undefined weak symbol `vfio_group_set_kvm`.
It relies on the behavior that a branch to undefined weak resolving to the next
instruction, otherwise it'd see spurious relocation out of range errors.

Fixes https://github.com/ClangBuiltLinux/linux/issues/1624

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

2 years ago[InstCombine] canonicalize select with signbit test
Sanjay Patel [Thu, 14 Apr 2022 18:02:56 +0000 (14:02 -0400)]
[InstCombine] canonicalize select with signbit test

This is part of solving issue #54750 - in that example
we have both forms of the compare and do not recognize
the equivalence.

2 years agoRevert "[NVPTX] Disable parens for identifiers starting with '$'"
Andrew Savonichev [Thu, 14 Apr 2022 18:25:31 +0000 (21:25 +0300)]
Revert "[NVPTX] Disable parens for identifiers starting with '$'"

This reverts commit 78d70a1c976934587e6d4c5698c348b8f09d9d96.

Failed on Mips32:
https://lab.llvm.org/buildbot#builders/109/builds/36628

   # CHECK: # fixup A - offset: 0, value: ($tmp0), kind: fixup_Mips_26
   <stdin>:580:2: note: possible intended match here
   # fixup A - offset: 0, value: $tmp0, kind: fixup_Mips_26

2 years ago[flang] Always encode multi-byte output in UTF-8
Peter Klausler [Fri, 1 Apr 2022 21:18:02 +0000 (14:18 -0700)]
[flang] Always encode multi-byte output in UTF-8

A recent change to implement UTF-8 encoding should have
made the encoding conditional only for CHARACTER(KIND=1)
to enable UTF-8 output vs. Latin-1 or whatever.  UTF-8 output
of wider CHARACTER kinds should not be conditional (until we choose
to support UCS-16, maybe).  So wider CHARACTER kinds are being
emitted with extra zero bytes; this patch fixes them.

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