platform/upstream/llvm.git
2 years ago[AST] Use BatchAA in aliasesPointer() (NFC)
Nikita Popov [Fri, 9 Sep 2022 14:24:14 +0000 (16:24 +0200)]
[AST] Use BatchAA in aliasesPointer() (NFC)

2 years ago[lldb] Fix deprecation warning for using std::iterator
Nico Weber [Thu, 29 Sep 2022 00:18:27 +0000 (20:18 -0400)]
[lldb] Fix deprecation warning for using std::iterator

std::iterator was deprecated in C++17.

No behavior change.

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

2 years ago[AMDGPU][GISel] Update `isCanonicalized`
Pierre van Houtryve [Thu, 29 Sep 2022 08:30:20 +0000 (08:30 +0000)]
[AMDGPU][GISel] Update `isCanonicalized`

Recognize more opcodes in the function.
Fixes some regressions introduced in D134857 for fdiv.f16 too.

Depends on D134857

Reviewed By: arsenm, foad

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

2 years ago[GISel] Add more cases to isKnownNeverNaN
Pierre van Houtryve [Thu, 29 Sep 2022 07:57:29 +0000 (07:57 +0000)]
[GISel] Add more cases to isKnownNeverNaN

Make it even with the DAG implementation as of D134854

Reviewed By: arsenm, foad

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

2 years ago[LICM] Collect more scalar promotion stats (NFC)
Nikita Popov [Fri, 9 Sep 2022 14:31:36 +0000 (16:31 +0200)]
[LICM] Collect more scalar promotion stats (NFC)

Collect more statistics for scalar promotion. In particular,
keep track of how many promotion candidates there were, and
whether it is a load or a load/store promotion.

2 years ago[Driver][Fuchsia] Add default linker flags
Alex Brachet [Fri, 30 Sep 2022 14:06:51 +0000 (14:06 +0000)]
[Driver][Fuchsia] Add default linker flags

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

2 years ago[AMDGPU][GISel] Add Identity BUILD_VECTOR Combines
Pierre van Houtryve [Fri, 30 Sep 2022 13:44:30 +0000 (13:44 +0000)]
[AMDGPU][GISel] Add Identity BUILD_VECTOR Combines

Folds-away BUILD_VECTOR-related noops in the post-legalizer combiner.

Depends on D134433

Reviewed By: arsenm

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

2 years ago[AMDGPU][GISel] Legalize V2S16 G_BUILD_VECTOR
Pierre van Houtryve [Fri, 30 Sep 2022 11:08:29 +0000 (11:08 +0000)]
[AMDGPU][GISel] Legalize V2S16 G_BUILD_VECTOR

Preparation patch for D134354 to make V2S16 G_BUILD_VECTOR legal.
Also removes RegBankInfo's scalarization of small BUILD_VECTORs,
replacing it with InstructionSelector logic instead.

This allows for V2S16 BUILD_VECTOR instructions to survive
all the way to ISel so we can select FMA/MAD_MIX instructions
in D134354.

Reviewed By: arsenm

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

2 years ago[SCCP] add tests for sitofp; NFC
Sanjay Patel [Fri, 30 Sep 2022 12:58:13 +0000 (08:58 -0400)]
[SCCP] add tests for sitofp; NFC

Adapted from the existing tests for ashr, sdiv, srem.

2 years ago[AMDGPU][SetWavePriority] Fix dealing with MBBInfo records.
Ivan Kosarev [Fri, 30 Sep 2022 13:24:08 +0000 (14:24 +0100)]
[AMDGPU][SetWavePriority] Fix dealing with MBBInfo records.

Happened earlier than I anticipated. :)

Reviewed By: arsenm

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

2 years ago[lldb] Fix 'error: non-const lvalue...' caused by SWIG 4.1.0
Jitka Plesnikova [Wed, 21 Sep 2022 09:42:46 +0000 (11:42 +0200)]
[lldb] Fix 'error: non-const lvalue...' caused by SWIG 4.1.0

Fix the failure caused by change in SwigValueWraper for C++11 and later
for improved move semantics in SWIG commit.

https://github.com/swig/swig/commit/d1055f4b3d51cb8060893f8036846ac743302dab

2 years ago[NFC] Fix erroneous indentation.
Amaury Séchet [Fri, 30 Sep 2022 12:30:27 +0000 (12:30 +0000)]
[NFC] Fix erroneous indentation.

2 years ago[InstSimplify] look through vector select (shuffle) in min/max fold
Sanjay Patel [Fri, 30 Sep 2022 11:56:15 +0000 (07:56 -0400)]
[InstSimplify] look through vector select (shuffle) in min/max fold

This is an extension of the existing min/max+select fold (which already
has a very large number of variations) to allow a vector shuffle because
that's what we have in the motivating example from issue #42100.

A couple of Alive2 checks of variants (I don't know how to generalize
these in Alive):
https://alive2.llvm.org/ce/z/jUFAqT

And verify the PR42100 test:
https://alive2.llvm.org/ce/z/3EcASf

It's possible there is some generalization of the fold or a
VectorCombine/SLP answer for the motivating test, but I haven't found a
better/smaller solution yet.

We can also add even more variants here as follow-up patches. For example,
we can have shuffle followed by min/max; we also don't have this
canonicalization or the reverse:
https://alive2.llvm.org/ce/z/StHD9f

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

2 years ago[SLP][X86] Add test coverage for Issue #58054
Simon Pilgrim [Fri, 30 Sep 2022 12:26:24 +0000 (13:26 +0100)]
[SLP][X86] Add test coverage for Issue #58054

2 years ago[InstCombine] Add test for PR57488 (NFC)
Nikita Popov [Fri, 30 Sep 2022 12:24:58 +0000 (14:24 +0200)]
[InstCombine] Add test for PR57488 (NFC)

