platform/upstream/llvm.git
16 months ago[FSAFDO] Improve FS discriminator encoding
Rong Xu [Fri, 10 Mar 2023 06:43:08 +0000 (22:43 -0800)]
[FSAFDO] Improve FS discriminator encoding

This change improves FS discriminators in the following ways:
(1) use call-stack debug information in the the to generate
discriminators: the same (src/line) DILs can now have same
discriminator value if they come from different call-stacks.
This effectively increases the usable discriminator values
for each round of FS discriminator pass.
(2) don't generate the FS discriminator for meta instructions
(i.e. instructions not emitted). This reduces the number
discriminators conflicts (for the case we run out of discriminator
bits for that pass).
(3) use less expensive hashing of xxHash64.

These improvements should bring better performance for FSAFDO
and they should be used by default. But this change creates
incompatible FS discriminators. For the iterative profile users,
they might see a performance drop in the first release with
this change (due to the fact that the profiles have the old
discriminators and the compiler uses the new discriminator).
We have measured that this is not more than 1.5% on several
benchmarks. Note the degradation should be gone in the second
release and one should expect a performance gain over the binary
without this change.

One possible solution to the iterative profile issue would be
separating discriminators for profile-use and the ones emitted to
the binary. This would require a mechanism to allow two sets of
discriminators to be maintained and then phasing out the first
approach. This is too much churn in the compiler and the
performance implications do not seem to be worth the effort.

Instead, we put the changes under an option so iterative profile
users can do a gradual rollout of this change. We will make the
option default value to true in a later patch and eventually
purge this option from the code base.

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

16 months ago[C++20] [Modules] Don't load declaration eagerly for named modules
Chuanqi Xu [Fri, 10 Mar 2023 06:15:08 +0000 (14:15 +0800)]
[C++20] [Modules] Don't load declaration eagerly for named modules

Close https://github.com/llvm/llvm-project/issues/61064.

The root cause of the issue is that we will deserilize some declarations
eagerly when reading the BMI. However, many declarations in the BMI are
not necessary for the importer. So it wastes a lot of time.

16 months ago[libfuzzer] Fix build error due to out-of-line definition of 'Fuzzer' does not match...
Jie Fu [Fri, 10 Mar 2023 06:52:28 +0000 (14:52 +0800)]
[libfuzzer] Fix build error due to out-of-line definition of 'Fuzzer' does not match any declaration in 'fuzzer::Fuzzer' (NFC)

/data/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:138:9: error: out-of-line definition of 'Fuzzer' does not match any declaration in 'fuzzer::Fuzzer'
Fuzzer::Fuzzer(UserCallback CB, InputCorpus &Corpus, MutationDispatcher &MD,
        ^~~~~~
/data/llvm-project/compiler-rt/lib/fuzzer/FuzzerInternal.h:35:10: note: type of 4th parameter of member declaration does not match definition ('fuzzer::FuzzingOptions &' vs 'const fuzzer::FuzzingOptions &')
         FuzzingOptions &Options);
         ^
1 error generated.

16 months ago[Test] Add some corner cases negative tests for D143726
Max Kazantsev [Fri, 10 Mar 2023 06:13:14 +0000 (13:13 +0700)]
[Test] Add some corner cases negative tests for D143726

- No common loop-variant;
- One comparison against loop-variant;

16 months ago[Test] Add negative and positive tests with extra uses for D143726
Max Kazantsev [Fri, 10 Mar 2023 06:04:28 +0000 (13:04 +0700)]
[Test] Add negative and positive tests with extra uses for D143726

16 months ago[Test] Add negative eq/ne tests for D143726
Max Kazantsev [Fri, 10 Mar 2023 05:59:01 +0000 (12:59 +0700)]
[Test] Add negative eq/ne tests for D143726

16 months ago[Test] Add negative and positive mismatched predicates tests for D143726
Max Kazantsev [Fri, 10 Mar 2023 05:55:32 +0000 (12:55 +0700)]
[Test] Add negative and positive mismatched predicates tests for D143726

16 months ago[Test] Add negative and positive logical or/and tests for D143726
Max Kazantsev [Fri, 10 Mar 2023 05:40:01 +0000 (12:40 +0700)]
[Test] Add negative and positive logical or/and tests for D143726

16 months ago[Test] Add swapped tests for D143726
Max Kazantsev [Fri, 10 Mar 2023 05:11:16 +0000 (12:11 +0700)]
[Test] Add swapped tests for D143726

16 months ago[libfuzzer] avoid unneccessary copy
Wu, Yingcong [Fri, 10 Mar 2023 06:10:07 +0000 (22:10 -0800)]
[libfuzzer] avoid unneccessary copy

Avoid some unneccessary copy

Reviewed By: fmayer

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

16 months ago[CodeGen][AArch64] Generate Pseudo instructions for integer MLA/MAD/MLS/MSB
sgokhale [Fri, 10 Mar 2023 05:28:18 +0000 (10:58 +0530)]
[CodeGen][AArch64] Generate Pseudo instructions for integer MLA/MAD/MLS/MSB

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

16 months ago[Test] Regenerate tests using update_llc_test_checks.py
Max Kazantsev [Fri, 10 Mar 2023 04:33:30 +0000 (11:33 +0700)]
[Test] Regenerate tests using update_llc_test_checks.py

16 months ago[JITLink] Use unique_function rather than std::function for JITLink passes.
Lang Hames [Fri, 10 Mar 2023 04:01:44 +0000 (20:01 -0800)]
[JITLink] Use unique_function rather than std::function for JITLink passes.