2 years agotsan: fix deadlock/crash in signal handling
Dmitry Vyukov [Fri, 30 Sep 2022 11:58:27 +0000 (13:58 +0200)]
tsan: fix deadlock/crash in signal handling

We set in_blocking_func around some blocking C functions so that we don't
delay signal infinitely (if in_blocking_func is set we deliver signals
synchronously).

However, pthread_join is blocking but also call munmap/free to free thread
resources. If we are inside the munmap/free interceptors called from
pthread_join and deliver a signal synchronously, it can lead to deadlocks
and crashes since we re-enter runtime and try to lock the same mutexes
or use the same per-thread data structures.

If we re-enter runtime via an interceptor when in_blocking_func is set,
temporary reset in_blocking_func around the interceptor and restore it back
when we return from the recursive interceptor.

Also move in_blocking_func from ThreadSignalContext to ThreadContext
so that we can CHECK that it's not set in SlotLocker ctor.

Fixes https://github.com/google/sanitizers/issues/1540

Reviewed By: melver

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

2 years ago[mlir] fix DiagnosedSilenceableFailure::takeDiagnostics
Alex Zinenko [Fri, 30 Sep 2022 11:07:39 +0000 (11:07 +0000)]
[mlir] fix DiagnosedSilenceableFailure::takeDiagnostics

This function was returning an rvalue reference to an object that was
also cleared via RAII when the function returned, making it always
return an empty object. Make it accept the mutable reference to the
object instead to avoid this dangerous behavior.

Reviewed By: guraypp

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

2 years ago[AArch64] Add additional tests for SMULL instruction selection
Zain Jaffal [Fri, 30 Sep 2022 11:32:25 +0000 (12:32 +0100)]
[AArch64] Add additional tests for SMULL instruction selection

Add tests where the operands are switched and where the top bit of the operand is set to 1

Reviewed By: fhahn

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

2 years ago[lldb] Fix member access in GetExpressionPath
Tonko Sabolčec [Fri, 30 Sep 2022 11:10:32 +0000 (11:10 +0000)]
[lldb] Fix member access in GetExpressionPath

This change fixes two issues in ValueObject::GetExpressionPath method:

 1. Accessing members of struct references used to produce expression
    paths such as "str.&str.member" (instead of the expected
    "str.member"). This is fixed by assigning the flag tha the child
    value is a dereference when calling Dereference() on references
    and adjusting logic in expression path creation.

 2. If the parent of member access is dereference, the produced
    expression path was "*(ptr).member". This is incorrect, since it
    dereferences the member instead of the pointer. This is fixed by
    wrapping dereference expression into parenthesis, resulting with
    "(*(ptr)).member".

Reviewed By: werat, clayborg

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

2 years ago[InstCombine] Add test for phi translation during select of phi fold (NFC)
Nikita Popov [Fri, 30 Sep 2022 11:06:53 +0000 (13:06 +0200)]
[InstCombine] Add test for phi translation during select of phi fold (NFC)

The phi translation performed during this fold is important for
correctness, but was apparently untested.

2 years agoCleanup: avoid referring to std::vector<T> members when T is incomplete.
Alexander Kornienko [Fri, 30 Sep 2022 11:04:07 +0000 (13:04 +0200)]
Cleanup: avoid referring to std::vector<T> members when T is incomplete.

This is not legal according to the C++ standard, and causes build errors in
particular in C++20 mode. Fix it by defining the vector's type before using the
vector.

Patch by poompatai@google.com.

2 years ago[InstCombine] Regenerate test checks (NFC)
Nikita Popov [Fri, 30 Sep 2022 11:04:23 +0000 (13:04 +0200)]
[InstCombine] Regenerate test checks (NFC)

2 years ago[lldb][Windows] Always call SetExecutableModule on debugger connected
Alvin Wong [Wed, 28 Sep 2022 09:58:51 +0000 (12:58 +0300)]
[lldb][Windows] Always call SetExecutableModule on debugger connected

In `ProcessWindows::OnDebuggerConnected` (triggered from
`CREATE_PROCESS_DEBUG_EVENT`), we should always call
`Target::SetExecutableModule` regardless of whether LLDB has already
preloaded the executable modules. `SetExecutableModule` has the side
effect of clearing the module list of the Target, which help make sure
that module #0 is the executable module and the rest of the modules are
listed according to the DLL load order in the process (technically this
has no real consequences but it seems to make more sense anyway.) It
also fixes an issue where the modules preloaded by LLDB will be
duplicated when the debuggee process actually loads the DLL.

Reviewed By: labath

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

2 years ago[mlir][SCF] Apply ClangTidyPerformance finding (NFC)
Adrian Kuegel [Fri, 30 Sep 2022 10:47:32 +0000 (12:47 +0200)]
[mlir][SCF] Apply ClangTidyPerformance finding (NFC)

2 years agoRevert rG1b7089fe67b924bdd5ecef786a34bdba7a88778f "[SLP] Add ScalarizationOverheadBui...
Simon Pilgrim [Fri, 30 Sep 2022 10:19:30 +0000 (11:19 +0100)]
Revert rG1b7089fe67b924bdd5ecef786a34bdba7a88778f "[SLP] Add ScalarizationOverheadBuilder helper to track vector extractions"
Revert rGef89409a59f3b79ae143b33b7d8e6ee6285aa42f "Fix 'unused-lambda-capture' gcc warning. NFCI."
Revert rG926ccfef032d206dcbcdf74ca1e3a9ebf4d1be45 "[SLP] ScalarizationOverheadBuilder - demand all elements for scalarization if the extraction index is unknown / out of bounds"

Revert ScalarizationOverheadBuilder sequence from D134605 - when accumulating extraction costs by Type (instead of specific Value), we are not distinguishing enough when they are coming from the same source or not, and we always just count the cost once. This needs addressing before we can use getScalarizationOverhead properly.

2 years ago[LoopDeletion] Clear block & loop dispo cache after breaking backedge.
Florian Hahn [Fri, 30 Sep 2022 10:21:58 +0000 (11:21 +0100)]
[LoopDeletion] Clear block & loop dispo cache after breaking backedge.

breakLoopBackedge may remove blocks and loops. Also clear block &
loop disposition to avoid the cache containing invalid blocks and loops.

The coverage for the change is provided when using an ASAN build of opt
to run the LoopDeletion unit tests; without the fix, pointers to invalid
objects would be used.

Reviewed By: nikic

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

2 years ago[SLP][X86] Add test case for crash reported on D134605
Simon Pilgrim [Fri, 30 Sep 2022 10:07:46 +0000 (11:07 +0100)]
[SLP][X86] Add test case for crash reported on D134605

2 years ago[SLP][AArch64] Add test case for vectorization regression case reported on D134605
Simon Pilgrim [Fri, 30 Sep 2022 10:03:14 +0000 (11:03 +0100)]
[SLP][AArch64] Add test case for vectorization regression case reported on D134605

2 years ago[mlir] Rename getTied* methods to getMatching* in LinalgInterface.
Oleg Shyshkov [Fri, 30 Sep 2022 10:03:00 +0000 (10:03 +0000)]
[mlir] Rename getTied* methods to getMatching* in LinalgInterface.

Summary:
As mentioned in the comment to https://reviews.llvm.org/D134444, the term `tied`
is a misnomer in this context and `matching` sounds much better.

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

2 years ago[AArch64] Add support for 128-bit non temporal loads.
Zain Jaffal [Fri, 30 Sep 2022 10:03:48 +0000 (11:03 +0100)]
[AArch64] Add support for 128-bit non temporal loads.

Adding to the work done in `D131773` here we add support to 128-bit loads.

Reviewed By: fhahn

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

2 years ago[DebugInfo][LICM] Drop DebugLoc from IntrinsicInst when hoisting
Juan Manuel MARTINEZ CAAMAÑO [Tue, 27 Sep 2022 12:15:36 +0000 (12:15 +0000)]
[DebugInfo][LICM] Drop DebugLoc from IntrinsicInst when hoisting

The DebugLoc is conserved when hoisting function calls, to ensure the
DIScope is preserved if inlining occurs.

This commit drops the DebugLoc in the case the call is an intrinsic
call that won't be lowered into a function call.

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

2 years ago[LoongArch] Clean up redundant code introduced by conflict resolution. NFC
gonglingqin [Fri, 30 Sep 2022 06:49:35 +0000 (14:49 +0800)]
[LoongArch] Clean up redundant code introduced by conflict resolution. NFC

2 years agoRevert "[Clang] Fix variant crashes from GH58028, GH57370"
Roy Jacobson [Fri, 30 Sep 2022 08:24:46 +0000 (11:24 +0300)]
Revert "[Clang] Fix variant crashes from GH58028, GH57370"

This reverts commit 9706bb3165f5e508d5e2247ad8a3f45077df546d, some CI workers complain about the test.

2 years ago[Clang] define __cpp_named_character_escapes
Roy Jacobson [Thu, 29 Sep 2022 20:19:45 +0000 (23:19 +0300)]
[Clang] define __cpp_named_character_escapes

Define the feature test macro for named character escapes.
I assume this was not done because it was implemented before formally accepted, right? cxx_status says the paper is implemented.

Reviewed By: cor3ntin

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

2 years ago[Clang] Fix variant crashes from GH58028, GH57370
Roy Jacobson [Thu, 29 Sep 2022 15:38:46 +0000 (18:38 +0300)]
[Clang] Fix variant crashes from GH58028, GH57370

Fixes a null dereference in some diagnostic issuing code.

Closes https://github.com/llvm/llvm-project/issues/57370
Closes https://github.com/llvm/llvm-project/issues/58028

Reviewed By: shafik

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

2 years ago[libc] Re-enable functions from signal.h and re-enable abort.
Siva Chandra Reddy [Wed, 7 Sep 2022 23:04:09 +0000 (23:04 +0000)]
[libc] Re-enable functions from signal.h and re-enable abort.

They were disabled because we were including linux/signal.h from our
signal.h. Linux's signal.h is not designed to be included from user
programs as it causes a lot of non-standard name pollution. Also, it is
not self-contained. This change defines types and macros relevant for
signal related syscalls within libc's headers and removes inclusion of
Linux headers.

This patch enables the funtions only for x86_64. They will be enabled
for aarch64 also in a follow up patch after testing.

Reviewed By: abrachet, lntue

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

2 years ago[TableGen] Add `countRendererFns` to `InstructionOperandMatcher`
Pierre van Houtryve [Thu, 29 Sep 2022 08:11:09 +0000 (08:11 +0000)]
[TableGen] Add `countRendererFns` to `InstructionOperandMatcher`

Without it, the count of renderer functions is inaccurate and, in some
edge cases (like the patterns added in D134354), we can actually
go out of bounds (run out of pre-allocated renderer function spaces
in the GISel state)

Reviewed By: arsenm

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

2 years ago[clang] [Driver] Disable default configs via envvar during testing
Michał Górny [Thu, 29 Sep 2022 20:38:52 +0000 (22:38 +0200)]
[clang] [Driver] Disable default configs via envvar during testing

Add support for a CLANG_NO_DEFAULT_CONFIG envvar that works like
the --no-default-config option when set to a non-empty value.  Use it
to disable loading system configuration files during the test suite
runs.

Configuration files can change the driver behavior in extensive ways,
and it is neither really possible nor feasible to account for or undo
the effects of even the most common configuration uses.  Therefore,
the most reasonable option seems to be to ignore configuration files
while running the majority of tests (with the notable exception of tests
for configuration file support).