Passes aren't expected to be copied, and switching to unique_function allows
them to capture values with move-only types.

16 months ago[mlir] Add support for f8 data types to LLVM dialect types
Eugene Zhulenev [Wed, 1 Feb 2023 21:48:50 +0000 (13:48 -0800)]
[mlir] Add support for f8 data types to LLVM dialect types

This change allows using fp8 pointers when exporting to LLVM, because we anyway export them as opaque pointers, however full support of fp8 types is not yet implemented on the LLVM side.

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

16 months ago[HIP] Fix temporary files
Yaxun (Sam) Liu [Tue, 7 Mar 2023 05:25:01 +0000 (00:25 -0500)]
[HIP] Fix temporary files

Currently HIP toolchain uses Driver::GetTemporaryDirectory to
create a temporary directory for some temporary files during
compilation. The temporary directories are not automatically
deleted after compilation. This slows down compilation
on Windows.

Switch to use GetTemporaryPath which only creates temporay
files which will be deleted automatically.

Keep the original input file name convention for Darwin host
toolchain since it is needed for deterministic binary
(https://reviews.llvm.org/D111269)

Fixes: SWDEV-386058

Reviewed by: Artem Belevich

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

16 months ago[lld][WebAssembly] Use C++17 nested namespace syntax in most places. NFC
Sam Clegg [Mon, 6 Mar 2023 17:55:00 +0000 (09:55 -0800)]
[lld][WebAssembly] Use C++17 nested namespace syntax in most places. NFC

Like D131405, but for wasm-ld.

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

16 months ago[Codegen][NFC] Replace 'RegisterRegAlloc::FunctionPassCtor'
wanglian [Wed, 1 Mar 2023 03:05:45 +0000 (11:05 +0800)]
[Codegen][NFC] Replace 'RegisterRegAlloc::FunctionPassCtor'
with 'RegisterRegAllocBase<T>::FunctionPassCtor'.

Reviewed By: arsenm

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

16 months ago[RISCV] Set how many bytes load from or store to stack slot
Jim Lin [Fri, 10 Mar 2023 01:03:28 +0000 (09:03 +0800)]
[RISCV] Set how many bytes load from or store to stack slot

Refer from: https://reviews.llvm.org/D44782

After https://reviews.llvm.org/D130302, LW+SEXT.B can be folded into LB
as partially reload stack slot. This gains incorrect optimization result
from `StackSlotColoring` without given the number of bytes exactly load
from stack. LB+SW are mis-interpreted as fully reload/restore from stack
slot without the sign-extension. SW would be considered as a redundant store.

The testcase is copied from llvm/test/CodeGen/X86/pr30821.mir.

Reviewed By: craig.topper

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

16 months ago[RISCV] Pre-commit test case for D140460
Jim Lin [Fri, 10 Mar 2023 01:03:03 +0000 (09:03 +0800)]
[RISCV] Pre-commit test case for D140460

Reviewed By: craig.topper

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

16 months ago[ConstraintElimination] Fix UB after D145677
Vitaly Buka [Fri, 10 Mar 2023 02:18:29 +0000 (18:18 -0800)]
[ConstraintElimination] Fix UB after D145677

16 months ago[libc++][ranges] Implement LWG-3865 Sorting a range of pairs
Igor Zhukov [Fri, 10 Mar 2023 02:01:52 +0000 (09:01 +0700)]
[libc++][ranges] Implement LWG-3865 Sorting a range of pairs

Reviewed By: Mordante, philnik, ldionne, #libc

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

16 months ago[RISCV] Model interleave and deinterleave shuffles in cost model
Luke Lau [Thu, 9 Mar 2023 14:35:57 +0000 (14:35 +0000)]
[RISCV] Model interleave and deinterleave shuffles in cost model

Interleave and deinterleave shuffles are lowered by a more efficient
sequence if the element size is smaller than ELEN.

Reviewed By: reames

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

16 months ago[HWASAN][LSAN] Fix buildbot failure.
Kirill Stoimenov [Fri, 10 Mar 2023 01:07:43 +0000 (01:07 +0000)]
[HWASAN][LSAN] Fix buildbot failure.

16 months ago[SVE] Precommit multiuse predicated compare tests.
Paul Walker [Fri, 10 Mar 2023 00:39:39 +0000 (00:39 +0000)]
[SVE] Precommit multiuse predicated compare tests.

16 months ago[HWASAN][LSAN] Disable tests which don't pass in HWASAN+LSAN mode
Kirill Stoimenov [Mon, 6 Mar 2023 23:55:32 +0000 (23:55 +0000)]
[HWASAN][LSAN] Disable tests which don't pass in HWASAN+LSAN mode

Reviewed By: vitalybuka

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

16 months ago[lldb][InstrumentationRuntime] Make 'data' struct anonymous in order to avoid collisi...
Michael Buch [Wed, 8 Mar 2023 11:32:06 +0000 (11:32 +0000)]
[lldb][InstrumentationRuntime] Make 'data' struct anonymous in order to avoid collisions with types in the debuggee

The `UBSAN`/`ASAN` plugins would previously call the internal helper
structure injected into the source expression `struct data { ... };`

This occasionally collided with user-defined types of the same (quite
common) name. In the presence of varibale with the same name LLDB would
simply fail to run the injected `InstrumentationRuntime` expressions
with:
```
warning: cannot evaluate AddressSanitizer expression:
expression failed to parse:
error: <user expression 2>:2:5: must use 'struct' tag to refer to type 'data' in this scope
    data t;
```

In the presence of another type called 'data', LLDB would most likely
crash with something like:
```
0x00000001198de614 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) + 1088
0x00000001198de614 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) + 1088
0x0000000119907930 clang::ASTImporter::ImportDefinition(clang::Decl*) + 596
0x00000001163db928 lldb_private::ClangASTImporter::ASTImporterDelegate::ImportDefinitionTo(clang::Decl*, clang::Decl*) + 100
0x00000001163da070 (anonymous namespace)::CompleteTagDeclsScope::~CompleteTagDeclsScope() + 572
...
```
...because it got the types confused.

This patch makes these structures anonymous so there's no
chance of clashing with other types in the program. This is
already the approach taken in `UBSan/InstrumentationRuntimeABSan.cpp`.

**Testing**

- API tests still pass
- Tested manually that the `memory history` command now works in the presence of a local called `data`

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

16 months ago[InstCombine] Reduce absolute diff from min+max+sub
Jun Zhang [Fri, 10 Mar 2023 00:00:41 +0000 (08:00 +0800)]
[InstCombine] Reduce absolute diff from min+max+sub

This patch implements fold: max(a,b) nsw/nuw - min(a,b) --> abs(a nsw - b)

Alive2: https://alive2.llvm.org/ce/z/4yLp7D
Fixes: https://github.com/llvm/llvm-project/issues/61228

Signed-off-by: Jun Zhang <jun@junz.org>
Differential Revision: https://reviews.llvm.org/D145540

16 months ago[llvm-c] Remove pointee support from LLVMGetElementType
Arthur Eubanks [Thu, 9 Mar 2023 23:42:27 +0000 (15:42 -0800)]
[llvm-c] Remove pointee support from LLVMGetElementType

Reviewed By: nikic

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

16 months ago[RISCV][NFC] Add tests for SLP vectorization of math functions
Ben Shi [Wed, 8 Mar 2023 10:03:49 +0000 (18:03 +0800)]
[RISCV][NFC] Add tests for SLP vectorization of math functions

RISCV has "vfabs.v" and "vfsqrt.v" so math functions abs and sqrt
can be SLP vectorized. But others exp/log/sin/asin/sinh/asinh/...
can not.

Reviewed By: reames

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

16 months agoBreak circular dependency between FIR dialect and utilities
Renaud-K [Thu, 9 Mar 2023 02:39:40 +0000 (18:39 -0800)]
Break circular dependency between FIR dialect and utilities

16 months ago[mlir][vector] remove unnecessary VectorTransformOps include
Emilio Cota [Thu, 9 Mar 2023 22:08:00 +0000 (17:08 -0500)]
[mlir][vector] remove unnecessary VectorTransformOps include

While at it, add a dep that we missed in https://reviews.llvm.org/D145638.

Reviewed By: kuhar, dcaballe

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

16 months agoSlight refinement to a change yesterday in metadata-added binaries
Jason Molenda [Thu, 9 Mar 2023 22:53:14 +0000 (14:53 -0800)]
Slight refinement to a change yesterday in metadata-added binaries

When ObjectFileMachO::LoadCoreFileImages load a binary into the
target with a valid load address, we don't need to re-load its
segments into the Target's SectionLoadList again.  But we should
still call ModulesDidLoad on these modules so breakpoints can be
inserted etc.

16 months ago[Coroutines] Fix premature conversion of return object
Bruno Cardoso Lopes [Tue, 7 Mar 2023 20:51:34 +0000 (12:51 -0800)]
[Coroutines] Fix premature conversion of return object

Fix https://github.com/llvm/llvm-project/issues/56532

Effectively, this reverts behavior introduced in https://reviews.llvm.org/D117087,
which did two things:

1. Change delayed to early conversion of return object.
2. Introduced RVO possibilities because of early conversion.

This patches fixes (1) and removes (2). I already worked on a follow up for (2)
in a separated patch. I believe it's important to split these two because if the RVO
causes any problems we can explore reverting (2) while maintaining (1).

Notes on some testcase changes:
- `pr59221.cpp` changed to `-O1` so we can check that the front-end honors
  the value checked for. Sounds like `-O3` without RVO is more likely
  to work with LLVM optimizations...
- Comment out delete members `coroutine-no-move-ctor.cpp` since behavior
  now requires copies again.

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

16 months ago[scudo] Add a fast get time version.
Christopher Ferris [Thu, 9 Mar 2023 00:56:24 +0000 (16:56 -0800)]
[scudo] Add a fast get time version.

On Android, the _COARSE version of clock_gettime is about twice as fast.
Therefore, add a getMonotonicTimeFast function that is used in the
releaseToOSMaybe functions.

Reviewed By: Chia-hungDuan

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

16 months ago[ORC] Fix name shadowing issue, NFC.
bzcheeseman [Thu, 9 Mar 2023 19:02:21 +0000 (11:02 -0800)]
[ORC] Fix name shadowing issue, NFC.

Testing the COFFPlatform on MSVC, a name shadowing issue surfaced where `LoadDynLibrary` inside the constructor was actually using the moved-from function argument. This patch simply renames the argument to avoid that shadowing.

Reviewed By: rriddle

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

16 months ago[sparse][mlir] test transposition on sorted COO
Aart Bik [Thu, 9 Mar 2023 18:44:46 +0000 (10:44 -0800)]
[sparse][mlir] test transposition on sorted COO

DO NOT SUBMIT YET, test exposes bug

Reviewed By: Peiming

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

16 months ago[mlir][sparse] deduplicate non-unique coordinates unconditionally
Peiming Liu [Wed, 8 Mar 2023 23:24:16 +0000 (23:24 +0000)]
[mlir][sparse] deduplicate non-unique coordinates unconditionally

Reviewed By: aartbik

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

16 months ago[hwasan] Suppress leaks from dlsym with hwasan+lsan just like with
Leonard Chan [Thu, 9 Mar 2023 21:42:04 +0000 (21:42 +0000)]
[hwasan] Suppress leaks from dlsym with hwasan+lsan just like with
asan+lsan

We should follow suite with how asan handles this now that lsan also
works with hwasan.

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

16 months ago[libc++] Fix include order in <optional>
Nikolas Klauser [Thu, 9 Mar 2023 21:35:40 +0000 (22:35 +0100)]
[libc++] Fix include order in <optional>

16 months ago[Flang] Add support to use LTO specific pipelines
Nadeem, Usman [Wed, 1 Feb 2023 23:09:23 +0000 (15:09 -0800)]
[Flang] Add support to use LTO specific pipelines

Thin and full LTO modes use different pre-link pipelines compared to
regular compilation. This patch adds support for calling those pipelines.

This patch closely mimics Clang's implementation with the exception that I
changed the codegen option name from `PrepareForLTO` to `PrepareForFullLTO`
to be more precise.

With this patch:
  - Compilation for full LTO should be as we expect (except possibly
  missing optimizations enabled by module summaries which we do not
  produce yet).
  - thinLTO uses the correct prelink pipeline but will use the postlink
  backend for fullLTO due to missing metadata and summary in the llvm
  module. I have added a warning regarding this: `flang-new: warning: the
  option '-flto=thin' is a work in progress`.

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

Change-Id: I6b94b775b5b8e93340e520c5cd4bf60834b2e209

16 months ago[LTO] Add debug logging for module ID <-> path mapping
Jez Ng [Wed, 8 Mar 2023 04:48:25 +0000 (20:48 -0800)]
[LTO] Add debug logging for module ID <-> path mapping

It's helpful

Reviewed By: MaskRay

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

16 months ago[mlir][sparse] add a check test for foreach operation on constant sparse tensor
Peiming Liu [Thu, 9 Mar 2023 21:22:59 +0000 (21:22 +0000)]
[mlir][sparse] add a check test for foreach operation on constant sparse tensor

Reviewed By: aartbik

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

16 months ago[docs] Mention LLVM_USE_LINKER/LLVM_PARALLEL_{COMPILE,LINK}_JOBS in GettingStarted
Arthur Eubanks [Thu, 9 Mar 2023 19:27:52 +0000 (11:27 -0800)]
[docs] Mention LLVM_USE_LINKER/LLVM_PARALLEL_{COMPILE,LINK}_JOBS in GettingStarted

As requested in D145413.

Reviewed By: aaron.ballman

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

16 months ago[mlir][sparse] fix bugs when convert coo to coo but with different dim ordering
Peiming Liu [Thu, 9 Mar 2023 20:46:04 +0000 (20:46 +0000)]
[mlir][sparse] fix bugs when convert coo to coo but with different dim ordering

Reviewed By: aartbik

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

16 months agoAdd codegen for llvm exp/exp2 elementwise builtins
Joshua Batista [Thu, 9 Mar 2023 19:31:31 +0000 (11:31 -0800)]
Add codegen for llvm exp/exp2 elementwise builtins

Add codegen for llvm exp/exp2 elementwise builtin
The exp/exp2 elementwise builtins are necessary for HLSL codegen.
Tests were added to make sure that the expected errors are encountered when these functions are given inputs of incompatible types.
The new builtins are restricted to floating point types only.

Reviewed By: fhahn

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

16 months ago[mlir][vector] Add missing build dependencies for VectorToGPU
Jakub Kuderski [Thu, 9 Mar 2023 20:13:28 +0000 (15:13 -0500)]
[mlir][vector] Add missing build dependencies for VectorToGPU

Post-commit fix for https://reviews.llvm.org/D145638.

16 months ago[mlir][vector][nvgpu] Move MMA contraction preparation to VectorUtils
Jakub Kuderski [Thu, 9 Mar 2023 19:56:20 +0000 (14:56 -0500)]
[mlir][vector][nvgpu] Move MMA contraction preparation to VectorUtils

This pattern is not specific to nvgpu; I intend to use in SPIR-V codegen. `VectorTransforms` seems like a more generally useful place.

In addition:
-  Fix a bug in the second condition (the dimensions were swapped for RHS).
-  Add tests.
-  Add support for externally provided filter functions, similar to other vector transforms.
-  Prefer to transpose before zero/sign-extending inputs.

Reviewed By: ThomasRaoux

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

16 months ago[memprof] Add scripts to automate testdata regeneration.
Snehasish Kumar [Thu, 9 Mar 2023 03:55:39 +0000 (03:55 +0000)]
[memprof] Add scripts to automate testdata regeneration.

The memprof profiles and binaries need to be updated in case of version
updates. This change adds three scripts for llvm-profdata, clang and
llvm tests where memprof profiles are used as inputs. Also update the
tests, profiles and binaries in this change. Change based on the review
suggestions in D145023.

Reviewed By: tejohnson

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

16 months ago[lldb] Skip TestSymbolFileJSON on Windows
Jonas Devlieghere [Thu, 9 Mar 2023 19:32:17 +0000 (11:32 -0800)]
[lldb] Skip TestSymbolFileJSON on Windows

Disable the test as Windows (or at least the bot) doesn't have 'strip':

  'strip' is not recognized as an internal or external command

16 months agoRevert "Revert "Add map info for dereference pointer.""
Jennifer Yu [Thu, 9 Mar 2023 16:14:56 +0000 (08:14 -0800)]
Revert "Revert "Add map info for dereference pointer.""

This reverts commit 8cf85a0cadb033fed3d96aa5283deb4bfbbaf2c8.

This is add back change of "Add map info for dereference pointer."

In addition turn off test run on amdgpu, since I don't know the way to
reprodue the problem.

16 months ago[mlir] Add setters for Dynamic[Type|Attr]Definition
Fehr Mathieu [Thu, 9 Mar 2023 18:27:50 +0000 (18:27 +0000)]
[mlir] Add setters for Dynamic[Type|Attr]Definition

Add functions to set the verifier, printer, and parser of
dynamic attributes definitions, and dynamic type definitions.

This feature was already implemented for dynamic operations, but
is missing for attributes and types. This is necessary to define
attributes and types verifiers that refer to each others in a cyclic way.

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

16 months ago[libc][docs] update list of completed stdio funcs
Michael Jones [Thu, 9 Mar 2023 00:39:45 +0000 (16:39 -0800)]
[libc][docs] update list of completed stdio funcs

Reviewed By: lntue

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

16 months ago[lldb] Add nullptr check to SymbolVendorWasm
Jonas Devlieghere [Thu, 9 Mar 2023 18:26:21 +0000 (10:26 -0800)]
[lldb] Add nullptr check to SymbolVendorWasm

Add the same nullptr check to SymbolVendorWasm that was added to
SymbolVendorELF.

16 months ago[dsymutil] Fix offset calculation for universal binaries
Jonas Devlieghere [Thu, 9 Mar 2023 18:20:41 +0000 (10:20 -0800)]
[dsymutil] Fix offset calculation for universal binaries

The Mach-O file format uses 32-bit values to encodes offsets which they
cannot exceed UIN32_MAX (4GB). The Mach-O file itself can be larger than
4GB as long as none of the offsets fall within this limit.

For universal binaries, dsymutil determines if the offset is going to
exceed the 4GB limit by computing the size of the header and adding it
to the size of all the slices. This is incorrect because it computes the
end offset of the final slice. For the purpose of the 4GB limit, only
the starting offset matters. The size of the last slice is irrelevant as
long as it itself is a valid Mach-O.

rdar://104435018

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

16 months ago[SPIR-V] Report modifying IR in SPIRVPrepareFunctions
Michal Paszkowski [Thu, 9 Mar 2023 16:22:33 +0000 (17:22 +0100)]
[SPIR-V] Report modifying IR in SPIRVPrepareFunctions

This change fixes "Pass modifies its input and doesn't
report it" error when running SPIRVPrepareFunctions
pass with LLVM_ENABLE_EXPENSIVE_CHECKS enabled.

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

16 months ago[ConstraintElimination] Fix undefined behaviour in shl decomposition
Zain Jaffal [Thu, 9 Mar 2023 18:16:19 +0000 (18:16 +0000)]
[ConstraintElimination] Fix undefined behaviour in shl decomposition

Add checks to prevent decomposing constants bigger than 64.
relates to https://github.com/llvm/llvm-project/issues/61127

Reviewed By: fhahn

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

16 months ago[mlir][sparse] deduplicate non-unique coordinates when coiterating collapsed COO...
Peiming Liu [Tue, 7 Mar 2023 21:52:03 +0000 (21:52 +0000)]
[mlir][sparse] deduplicate non-unique coordinates when coiterating collapsed COO tensors.

Reviewed By: aartbik

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

16 months ago[mlir][tensor] Expose padding requirement of pack ops to a static method
Hanhan Wang [Thu, 9 Mar 2023 18:03:31 +0000 (10:03 -0800)]
[mlir][tensor] Expose padding requirement of pack ops to a static method

It also simplifies the implementation of the method. The map is not needed in the check.

Reviewed By: chelini

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

16 months ago[libc++] Add CI job testing on FreeBSD
Ed Maste [Wed, 14 Dec 2022 21:03:56 +0000 (16:03 -0500)]
[libc++] Add CI job testing on FreeBSD

Reviewed by: ldionne, Mordante

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

16 months ago[flang] Ensure "dtv" args passed by descriptor when polymorphic
Peter Klausler [Fri, 3 Mar 2023 17:52:41 +0000 (09:52 -0800)]
[flang] Ensure "dtv" args passed by descriptor when polymorphic

The predicate used to determine whether the initial "dtv" argument
to a user-defined derived type I/O procedure specified by a generic
interface that is not in the derived type definition is wrong.
The "dtv" argument must be passed via a descriptor whenever it is
polymorphic.

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

16 months ago[flang] Ensure that CLASS(*) component descriptors have addenda
Peter Klausler [Fri, 3 Mar 2023 16:17:31 +0000 (08:17 -0800)]
[flang] Ensure that CLASS(*) component descriptors have addenda

In the calculation of derived type component byte sizes, ensure
that CLASS(*) unlimited polymorphic components have space allocated
for their addenda.

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

16 months ago[RISCV][NFC] Add tests for interleaved accesses in loop vectorizer
Luke Lau [Thu, 9 Mar 2023 16:14:25 +0000 (16:14 +0000)]
[RISCV][NFC] Add tests for interleaved accesses in loop vectorizer

Precommit test for D145155

Reviewed By: reames

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

16 months ago[PS4/PS5] Remove C_INCLUDE_DIRS handling
Paul Robinson [Thu, 9 Mar 2023 17:26:17 +0000 (09:26 -0800)]
[PS4/PS5] Remove C_INCLUDE_DIRS handling

We don't configure this way and don't intend to.

16 months ago[DebugInfo][DWARF] Add doesFormBelongToClass function.
Alexey Lapshin [Tue, 7 Mar 2023 12:46:21 +0000 (13:46 +0100)]
[DebugInfo][DWARF] Add doesFormBelongToClass function.

The result of DWARFFormValue::isFormClass depends on DWARF version in some cases.
The current implementation takes DWARF version from the stored DWARFUnit.
If there is no stored DWARFUnit then the current behavior is to assume
DwarfVersion <= 3. This patch adds new function which has a DWARF version as a
parameter so it is possible to check form class for various DWARF versions.

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

16 months ago[ELF] Fix build after getSectionAndRelocations Refactoring
Aiden Grossman [Thu, 9 Mar 2023 17:20:18 +0000 (17:20 +0000)]
[ELF] Fix build after getSectionAndRelocations Refactoring

Didn't fail locally for some reason with my gcc toolchain.

16 months agoRevert two patches to fix GH58452 regression
Erich Keane [Wed, 8 Mar 2023 20:12:33 +0000 (12:12 -0800)]
Revert two patches to fix GH58452 regression

GH58452 is a regression in the 16.0 release branch caused by both:
b8a1b698afb2fc84819c7596090aabf4d826b436 and
3a0309c53674be56b5cfce038d78a0c2c6e2a98c

This patch reverts both of those to make the 'valid' code stop
diagnosing
at the expense of crashes on invalid + unclear diagnostics.

This patch also adds the tests from GH58452 to prevent any
re-application from breaking this again.

Revert "[clang] Improve diagnostics for expansion length mismatch"
This reverts commit 3a0309c53674be56b5cfce038d78a0c2c6e2a98c.
Revert "[clang] fix missing initialization of original number of expansions"
This reverts commit b8a1b698afb2fc84819c7596090aabf4d826b436.

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

16 months ago[ELF] Move getSectionAndRelocations to ELF.cpp from ELFDumper.cpp
Aiden Grossman [Sat, 25 Feb 2023 10:18:34 +0000 (10:18 +0000)]
[ELF] Move getSectionAndRelocations to ELF.cpp from ELFDumper.cpp

This refactoring will allow for this utility function to be used in
other places in the codebase outside of the llvm-readobj tool.

Reviewed By: jhenderson, rahmanl

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

16 months ago[libc] Extend the linux thread implementation for riscv64.
Siva Chandra [Thu, 9 Mar 2023 16:53:31 +0000 (16:53 +0000)]
[libc] Extend the linux thread implementation for riscv64.

Also, added riscv64 startup code for static linking which is used
by the integration tests. Functions from the C standard threads
library have been enabled.

Reviewed By: mikhail.ramalho

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

16 months ago[Polly] Fix plugin build.
Michael Kruse [Thu, 9 Mar 2023 16:48:02 +0000 (10:48 -0600)]
[Polly] Fix plugin build.

The target_link_libraries call was accidentially removed in
D142580 (Remove Polly-ACC).

16 months ago[VPlan] Replace invariance fields from VPWidenGEPRecipe.
Florian Hahn [Thu, 9 Mar 2023 16:52:22 +0000 (17:52 +0100)]
[VPlan] Replace invariance fields from VPWidenGEPRecipe.

There is no need to store information about invariance in the recipe.
Replace the fields with checks of the operands using
isDefinedOutsideVectorRegions.

Reviewed By: Ayal

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

16 months ago[ASAN] Address a style issue noticed during review of D145175 [nfc]
Philip Reames [Thu, 9 Mar 2023 16:36:45 +0000 (08:36 -0800)]
[ASAN] Address a style issue noticed during review of D145175 [nfc]

16 months ago[flang] Check if dummy is allocated before deallocation for optional intent(out)
Valentin Clement [Thu, 9 Mar 2023 16:48:11 +0000 (17:48 +0100)]
[flang] Check if dummy is allocated before deallocation for optional intent(out)

Similary to non-optional argument, check if the argument is allocated before
doing the deallocation for intent(out) optional.

Depends on D145679

Reviewed By: PeteSteinfeld

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

16 months ago[RISCV][NFC] Add tests for interleave shuffle costs
Luke Lau [Thu, 9 Mar 2023 14:33:35 +0000 (14:33 +0000)]
[RISCV][NFC] Add tests for interleave shuffle costs

Pre-commit test for D145678

Reviewed By: reames

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

16 months ago[scudo] Slightly improve the handling of last block in a region
Chia-hung Duan [Wed, 8 Mar 2023 23:08:50 +0000 (23:08 +0000)]
[scudo] Slightly improve the handling of last block in a region

Instead of going through all those trailing blocks, just count the
number and increase the counter at once.

Reviewed By: cferris

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

16 months ago[ASAN] Support memory checks on scalable vector typed loads and stores
Philip Reames [Thu, 9 Mar 2023 15:55:07 +0000 (07:55 -0800)]
[ASAN] Support memory checks on scalable vector typed loads and stores

This only covers the common load/store case. There will be further patches required for masked load/store and some of the fast-path optimization cases.

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

16 months ago[MergeICmps] Adapt to non-eq comparisons, fix bug for cases need be spilted
zhongyunde [Thu, 9 Mar 2023 15:48:51 +0000 (23:48 +0800)]
[MergeICmps] Adapt to non-eq comparisons, fix bug for cases need be spilted

Fix the last runtime issue as some sequent comparisons need be spilted.
For the origin equal comparisons chain, the new spilted Icmp chain will
still be end with equal, while for the new not-equal comparisons chain,
the new spilted Icmp chain will still be end with equal, so should address
this carefully, see detail wih case partial_sequent_ne.

Thanks for @glandium and @ayzhao report the runtime issue and carefully
examine.
Fix https://github.com/llvm/llvm-project/issues/59740.

Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D141188

16 months ago[clang][Interp][NFC] Take a const Descriptor* in dtor,move,ctorFns
Timm Bäder [Mon, 6 Mar 2023 13:57:19 +0000 (14:57 +0100)]
[clang][Interp][NFC] Take a const Descriptor* in dtor,move,ctorFns

We are not mutating the descriptors here.

16 months ago[flang] Only apply PointerIsAssociatedWith fix for derived-type
Valentin Clement [Thu, 9 Mar 2023 15:05:57 +0000 (16:05 +0100)]
[flang] Only apply PointerIsAssociatedWith fix for derived-type

Only apply the change made in D145604 for derived-type.
zero-sized character for example are supposed to give a false result

Reviewed By: PeteSteinfeld

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

16 months ago[flang] Reset dynamic type for optional intent(out) allocatable polymorphic dummy
Valentin Clement [Thu, 9 Mar 2023 14:47:59 +0000 (15:47 +0100)]
[flang] Reset dynamic type for optional intent(out) allocatable polymorphic dummy

Allocatable intent(out) are deallocated at the beginning of a function/subroutine.
For polyrmophic entities, the dynamic type need to be reseted to the declared
type. This patch makes sure this is done when the dummy argument is optional and
present.

Depends on D145674

Reviewed By: PeteSteinfeld

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

16 months ago[flang] Simplify same_type_as condition
Valentin Clement [Thu, 9 Mar 2023 14:46:59 +0000 (15:46 +0100)]
[flang] Simplify same_type_as condition

Restore the behavior changed in D145384 and add proper
unit tests.

Unallocated unlimited poymorphic allocatable and disassociated
unlimited polymorphic pointer should return false.

Reviewed By: PeteSteinfeld

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

16 months ago[X86] Drop single use check for freeze(undef) in LowerAVXCONCAT_VECTORS
ManuelJBrito [Thu, 9 Mar 2023 14:31:33 +0000 (14:31 +0000)]
[X86] Drop single use check for freeze(undef) in LowerAVXCONCAT_VECTORS

Ignoring freeze(undef) if it has multiple uses in LowerAVXCONCAT_VECTORS
causes the custom INSERT_SUBVECTOR for vector widening to be ignored.

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

16 months agoSwitch from int to unsigned int; NFC
Aaron Ballman [Thu, 9 Mar 2023 14:26:13 +0000 (09:26 -0500)]
Switch from int to unsigned int; NFC

This silences a GCC conversion diagnostic about assigning `1` to a
1-bit signed bit-field changing the value from `1` to `-1`.

Co-authored-by: Igor Kushnir <igorkuo@gmail.com>
16 months ago[AMDGPU] Speedup GCNDownwardRPTracker::advanceBeforeNext
Valery Pykhtin [Tue, 28 Feb 2023 18:00:48 +0000 (19:00 +0100)]
[AMDGPU] Speedup GCNDownwardRPTracker::advanceBeforeNext

The function makes liveness tests for the entire live register set for every instruction it passes by.
This becomes very slow on high RP regions such as ASAN enabled code.

Instead only uses of last tracked instruction should be tested and this greatly improves compilation time.

This patch revealed few bugs in SIFormMemoryClauses and PreRARematStage::sinkTriviallyRematInsts which should
be fixed first.

Reviewed By: arsenm

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

16 months ago[Flang][OpenMP] Restrict check to worksharing construct reductions
Kiran Chandramohan [Thu, 9 Mar 2023 14:05:08 +0000 (14:05 +0000)]
[Flang][OpenMP] Restrict check to worksharing construct reductions

The outer context private check for reduction variables was firing
for all constructs. This check is not applicable to non-worksharing
constructs.

OpenMP 5.2: Section 5.5.8
A list item that appears in a reduction clause on a worksharing construct
must be shared in the parallel region to which a correspodning worksharing
region binds.

Reviewed By: peixin

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

16 months agoAMDGPU: Update checks for a couple of tests. NFC
Diana Picus [Thu, 9 Mar 2023 13:50:14 +0000 (14:50 +0100)]
AMDGPU: Update checks for a couple of tests. NFC

16 months ago[Flang] Fix ALLOCATE with MOLD where MOLD is a scalar
Peter Steinfeld [Mon, 6 Mar 2023 21:00:10 +0000 (13:00 -0800)]
[Flang] Fix ALLOCATE with MOLD where MOLD is a scalar

We were failing tests where an ALLOCATE statement that allocated an
array had a non-character scalar MOLD argument.

I fixed this by merging the code for ALLOCATE statements with MOLD and
SOURCE arguments.

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

16 months ago[Flang][MLIR][OpenMP] Add support for logical eqv in worksharing-loop
Dylan Fleming [Mon, 6 Mar 2023 15:47:16 +0000 (15:47 +0000)]
[Flang][MLIR][OpenMP] Add support for logical eqv in worksharing-loop

The patch adds the lowering from Flang parse-tree to FIR+OpenMP. The
conversion code is also added in MLIR.

Reviewed By: kiranchandramohan

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

Co-authored-by: Kiran Chandramohan <kiran.chandramohan@arm.com>
16 months ago[Libomptarget] Remove unused arguments from bitcode compilation
Joseph Huber [Thu, 9 Mar 2023 13:53:47 +0000 (07:53 -0600)]
[Libomptarget] Remove unused arguments from bitcode compilation

Summary:
We passed `-fopenmp-target=` when we compiled the bitcode, which isn't
necessary since the 15 release. Also adjust an error message.

16 months ago[libc++] Add missing includes to optional
Krasimir Georgiev [Thu, 9 Mar 2023 13:02:45 +0000 (14:02 +0100)]
[libc++] Add missing includes to optional

After commit 0a4aa8a122aa097499c498b639a75b5e9a73e9f0 we see failures
like:
optional:722:7: error: missing '#include <__type_traits/conjunction.h>';
'_And' must be declared before it is used
and:
optional:683:46: error: missing '#include
<__type_traits/disjunction.h>'; '_Or' must be declared before it is used
      using __check_constructible_from_opt = _Or<

Adding these here fixes that.
I'm not familiar with the libcxx codebase, will ask the author to take a
look too.

16 months ago[libc++] Remove XFAIL for a test that now passes on FreeBSD
Ed Maste [Wed, 1 Mar 2023 22:13:09 +0000 (17:13 -0500)]
[libc++] Remove XFAIL for a test that now passes on FreeBSD

16 months agoRevert "Add __builtin_set_flt_rounds"
Aaron Ballman [Thu, 9 Mar 2023 13:02:31 +0000 (08:02 -0500)]
Revert "Add __builtin_set_flt_rounds"

This reverts commit 24b823554acd25009731b2519880aa18c7263550.

These changes broke the PPC build bot.

16 months agoRevert "Disable test for __builtin_set_flt_rounds to avoid breaking PPC buildbot"
Aaron Ballman [Thu, 9 Mar 2023 13:01:55 +0000 (08:01 -0500)]
Revert "Disable test for __builtin_set_flt_rounds to avoid breaking PPC buildbot"

This reverts commit d4fcc692ee15b2c6d249daabe31208d6a5afa025.

(This change removed all test coverage from a previous change, also to be reverted.)

16 months ago[libc] Add missing header for LIBC_INLINE macro
Joseph Huber [Thu, 9 Mar 2023 12:45:50 +0000 (06:45 -0600)]
[libc] Add missing header for LIBC_INLINE macro

Summray:
Forgot to do this in the last patch

16 months ago[libc] Add intrinsic for thread fence to the atomic support
Joseph Huber [Wed, 8 Mar 2023 21:17:14 +0000 (15:17 -0600)]
[libc] Add intrinsic for thread fence to the atomic support

This function mimics the std::atomic_thread_fence function from
<atomic>. This has no uses in source currently, but this will be used by
the proposed RPC client for the GPU mode support. There is varying
support for direct memory ordering for the GPU atomics on shared memory
resources. So the implementation will use relaxed atomics and explicit
memory fences.

Some additional work may need to be done to map this to `NVPTX` system
level fences.

Reviewed By: sivachandra

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

16 months ago[X86] combineConcatVectorOps - add basic TRUNCATE handling on AVX512 targets
Simon Pilgrim [Thu, 9 Mar 2023 12:32:11 +0000 (12:32 +0000)]
[X86] combineConcatVectorOps - add basic TRUNCATE handling on AVX512 targets

This really should be in shuffle combining, but we're still struggling to handle mismatched vector sizes

16 months ago[libc++] Safe allocator tests
Advenam Tacet [Thu, 9 Mar 2023 12:20:28 +0000 (13:20 +0100)]
[libc++] Safe allocator tests

This revision adds:
- New test allocator, which cleans memory during allocation and deallocation,
- tests using that allocator to vector.

This patch is part of our efforts to add support for ASan annotations with every
allocator.

This commit adds a new allocator for testing purposes only. The safe allocator
ensures that memory is cleand (zeroed) during allocation and deallocation, and
is intendted to test ASan annotations for every allocator in std::vector.
Check: D136765

Those tests should work correctly, even if support for every allocator in std::vector
is not yet available.

Support in ASan API was added here: rGdd1b7b797a116eed588fd752fbe61d34deeb24e4

Reviewed By: philnik, #libc

Spies: libcxx-commits

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

16 months ago[Flang] Give fir.if RegionBranchOpInterface
Sacha Ballantyne [Thu, 9 Mar 2023 10:22:05 +0000 (10:22 +0000)]
[Flang] Give fir.if RegionBranchOpInterface

fir.if currently isn't treated as a 'proper' conditional, so passes are unable to determine which regions are executed at times.

This patch gives fir.if this interface, which shouldn't do too much on its own but should allow future changes to take advantage
for various purposes

Reviewed By: vzakhari

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

16 months ago[X86] Add test case showing failure to fold concat_v32i8(trunc_v16i16(x),trunc_v16i16...
Simon Pilgrim [Thu, 9 Mar 2023 12:07:40 +0000 (12:07 +0000)]
[X86] Add test case showing failure to fold concat_v32i8(trunc_v16i16(x),trunc_v16i16(y)) -> trunc_v32i16(concat_v16i16(x,y))

We have similar tests but nothing that should only fold on BWI targets

16 months ago[ConstantFolding] Preserve inbounds when casting GEP indices
Nikita Popov [Thu, 9 Mar 2023 11:41:40 +0000 (12:41 +0100)]
[ConstantFolding] Preserve inbounds when casting GEP indices

This canonicalization just makes the implicit sext/trunc explicit,
and does not affect the inbounds-ness of the GEP.

16 months ago[InstSimplify] Fix newlines in test (NFC)
Nikita Popov [Thu, 9 Mar 2023 12:01:50 +0000 (13:01 +0100)]
[InstSimplify] Fix newlines in test (NFC)

This file used CRLF newlines.