Due to the diversity of ways that %clang is used in the test suite,
including using it to copy or symlink the clang executable, as well to
call -cc1 and -cc1as modes, it is not feasible to pass the explicit
options to disable config loading either.  Using an environment variable
has the advantage of being easily applied across the test suite
and easily unset for default configuration file loading tests.

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

2 years ago[lldb] Get rid of __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS
serge-sans-paille [Thu, 29 Sep 2022 19:48:38 +0000 (21:48 +0200)]
[lldb] Get rid of __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS

C++11 made the use of these macro obsolete, see https://sourceware.org/bugzilla/show_bug.cgi?id=15366

As a side effect this prevents https://github.com/swig/swig/issues/2193.

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

2 years ago[mlir][Linalg] Reland Add ReduceOp to Linalg structured ops.
Adrian Kuegel [Fri, 30 Sep 2022 06:36:32 +0000 (08:36 +0200)]
[mlir][Linalg] Reland Add ReduceOp to Linalg structured ops.

This op will allow to model (variadic) reductions with this special op
instead of using GenericOp.

This reverts commit 535fd753ef8dcfe5c73219ea7173e015a74e4f59.
Additional fix: implement a getLibraryName method.

2 years ago[mlir][Bazel] Port 11069cbcb47845074d526490fff8daff8afda11d
Adrian Kuegel [Fri, 30 Sep 2022 06:33:10 +0000 (08:33 +0200)]
[mlir][Bazel] Port 11069cbcb47845074d526490fff8daff8afda11d

2 years ago[sanitizer] Fix symbolizer build script
Vitaly Buka [Fri, 30 Sep 2022 06:32:16 +0000 (23:32 -0700)]
[sanitizer] Fix symbolizer build script

2 years ago[clang][Interp] Handle enums
Timm Bäder [Fri, 16 Sep 2022 07:17:52 +0000 (09:17 +0200)]
[clang][Interp] Handle enums

Handle DeclRefExprs of enum types. They are otherwise handled like
integers.

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

2 years ago[clang] [test] Use --implicit-check-not in config-file3 tests
Michał Górny [Fri, 30 Sep 2022 05:59:41 +0000 (07:59 +0200)]
[clang] [test] Use --implicit-check-not in config-file3 tests

Thanks to Fangrui Song for the suggestion.

2 years ago[Doc] Fix typo. NFC
Phoebe Wang [Fri, 30 Sep 2022 06:00:42 +0000 (14:00 +0800)]
[Doc] Fix typo. NFC

Fixes #56429

2 years agoRevert "[CMake] Use libcxx targets for in-tree sanitizer C++ ABI"
Petr Hosek [Fri, 30 Sep 2022 05:52:49 +0000 (05:52 +0000)]
Revert "[CMake] Use libcxx targets for in-tree sanitizer C++ ABI"

This reverts commit 7dbdffefb768062f28599c256b5e013ee26ff04e since
it appears to have broken several ASan tests.

2 years agoFix spelling in Co-authored-by documentation
Kristof Beyls [Fri, 30 Sep 2022 05:42:06 +0000 (07:42 +0200)]
Fix spelling in Co-authored-by documentation

2 years ago[ELF] Reset verdefIndex for Defined preempting SharedSymbol
Fangrui Song [Fri, 30 Sep 2022 04:26:53 +0000 (21:26 -0700)]
[ELF] Reset verdefIndex for Defined preempting SharedSymbol

to avoid spurious "attempt to reassign symbol '...'" warning after
7a58dd1046a8052619d173b769f32f2df3aafbe8

2 years ago[JITLink] Update external symbol scopes to reflect scopes of resolved defs.
Lang Hames [Fri, 30 Sep 2022 02:16:19 +0000 (19:16 -0700)]
[JITLink] Update external symbol scopes to reflect scopes of resolved defs.

This is a counterpart to ffe2dda29f3, and does for scope what that commit did
for linkage.

Making the scope of external definitions visible to JITLink plugins will
allow us to distinguish hidden weak defs (which do not need to be tracked by
default) from default-scoped weak defs (which need to be updated to point at
a single chosen definition at runtime).

2 years ago[SelectionDAG] Add helper function to check whether a SDValue is neutral element...
Yeting Kuo [Wed, 14 Sep 2022 08:29:53 +0000 (16:29 +0800)]
[SelectionDAG] Add helper function to check whether a SDValue is neutral element. NFC.

Using this helper makes work about neutral elements more easier. Although I only
find one case now, I think it will have more chance to be used since so many
combine works are related to neutral elements.

Reviewed By: RKSimon

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

2 years ago[mlir][spirv] Handle dynamic/static cases differntly for kernel capability
Nirvedh Meshram [Thu, 29 Sep 2022 18:14:18 +0000 (11:14 -0700)]
[mlir][spirv] Handle dynamic/static cases differntly for kernel capability

Reviewed By: antiagainst

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

2 years ago[gn build] Port 91c96a806cae
LLVM GN Syncbot [Fri, 30 Sep 2022 01:33:02 +0000 (01:33 +0000)]
[gn build] Port 91c96a806cae

2 years ago[CMake] Use correct include flag for MSVC
Petr Hosek [Thu, 29 Sep 2022 08:48:03 +0000 (08:48 +0000)]
[CMake] Use correct include flag for MSVC

When building using the MSVC driver, we need to use /imsvc rather than
-isystem for system headers.

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

2 years ago[CMake] Use libcxx targets for in-tree sanitizer C++ ABI
Petr Hosek [Thu, 29 Sep 2022 07:53:06 +0000 (07:53 +0000)]
[CMake] Use libcxx targets for in-tree sanitizer C++ ABI

When in-tree libcxx is selected as the sanitizer C++ ABI, use libcxx
targets rather than libcxxabi and libunwind, since those may not be
available on all platforms (Windows for example).

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

2 years agoRevert "[MLGO] ML Regalloc Priority Advisor"
Mircea Trofin [Fri, 30 Sep 2022 01:26:40 +0000 (18:26 -0700)]
Revert "[MLGO] ML Regalloc Priority Advisor"

This reverts commit 8f4f26ba5bd04f7b335836021e5e63b4236c0305.

Buildbot failures, e.g. https://lab.llvm.org/buildbot/#/builders/6/builds/14041

2 years ago[mlir][sparse] Fixing case coverage warning
wren romano [Fri, 30 Sep 2022 00:24:01 +0000 (17:24 -0700)]
[mlir][sparse] Fixing case coverage warning

Followup to D133835 for fixing the warning on LLVM's Windows buildbot

Reviewed By: aartbik, Peiming, stella.stamenova

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

2 years ago[DAG] Simplify the select of constant combine code. NFC
Amaury Séchet [Fri, 30 Sep 2022 00:58:04 +0000 (00:58 +0000)]
[DAG] Simplify the select of constant combine code. NFC

2 years ago[DAG] select Cond, C, -1 --> or (sext (not Cond)), C when C is MVT::i1
Amaury Séchet [Sat, 6 Aug 2022 02:10:22 +0000 (02:10 +0000)]
[DAG] select Cond, C, -1 --> or (sext (not Cond)), C when C is MVT::i1

In the spirit of D130765 . Get rid of cbranches and/or cmov. Usually shorter, but sometime not, becaus eit's hard to prededict when dependency breaking xor will be introduced.

Reviewed By: RKSimon

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

2 years ago[mlir][sparse] refactoring: split translateIndices.
Peiming Liu [Thu, 29 Sep 2022 21:59:02 +0000 (21:59 +0000)]
[mlir][sparse] refactoring: split translateIndices.

TranslateIndicesArray take an array of SSA value and convert them into another array of SSA values based on reassociation. Which makes it easier to be reused by `foreach` operator (as the indices array are given as an array of SSA values).

Reviewed By: aartbik, bixia

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

2 years ago[libc][windows] rename fenv internals for windows
Michael Jones [Tue, 27 Sep 2022 23:52:21 +0000 (16:52 -0700)]
[libc][windows] rename fenv internals for windows

On windows, including math.h causes macros for "OVERFLOW" and
"UNDERFLOW" to be defined. This patch renames some variables internal to
FEnvImpl.h to avoid colliding with those.

Reviewed By: sivachandra

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

2 years ago[mlir][sparse] Allow the push_back operator to skip capacity check and reallocation.
bixia1 [Thu, 29 Sep 2022 21:50:42 +0000 (14:50 -0700)]
[mlir][sparse] Allow the push_back operator to skip capacity check and reallocation.

Add UnitAttr `inbounds` for this purpose.

Reviewed By: aartbik

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

2 years ago[IR] Don't allow DLL storage-class and local linkage
Ben Dunbobbin [Thu, 29 Sep 2022 23:21:31 +0000 (00:21 +0100)]
[IR] Don't allow DLL storage-class and local linkage

Disallow this meaningless combination. Doing so simplifies analysis
of LLVM code w.r.t t DLL storage-class, and prevents mistakes with
DLL storage class.

- Change the assembler to reject DLL storage class on symbols with
  local linkage.
- Change the bitcode reader to clear the DLL Storage class when the
  linkage is local for auto-upgrading
- Update LangRef.

There is an existing restriction on non-default visibility and local
linkage which this is modelled on.

Differential Review: https://reviews.llvm.org/D134784

2 years ago[mlir][sparse] implement singleton dimension level type
Aart Bik [Sat, 17 Sep 2022 00:55:50 +0000 (17:55 -0700)]
[mlir][sparse] implement singleton dimension level type

This is a first step towards fully implementing the new dimension
level types and properties, illustrating with a fully functional
sorted COO of any dimension. Note that the sparsification part is
pretty complete. The required parts in the runtime support library
have been kept to a minimum, to avoid huge conflicts with Wren's
ongoing refactoring. The missing parts will be filled in later.

Reviewed By: Peiming

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

2 years ago[MC] Properly disable debug-frame test on AppleSilicon Mac
Steven Wu [Thu, 29 Sep 2022 23:20:47 +0000 (16:20 -0700)]
[MC] Properly disable debug-frame test on AppleSilicon Mac

Disable debug-frame tests on AppleSilicon Mac to improve some of the fix
in PR46647.

Reviewed By: aprantl

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

2 years ago[mlir] Use `interleave` in `printOperands` (NFC)
Jeff Niu [Thu, 29 Sep 2022 20:45:44 +0000 (13:45 -0700)]
[mlir] Use `interleave` in `printOperands` (NFC)

Instead of reimplementing it.

Reviewed By: rriddle

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

2 years ago[mlir] Add `OpAsmPrinter::printOptionalLocationSpecifier`
Jeff Niu [Thu, 29 Sep 2022 21:43:08 +0000 (14:43 -0700)]
[mlir] Add `OpAsmPrinter::printOptionalLocationSpecifier`

This is the corresponding method to
`OpAsmParser::parseOptionalLocationSpecifier` that prints a location
`loc(...)` based on the op printing flags. Together, these two functions
allow propagating user-level location info outside of their usual spots.

Reviewed By: rriddle

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

2 years agoadd missing textual header to modulemap
Adrian Prantl [Thu, 29 Sep 2022 22:56:31 +0000 (15:56 -0700)]
add missing textual header to modulemap

2 years agoInclude <cmath> in FileUtilities.cpp for std:abs(double)
Rahul Joshi [Thu, 29 Sep 2022 22:33:49 +0000 (15:33 -0700)]
Include <cmath> in FileUtilities.cpp for std:abs(double)

2 years ago[mlir][sparse] Improve sparse_tensor::detail::readCOOValue template
wren romano [Thu, 29 Sep 2022 20:13:48 +0000 (13:13 -0700)]
[mlir][sparse] Improve sparse_tensor::detail::readCOOValue template

This is a followup to the refactoring of D133462, D133830, D133831, and D133833.

Depends On D133833

Reviewed By: aartbik

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

2 years ago[gn build] Port 8f4f26ba5bd0
LLVM GN Syncbot [Thu, 29 Sep 2022 22:13:14 +0000 (22:13 +0000)]
[gn build] Port 8f4f26ba5bd0

2 years ago[mlir][sparse] optimizing permutation validity check in toMLIRSparseTensor
wren romano [Thu, 29 Sep 2022 20:35:17 +0000 (13:35 -0700)]
[mlir][sparse] optimizing permutation validity check in toMLIRSparseTensor

The previous sorting-based check was O(n*log n). The new implementation is O(n).

This is a followup to the refactoring of D133462, D133830, D133831, and D133833.

Depends On D133833

Reviewed By: aartbik

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

2 years ago[libc][Obvious] Enable some of the recently added functions on aarch64.
Siva Chandra [Thu, 29 Sep 2022 21:41:46 +0000 (14:41 -0700)]
[libc][Obvious] Enable some of the recently added functions on aarch64.

2 years ago[mlir][sparse] Move the implementation of sparse_tensor.push_back to the buffer rewriter.
bixia1 [Thu, 29 Sep 2022 21:09:04 +0000 (14:09 -0700)]
[mlir][sparse] Move the implementation of sparse_tensor.push_back to the buffer rewriter.

Reviewed By: aartbik, Peiming

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

2 years ago[mlir][sparse] Adding isSorted bit to SparseTensorCOO
wren romano [Thu, 29 Sep 2022 20:39:30 +0000 (13:39 -0700)]
[mlir][sparse] Adding isSorted bit to SparseTensorCOO

This is a followup to the refactoring of D133462, D133830, D133831, and D133833.

Depends On D133833

Reviewed By: aartbik

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

2 years ago[mlir][sparse] Cleaning up SparseTensorFile::readMMEHeader
wren romano [Thu, 29 Sep 2022 20:31:14 +0000 (13:31 -0700)]
[mlir][sparse] Cleaning up SparseTensorFile::readMMEHeader

This is a followup to the refactoring of D133462, D133830, D133831, and D133833.

Depends On D133833

Reviewed By: aartbik

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

2 years ago[MLGO] ML Regalloc Priority Advisor
Eric Wang [Fri, 9 Sep 2022 19:20:27 +0000 (14:20 -0500)]
[MLGO] ML Regalloc Priority Advisor

The bulk of the implementation is common between 'release' mode (==AOT-ed
model) and 'development' mode (for training), the main difference is
that in development mode, we may also log features (for training logs),
inject scoring information and then produce the log file.

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

2 years ago[AArch64][GlobalISel] Implement another combine for shufflevector->AArch64 G_EXT.
Amara Emerson [Thu, 29 Sep 2022 16:22:25 +0000 (17:22 +0100)]
[AArch64][GlobalISel] Implement another combine for shufflevector->AArch64 G_EXT.

This is a port of an existing optimization in AArch64 ISelLowering, handling
a case when the same input vector can be used for both ext inputs.

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

2 years ago[mlir][sparse] Factoring out SparseTensorFile::canReadAs predicate
wren romano [Thu, 29 Sep 2022 20:09:24 +0000 (13:09 -0700)]
[mlir][sparse] Factoring out SparseTensorFile::canReadAs predicate

This is a followup to the refactoring of D133462, D133830, D133831, and D133833.

Depends On D133833

Reviewed By: aartbik

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

2 years ago[mlir][sparse] refactoring SparseTensorUtils: (4 of 4) documentation
wren romano [Thu, 29 Sep 2022 20:04:28 +0000 (13:04 -0700)]
[mlir][sparse] refactoring SparseTensorUtils: (4 of 4) documentation

Previously, the SparseTensorUtils.cpp library contained a C++ core implementation, but hid it in an anonymous namespace and only exposed a C-API for accessing it. Now we are factoring out that C++ core into a standalone C++ library so that it can be used directly by downstream clients (per request of one such client). This refactoring has been decomposed into a stack of differentials in order to simplify the code review process, however the full stack of changes should be considered together.

* D133462: Part 1: split one file into several
* D133830: Part 2: Reorder chunks within files
* D133831: Part 3: General code cleanup
* (this): Part 4: Update documentation

This part updates existing documentation, adds new documentation, and reflows the test for some existing documentation.

Depends On D133831

Reviewed By: aartbik

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

2 years ago[mlir][sparse] refactoring SparseTensorUtils: (3 of 4) code-cleanup
wren romano [Thu, 29 Sep 2022 19:55:32 +0000 (12:55 -0700)]
[mlir][sparse] refactoring SparseTensorUtils: (3 of 4) code-cleanup

Previously, the SparseTensorUtils.cpp library contained a C++ core implementation, but hid it in an anonymous namespace and only exposed a C-API for accessing it. Now we are factoring out that C++ core into a standalone C++ library so that it can be used directly by downstream clients (per request of one such client). This refactoring has been decomposed into a stack of differentials in order to simplify the code review process, however the full stack of changes should be considered together.

* D133462: Part 1: split one file into several
* D133830: Part 2: Reorder chunks within files
* (this): Part 3: General code cleanup
* D133833: Part 4: Update documentation

This part performs some general code cleanup including:
* making more things `const`, especially for the targets of pointers
* using preincrement wherever possible ([[ https://llvm.org/docs/CodingStandards.html#prefer-preincrement | per LLVM style guide ]])
* adding messages to most `assert` statments.
* moving argument casting from the core function/method definitions to the CPP wrappers

Depends On D133830

Reviewed By: aartbik

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

2 years ago[mlir][sparse] refactoring SparseTensorUtils: (2 of 4) reordering
wren romano [Thu, 29 Sep 2022 18:55:51 +0000 (11:55 -0700)]
[mlir][sparse] refactoring SparseTensorUtils: (2 of 4) reordering

Previously, the SparseTensorUtils.cpp library contained a C++ core implementation, but hid it in an anonymous namespace and only exposed a C-API for accessing it. Now we are factoring out that C++ core into a standalone C++ library so that it can be used directly by downstream clients (per request of one such client). This refactoring has been decomposed into a stack of differentials in order to simplify the code review process, however the full stack of changes should be considered together.

* D133462: Part 1: split one file into several
* (this): Part 2: Reorder chunks within files
* D133831: Part 3: General code cleanup
* D133833: Part 4: Update documentation

This part moves chunks of code within files, but again aims to make no other changes. Many of these movements are part of a stylistic shift to reorder the components of class definitions as follows: data members, ctors/factories, getters, other public methods, private methods.

Depends On D133462

Reviewed By: aartbik

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

2 years ago[mlir][sparse] refactoring SparseTensorUtils: (1 of 4) file-splitting
wren romano [Thu, 29 Sep 2022 18:40:40 +0000 (11:40 -0700)]
[mlir][sparse] refactoring SparseTensorUtils: (1 of 4) file-splitting

Previously, the SparseTensorUtils.cpp library contained a C++ core implementation, but hid it in an anonymous namespace and only exposed a C-API for accessing it. Now we are factoring out that C++ core into a standalone C++ library so that it can be used directly by downstream clients (per request of one such client). This refactoring has been decomposed into a stack of differentials in order to simplify the code review process, however the full stack of changes should be considered together.

* (this): Part 1: split one file into several
* D133830: Part 2: Reorder chunks within files
* D133831: Part 3: General code cleanup
* D133833: Part 4: Update documentation

This part aims to make no changes other than the 1:N file splitting, and things which are forced to accompany that change.

Reviewed By: aartbik

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

2 years ago[NFC] Use %clang_cc1
Xiang Li [Thu, 29 Sep 2022 21:26:01 +0000 (14:26 -0700)]
[NFC] Use %clang_cc1

2 years ago[NFC] Move cc1 test out of Driver test
Xiang Li [Thu, 29 Sep 2022 21:19:12 +0000 (14:19 -0700)]
[NFC] Move cc1 test out of Driver test

2 years ago[HLSL] add ceil library function
Joshua Batista [Thu, 29 Sep 2022 20:43:24 +0000 (13:43 -0700)]
[HLSL] add ceil library function

This change exposes the ceil library function for HLSL,
excluding long, int, and long long doubles.
Ceil is supported for all scalar, vector, and matrix types.

Long and long long double support is missing in this patch because those types
don't exist in HLSL. Int is missing because the ceil function only works on floating type arguments.

The full documentation of the HLSL ceil function is available here:
https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-ceil

Reviewed By: python3kgae

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

2 years ago[RISCV] Minor code motion in InsertVSETVLI [nfc]
Philip Reames [Thu, 29 Sep 2022 21:01:14 +0000 (14:01 -0700)]
[RISCV] Minor code motion in InsertVSETVLI [nfc]

2 years ago[scudo][Fuchsia] Increase MaxNumCachedHint
Alex Brachet [Thu, 29 Sep 2022 20:57:10 +0000 (20:57 +0000)]
[scudo][Fuchsia] Increase MaxNumCachedHint

This brings the value closer to other platforms and allows
for future improvements, see D133897.

2 years ago[libc] Add GNU extension functions sched_getaffinity and sched_setaffinity.
Siva Chandra Reddy [Thu, 29 Sep 2022 07:57:52 +0000 (07:57 +0000)]
[libc] Add GNU extension functions sched_getaffinity and sched_setaffinity.

Reviewed By: michaelrj

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

2 years ago[HIP] stop forcing the lang std in the driver
Siu Chi Chan [Tue, 13 Sep 2022 17:42:43 +0000 (13:42 -0400)]
[HIP] stop forcing the lang std in the driver

D103221 changed HIP's default to C++14, removing the driver logic to
force it into a different std.

Change-Id: I9f5220a7456687039b0bd3b3574f3124d3cc7665

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

Change-Id: I40513f2ebe93ee53ea95c8bb3cc704487d970263

2 years ago[Clang][NFC] Fix broken link in release notes
Roy Jacobson [Thu, 29 Sep 2022 20:16:17 +0000 (23:16 +0300)]
[Clang][NFC] Fix broken link in release notes

2 years ago[Clang] P1169R4: static operator()
Roy Jacobson [Thu, 29 Sep 2022 15:45:03 +0000 (18:45 +0300)]
[Clang] P1169R4: static operator()

Implements 'P1169R4: static operator()' from C++2b.

Reviewed By: #clang-language-wg, aaron.ballman

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

2 years ago[SCEVExpander] Move LCSSA fixup to ::expand.
Florian Hahn [Thu, 29 Sep 2022 19:49:55 +0000 (20:49 +0100)]
[SCEVExpander] Move LCSSA fixup to ::expand.

Move LCSSA fixup from ::expandCodeForImpl to ::expand(). This has
the advantage that we directly preserve LCSSA nodes here instead of
relying on doing so in rememberInstruction. It also ensures that we
 don't add the non-LCSSA-safe value to InsertedExpressions.

Alternative to D132704.

Fixes #57000.

Reviewed By: efriedma

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

2 years ago[X86] Avoid miscompile in combineOr (X86ISelLowering.cpp)
Bjorn Pettersson [Thu, 29 Sep 2022 16:22:56 +0000 (18:22 +0200)]
[X86] Avoid miscompile in combineOr (X86ISelLowering.cpp)

In combineOr (X86ISelLowering.cpp) there is a DAG combine that rewrite
a "(0 - SetCC) | C" pattern into something simpler given that a LEA
can be used. Another requirement is that C has some specific value,
for example 1 or 7. When checking those requirements the code used a
32-bit unsigned variable to store the value of C. So for a 64-bit OR
this could miscompile in case any of the 32 most significant bits in
C were non zero.

This patch adds fixes the bug by using a large enough type for the
C value.

The faulty code seem to have been introduced by commit 9bceb8981d32fe
(D131358).

Reviewed By: RKSimon

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

2 years ago[X86] Pre-commit test case showing bug in combineOr (X86ISelLowering.cpp)
Bjorn Pettersson [Thu, 29 Sep 2022 16:14:15 +0000 (18:14 +0200)]
[X86] Pre-commit test case showing bug in combineOr (X86ISelLowering.cpp)

In combineOr (X86ISelLowering.cpp) there is a DAG combine that rewrite
a "(0 - SetCC) | C" pattern into something simpler given that a LEA
can be used. Another requirement is that C has some specific value,
for example 1 or 7. When doing that check it is using a 32-bit
unsigned variable to store the value of C. So for a 64-bit OR this
could miscompile in case any of the 32 most significant bits in C
are set.

This patch adds a test case to show this miscompile bug.

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

2 years ago[Driver][test] Restore %clang -cc1 in test/Driver
Fangrui Song [Thu, 29 Sep 2022 19:21:57 +0000 (12:21 -0700)]
[Driver][test] Restore %clang -cc1 in test/Driver

This partially reverts commit 1609a5d7715c06ff52c13af8b20ee64811a8ec7b (the
test/Driver part). We want to discourage %clang_cc1 and clang -cc1 in
test/Driver. The clang -cc1 uses in hlsl/offload/etc are not good examples.

2 years ago[mlir][sparse] fix build breakage due to Arith name change
Aart Bik [Thu, 29 Sep 2022 19:09:09 +0000 (12:09 -0700)]
[mlir][sparse] fix build breakage due to Arith name change

Reviewed By: Peiming

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

2 years ago[libc++] Include skipped headers in the --trace-includes output
Louis Dionne [Wed, 28 Sep 2022 20:07:43 +0000 (16:07 -0400)]
[libc++] Include skipped headers in the --trace-includes output

By default, Clang does not include headers that are skipped due to
the include guard optimization in the --trace-includes output, which
breaks the use case that we were trying to use it for.

However, Clang does support the -fshow-skipped-includes flag, which
does exactly what we need and will result in an accurate include
graph.

As a fly-by fix, make sure that our includes don't differ between
-fexceptions and -fno-exceptions.

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

2 years ago[clang] [test] Use %clang_cc1 substitution consistently
Michał Górny [Thu, 29 Sep 2022 18:58:47 +0000 (20:58 +0200)]
[clang] [test] Use %clang_cc1 substitution consistently

Use the `%clang_cc1` substitution consistently across the test suite,
replacing inline `%clang -cc1` invocations, except for one Preprocessor
test where this is causing breakage.  This is necessary to ensure that
additional parameters passed via `%clang` do not interfere with `-cc1`
that must always be passed as the first command-line argument.

Remove the additional substitution blocking `%clang_cc1` use in Driver
tests.  It has been added in 2013 and was supposed to prevent tests
calling `clang -cc1` from being added to Driver.  The state of the test
suite proves that it did not succeed at all.

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

2 years ago[llvm] [lit] Move %clang_dxc substitution from clang/test
Michał Górny [Thu, 29 Sep 2022 18:58:43 +0000 (20:58 +0200)]
[llvm] [lit] Move %clang_dxc substitution from clang/test

Move the `%clang_dxc` substitution from local definition in clang/test
to lit's `llvm/config.py` module where all other driver definitions
are found.  This improves consistency and makes it easier to control
global clang options.

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

2 years ago[clang] [Driver] More flexible rules for loading default configs
Michał Górny [Thu, 29 Sep 2022 18:58:35 +0000 (20:58 +0200)]
[clang] [Driver] More flexible rules for loading default configs

Change the default config file loading logic to be more flexible
and more readable at the same time.  The new algorithm focuses on four
locations, in order:

1. <triple>-<mode>.cfg using real driver mode
2. <triple>-<mode>.cfg using executable suffix
3. <triple>.cfg + <mode>.cfg using real driver mode
4. <triple>.cfg + <mode>.cfg using executable suffix

This is meant to preserve reasonable level of compatibility with
the existing use, while introducing more flexibility and making the code
simpler.  Notably:

1. In this layout, the actual target triple is normally respected,
   and e.g. in `-m32` build the `x86_64-*` configs will never be used.

2. Both real driver mode (preferable) and executable suffix are
   supported.  This permits correctly handling calls with explicit
   `--driver-mode=` while at the same time preserving compatibility
   with the existing code.

3. The first two locations provide users with the ability to override
   configuration per specific target+mode combinaton, while the next two
   make it possible to independently specify per-target and per-mode
   configuration.

4. All config file locations are applicable independently of whether
   clang is started via a prefixed executable, or bare `clang`.

5. If the target is not explicitly specified and the executable prefix
   does not name a valid triple, it is used instead of the actual target
   triple for backwards compatibility.

This is particularly meant to address Gentoo's use case for
configuration files: to configure the default runtimes (i.e. `-rtlib=`,
`-stdlib=`) and `--gcc-install-dir=` for all the relevant drivers,
as well as to make it more convenient for users to override `-W` flags
to test compatibility with future versions of Clang easier.

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