platform/upstream/llvm.git
2 years ago[libc++] [test] Improve the test for `uniform_int_distribution<T>`.
Arthur O'Dwyer [Thu, 2 Dec 2021 00:55:26 +0000 (19:55 -0500)]
[libc++] [test] Improve the test for `uniform_int_distribution<T>`.

Extracted from https://reviews.llvm.org/D114920

2 years ago[DAG] Extend SearchForAndLoads with any_extend handling
David Green [Mon, 17 Jan 2022 15:25:11 +0000 (15:25 +0000)]
[DAG] Extend SearchForAndLoads with any_extend handling

This extends the code in SearchForAndLoads to be able to look through
ANY_EXTEND nodes, which can be created from mismatching IR types where
the AND node we begin from only demands the low parts of the register.
That turns zext and sext into any_extends as only the low bits are
demanded. To be able to look through ANY_EXTEND nodes we need to handle
mismatching types in a few places, potentially truncating the mask to
the size of the final load.

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

2 years ago[libc++] [ABI BREAK] Conform lognormal_distribution::param_type.
Arthur O'Dwyer [Tue, 28 Dec 2021 22:51:55 +0000 (17:51 -0500)]
[libc++] [ABI BREAK] Conform lognormal_distribution::param_type.

Fixes #52906.

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

2 years ago[libc++] [test] Check for another kind of modulemap typo in lint_modulemap.sh.py.
Arthur O'Dwyer [Sun, 16 Jan 2022 19:56:42 +0000 (14:56 -0500)]
[libc++] [test] Check for another kind of modulemap typo in lint_modulemap.sh.py.

Verify that the name of the private submodule matches the name of the detail header.

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

2 years agoAMDGPU: Fix crashing on calls to C functions from graphics contexts
Matt Arsenault [Sat, 15 Jan 2022 20:12:18 +0000 (15:12 -0500)]
AMDGPU: Fix crashing on calls to C functions from graphics contexts

If we had one of the shader calling conventions calling a default
calling convention callee, this would crash when the caller did not
have anything to pass to the workitem ID.

This is illegal, but we still need to produce something
sensible. llvm-reduce likes to replace calls to intrinsics with calls
to null or undef, so this does appear and is helpful to avoid hard
erroring.

Pass undef in this case, as already happened for the other implicit
arguments. It might make sense to define the behavior here and pass
null for the pointers, and -1 for the workitem ID. We do have extra
bits in the workitem ID, so this wouldn't conflict with a valid value.

2 years agoAMDGPU/GlobalISel: Fix selection of constant 32-bit addrspace loads
Matt Arsenault [Wed, 12 Jan 2022 21:28:49 +0000 (16:28 -0500)]
AMDGPU/GlobalISel: Fix selection of constant 32-bit addrspace loads

Unfortunately the selection patterns still rely on the address space
from the memory operand instead of using the pointer type. Add this
address space to the list of cases supported by global-like loads.

Alternatively we would have to adjust the address space of the memory
operand to deviate from the underlying IR value, which looks ugly and
is more work in the legalizer.

This doesn't come up in the DAG path because it uses a different
selection strategy where the cast is inserted during the addressing
mode matching.

2 years agoAMDGPU: Correct getMaxNumSGPR treatment of flat_scratch
Matt Arsenault [Fri, 14 Jan 2022 21:21:24 +0000 (16:21 -0500)]
AMDGPU: Correct getMaxNumSGPR treatment of flat_scratch

This was approximating the entry point logic for flat_scratch_init,
which is not really the point. We need to account for whether we need
to reserve the SGPR pair used for flat_scratch, not whether we needed
the initialization kernel argument. If this was an arbitrary function,
we would end up over-reporting the number of potentially free
SGPRs. The logic for architected flat scratch also only applies to the
initialization in the kernel, not the reserved registers at the end.

Avoids compile failures in a future patch from allocating more SGPRs
than the subtarget supports.

2 years agoAMDGPU/GlobalISel: Fix legalization failure for s65 shifts
Matt Arsenault [Sun, 16 Jan 2022 15:45:38 +0000 (10:45 -0500)]
AMDGPU/GlobalISel: Fix legalization failure for s65 shifts

This was trying to clamp s65 down to s32, which wasn't handled so we
need to promote all the way to s128 first. Having to order the
legalization rules in just the right way is rather dissatisfying, but
I'm not sure how smart the legalizer should be in trying to interpret
the rules.

2 years ago[VE] select|vp.merge|vp.select v256 isel and tests
Simon Moll [Mon, 17 Jan 2022 13:56:12 +0000 (14:56 +0100)]
[VE] select|vp.merge|vp.select v256 isel and tests

Use the `VMRG` for all three operations for now. `vp_select` will be
used in passthru patterns.

Reviewed By: kaz7

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

2 years agoAMDGPU/GlobalISel: Add failing ABI lowering testcases
Matt Arsenault [Sun, 16 Jan 2022 16:14:58 +0000 (11:14 -0500)]
AMDGPU/GlobalISel: Add failing ABI lowering testcases

2 years agoAMDGPU: Fix LiveVariables error after optimizing VGPR ranges
Matt Arsenault [Wed, 5 Jan 2022 17:09:09 +0000 (12:09 -0500)]
AMDGPU: Fix LiveVariables error after optimizing VGPR ranges

This was not removing the block from the live set depending on the
specific depth first visit order. Fixes a verifier error in the OpenCL
conformance tests.

2 years agoAMDGPU/GlobalISel: Fix test not matching test name
Matt Arsenault [Sun, 16 Jan 2022 19:24:03 +0000 (14:24 -0500)]
AMDGPU/GlobalISel: Fix test not matching test name

This was testing an s48 load instead of an s64 load as intended.

2 years ago[AArch64][SVE] Remove Redundant aarch64.sve.convert.to.svbool
Matt Devereau [Wed, 5 Jan 2022 13:42:01 +0000 (13:42 +0000)]
[AArch64][SVE] Remove Redundant aarch64.sve.convert.to.svbool

Generated code resulted in redundant aarch64.sve.convert.to.svbool
calls for AArch64 Binary Operations. Narrow the more precise operands
instead of widening the less precise operands

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

2 years ago[LV] Add test coverage for reductions with odd interleave counts.
Florian Hahn [Mon, 17 Jan 2022 14:32:40 +0000 (14:32 +0000)]
[LV] Add test coverage for reductions with odd interleave counts.

Add test coverage for loops with reductions and odd (3, 5) interleave
counts.

2 years ago[Clang][AArch64][ARM] PMUv3 Option Added
Mubashar Ahmad [Wed, 5 Jan 2022 16:53:59 +0000 (16:53 +0000)]
[Clang][AArch64][ARM] PMUv3 Option Added

An option has been added to Clang to enable or disable
the PMU v3 architecture extension.

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

2 years agoRe-land [clangd] Elide even more checks in SelectionTree.
Sam McCall [Mon, 17 Jan 2022 14:13:27 +0000 (15:13 +0100)]
Re-land [clangd] Elide even more checks in SelectionTree.

This reverts commit 1093b9f2e9842982d97534940a643e3a4657c60b.

Fix added for implicit-include case.

2 years ago[clangd] Don't rename on symbols from system headers.
Haojian Wu [Wed, 5 Jan 2022 09:42:45 +0000 (10:42 +0100)]
[clangd] Don't rename on symbols from system headers.

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

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

2 years ago[DSE] Remove commented-out InvisibleToCallerBeforeRet. (NFC)
Florian Hahn [Mon, 17 Jan 2022 13:59:13 +0000 (13:59 +0000)]
[DSE] Remove commented-out InvisibleToCallerBeforeRet. (NFC)

This code was is a leftover from earlier changes and should be removed.

2 years ago[InstCombine] propagate IR flags from binop through select
Sanjay Patel [Sun, 16 Jan 2022 18:36:49 +0000 (13:36 -0500)]
[InstCombine] propagate IR flags from binop through select

The tests with constant folding that produces poison
could potentially remove the select entirely:
https://alive2.llvm.org/ce/z/e-WUqF
...but this patch just removes the FMF-only limitation on
propagation.

2 years ago[InstCombine] add tests for binop with flags and select op; NFC
Sanjay Patel [Sun, 16 Jan 2022 18:01:43 +0000 (13:01 -0500)]
[InstCombine] add tests for binop with flags and select op; NFC

2 years ago[InstCombine] auto-generate complete test check lines; NFC
Sanjay Patel [Sun, 16 Jan 2022 17:44:46 +0000 (12:44 -0500)]
[InstCombine] auto-generate complete test check lines; NFC

2 years ago[LV] Make test more robust by adding users of inductions.
Florian Hahn [Sat, 15 Jan 2022 15:57:35 +0000 (15:57 +0000)]
[LV] Make test more robust by adding users of inductions.

The modified tests didn't have actual users of all inductions, making it
trivial to eliminate them. Add users to make sure the inductions are
actually used in the vectorized version.

2 years ago[VPlan] Drop unnecessary uses of getVPSingleValue (NFC).
Florian Hahn [Mon, 17 Jan 2022 13:27:33 +0000 (13:27 +0000)]
[VPlan] Drop unnecessary uses of getVPSingleValue (NFC).

2 years ago[CodeGen][AArch64] Ensure isSExtCheaperThanZExt returns true for negative constants
David Sherwood [Mon, 22 Nov 2021 11:38:06 +0000 (11:38 +0000)]
[CodeGen][AArch64] Ensure isSExtCheaperThanZExt returns true for negative constants

When we know the value we're extending is a negative constant then it
makes sense to use SIGN_EXTEND because this may improve code quality in
some cases, particularly when doing a constant splat of an unpacked vector
type. For example, for SVE when splatting the value -1 into all elements
of a vector of type <vscale x 2 x i32> the element type will get promoted
from i32 -> i64. In this case we want the splat value to sign-extend from
(i32 -1) -> (i64 -1), whereas currently it zero-extends from
(i32 -1) -> (i64 0xFFFFFFFF). Sign-extending the constant means we can use
a single mov immediate instruction.

New tests added here:

  CodeGen/AArch64/sve-vector-splat.ll

I believe we see some code quality improvements in these existing
tests too:

  CodeGen/AArch64/reduce-and.ll
  CodeGen/AArch64/unfold-masked-merge-vector-variablemask.ll

The apparent regressions in CodeGen/AArch64/fast-isel-cmp-vec.ll only
occur because the test disables codegen prepare and branch folding.

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

2 years ago[AArch64] Add tests for sinking mask And to smaller loads. NFC
David Green [Mon, 17 Jan 2022 11:04:14 +0000 (11:04 +0000)]
[AArch64] Add tests for sinking mask And to smaller loads. NFC

2 years ago[RISCV] Add tests for scalable-vector vwsub patterns
Fraser Cormack [Sat, 15 Jan 2022 11:46:30 +0000 (11:46 +0000)]
[RISCV] Add tests for scalable-vector vwsub patterns

This patch adds tests for patterns introduced in D117188.

Reviewed By: jacquesguan

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

2 years ago[clangd] Add option to use dirty file contents when building preambles.
Nathan James [Mon, 17 Jan 2022 10:55:35 +0000 (10:55 +0000)]
[clangd] Add option to use dirty file contents when building preambles.

Adds a option `use-dirty-preambles` to enable using unsaved in editor contents when building pre-ambles.
This enables a more seamless user experience when switching between header and implementation files and forgetting to save inbetween.
It's also in line with the LSP spec that states open files in the editor should be used instead of on the contents on disk - https://microsoft.github.io/language-server-protocol/overviews/lsp/overview/
For now the option is defaulted to off and hidden, Though I have a feeling it should be moved into the `.clangd` config and possibly defaulted to true.

Addresses https://github.com/clangd/clangd/issues/488

Reviewed By: sammccall

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

2 years ago[MLIR][Linalg] Handle Attribute in InitTensorOp
Lorenzo Chelini [Thu, 13 Jan 2022 07:43:29 +0000 (08:43 +0100)]
[MLIR][Linalg] Handle Attribute in InitTensorOp

In some cases, the result of an initTensorOp may have an attribute.
However, the Attribute was not passed to `inferResultType`, failing the
verifier. Therefore, propagate the Attribute to `inferResultType`.

Reviewed By: ftynse

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

2 years agoReland (2) "[AST] Add RParen loc for decltype AutoTypeloc.""
Haojian Wu [Fri, 14 Jan 2022 10:28:04 +0000 (11:28 +0100)]
Reland (2) "[AST] Add RParen loc for decltype AutoTypeloc.""

The patch was reverted because it caused a crash during PCH build -- we
missed to update the RParenLoc in TreeTransform<Derived>::TransformAutoType.

This relands 55d96ac and 37ec65e with a test and fix.

2 years agoRevert "[mlir] fix crash in PybindAdaptors.h"
Alex Zinenko [Mon, 17 Jan 2022 09:55:36 +0000 (10:55 +0100)]
Revert "[mlir] fix crash in PybindAdaptors.h"

This reverts commit 970cb57ef72c9045250e0492cb00127b49ddfea8.

Broke the buildbot.

2 years ago[MachineInstr] Don't include debug uses in bundle header (PR52817)
Nikita Popov [Mon, 10 Jan 2022 15:11:24 +0000 (16:11 +0100)]
[MachineInstr] Don't include debug uses in bundle header (PR52817)

Following the recommendation in
https://github.com/llvm/llvm-project/issues/52817#issuecomment-1007635426,
this excludes debug instructions when finalizing the bundle. As uses
in debug instructions don't have effects, they will no longer be
included in the BUNDLE header.

Fixes https://github.com/llvm/llvm-project/issues/52817.

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

2 years ago[clangd] Avoid a code completion crash
Haojian Wu [Mon, 17 Jan 2022 09:35:29 +0000 (10:35 +0100)]
[clangd] Avoid a code completion crash

This is a workaround (adding a newline to the eof) in clangd to avoid the code
completion crash, see https://github.com/clangd/clangd/issues/332.

In principle, this is a clang bug, we should fix it in clang, but it is not
trivial.

Reviewed By: sammccall

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

2 years ago[LLDB] Fix Python GIL-not-held issues
Ralf Grosse-Kunstleve [Tue, 11 Jan 2022 18:34:38 +0000 (19:34 +0100)]
[LLDB] Fix Python GIL-not-held issues

The GIL must be held when calling any Python C API functions. In multithreaded applications that use callbacks this requirement can easily be violated by accident. A general tool to ensure GIL health is not available, but patching Python Py_INCREF to add an assert provides a basic health check:

```
+int PyGILState_Check(void); /* Include/internal/pystate.h */
+
 #define Py_INCREF(op) (                         \
+    assert(PyGILState_Check()),                 \
     _Py_INC_REFTOTAL  _Py_REF_DEBUG_COMMA       \
     ((PyObject *)(op))->ob_refcnt++)

 #define Py_DECREF(op)                                   \
     do {                                                \
+        assert(PyGILState_Check());                     \
         PyObject *_py_decref_tmp = (PyObject *)(op);    \
         if (_Py_DEC_REFTOTAL  _Py_REF_DEBUG_COMMA       \
         --(_py_decref_tmp)->ob_refcnt != 0)             \
```

Adding this assertion causes around 50 test failures in LLDB. Adjusting the scope of things guarded by `py_lock` fixes them.

More background: https://docs.python.org/3/glossary.html#term-global-interpreter-lock

Patch by Ralf Grosse-Kunstleve

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

2 years ago[ValueTracking] Remove ComputeMultiple() function
Nikita Popov [Mon, 17 Jan 2022 09:00:54 +0000 (10:00 +0100)]
[ValueTracking] Remove ComputeMultiple() function

This function is no longer used since
499f1ca79f232faae09b1793a994d1a22ba403cd.

2 years ago[mlir] fix crash in PybindAdaptors.h
Alex Zinenko [Fri, 14 Jan 2022 16:25:41 +0000 (17:25 +0100)]
[mlir] fix crash in PybindAdaptors.h

The constructor function was being defined without indicating its "__init__"
name, which made it interpret it as a regular fuction rather than a
constructor. When overload resolution failed, Pybind would attempt to print the
arguments actually passed to the function, including "self", which is not
initialized since the constructor couldn't be called. This would result in
"__repr__" being called with "self" referencing an uninitialized MLIR C API
object, which in turn would cause undefined behavior when attempting to print
in C++.

Fix this by specifying the correct name.

This in turn uncovers the fact the the mechanism used by PybindAdaptors.h to
bind constructors directly as "__init__" functions taking "self" is deprecated
by Pybind. The modern method requires using "py::init", which seems to rely on
the C++ equivalent of the bound class to be available, which is not the case in
PybindAdaptors.h. A deeper inspection shows that the deprecation concerns
old-style pybind11 constructors that had to allocate the object using
placement new with "self" as memory. The PybindAdaptors.h only provides
extension classes and never allocates (the object construction is delegated to
the base class), so it does not use the deprecated functionality. Use the
implementation detail tag class to convince pybind11 that we are using the
modern constructor binding method and suppress the warning.

On top of that, the definition of the function was incorrectly indicated as the
method on the "None" object instead of being the method of its parent class.
This would result in a second problem when Pybind would attempt to print
warnings pointing to the parent class since the "None" does not have a
"__name__" field or its C API equivalent.

Fix this by specifying the correct parent class by looking it up by name in the
parent module.

Reviewed By: stellaraccident

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

2 years ago[RISCV] Add scheduler for bfp instruction in Zbf extension
Lian Wang [Mon, 17 Jan 2022 08:58:49 +0000 (08:58 +0000)]
[RISCV] Add scheduler for bfp instruction in Zbf extension

Reviewed By: craig.topper

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

2 years ago[GlobalOpt] Drop an incorrect check
Nikita Popov [Mon, 17 Jan 2022 09:09:44 +0000 (10:09 +0100)]
[GlobalOpt] Drop an incorrect check

This was a last-minute addition to D117249, and of course I ended
up inverting the condition in a way that caused an uninitialized
memory read.

I've dropped it entirely, as I don't think we actually care whether
the size is zero or not here. The previous code wasn't checking
this either.

2 years ago[GlobalOpt] Use generic type when converting malloc to global
Nikita Popov [Tue, 11 Jan 2022 13:24:49 +0000 (14:24 +0100)]
[GlobalOpt] Use generic type when converting malloc to global

The malloc to global transform currently determines the type of the
global by looking at bitcasts of the malloc. This is limited (the
transform fails if there are multiple different types) and
incompatible with opaque pointers.

My initial approach was to construct an appropriate struct type
based on usage in loads/stores. What this patch does instead is
to always create an [i8 x AllocSize] global, without trying to
guess types at all.

This does mean that other transforms that require a certain global
type may break. I fixed two of these in D117034 and D117223, which
I believe should be sufficient to avoid regressions. In particular,
the global SRA change should end up splitting the global into
naturally-typed sub-globals, at which point all other optimizations
should work.

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

2 years ago[docs] Clarify & update JSONCompilationDatabase docs
Sam McCall [Sun, 16 Jan 2022 15:00:25 +0000 (16:00 +0100)]
[docs] Clarify & update JSONCompilationDatabase docs

- prefer `arguments` over `command`, and add example
- clarify that there's no shell-unescaping of `arguments`

Fixes https://github.com/llvm/llvm-project/issues/53143

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

2 years ago[ELF] GnuHashTableSection: replace stable_sort with 2-key sort. NFC
Fangrui Song [Mon, 17 Jan 2022 08:34:42 +0000 (00:34 -0800)]
[ELF] GnuHashTableSection: replace stable_sort with 2-key sort. NFC

strTabOffset stabilizes llvm::sort. My x86-64 executable is 5+KiB smaller.

2 years ago[GlobalOpt] Make global SRA offset based
Nikita Popov [Thu, 13 Jan 2022 11:39:43 +0000 (12:39 +0100)]
[GlobalOpt] Make global SRA offset based

Currently global SRA uses the GEP structure to determine how to
split the global. This patch instead analyses the loads and stores
that are performed on the global, and collects which types are used
at which offset, and then splits the global according to those.

This is both more general, and works fine with opaque pointers.
This is also closer to how ordinary SROA is performed.

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

2 years ago[clangd] Better handling `\n` in the synthesized diagnostic message.
Haojian Wu [Mon, 17 Jan 2022 08:17:55 +0000 (09:17 +0100)]
[clangd] Better handling `\n` in the synthesized diagnostic message.

The newline-eof fix was rendered as "insert '...'", this patch
special-case it.

Reviewed By: sammccall

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

2 years ago[DSE] Remove alloc function check in canSkipDef()
Nikita Popov [Tue, 11 Jan 2022 11:34:11 +0000 (12:34 +0100)]
[DSE] Remove alloc function check in canSkipDef()

canSkipDef() currently skips inaccessiblememonly calls, but not
if they are allocation functions. This check was added in D103009,
but actually seems to be a leftover from a previous implementation
in D101440. canSkipDef() is not used on the storeIsNoop() path,
where the relevant transform ended up being implemented.

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

2 years agoCycleInfo: Fix trivial typo. NFC.
Carl Ritson [Mon, 17 Jan 2022 08:04:28 +0000 (17:04 +0900)]
CycleInfo: Fix trivial typo. NFC.

2 years ago[ELF] RelocationScanner::scanOne: replace rel.r_offset with offset. NFC
Fangrui Song [Mon, 17 Jan 2022 08:05:27 +0000 (00:05 -0800)]
[ELF] RelocationScanner::scanOne: replace rel.r_offset with offset. NFC

2 years ago[clang-format] Add a BlockIndent option to AlignAfterOpenBracket
Cameron Mulhern [Mon, 17 Jan 2022 07:54:51 +0000 (08:54 +0100)]
[clang-format] Add a BlockIndent option to AlignAfterOpenBracket

This style is similar to AlwaysBreak, but places closing brackets on new lines.

For example, if you have a multiline parameter list, clang-format currently only supports breaking per-parameter, but places the closing bracket on the line of the last parameter.

Function(
    param1,
    param2,
    param3);

A style supported by other code styling tools (e.g. rustfmt) is to allow the closing brackets to be placed on their own line, aiding the user in being able to quickly infer the bounds of the block of code.

Function(
    param1,
    param2,
    param3
);

For prior work on a similar feature, see: https://reviews.llvm.org/D33029.

Note: This currently only supports block indentation for closing parentheses.

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

2 years ago[ELF] Relocations: remove some cast<Undefined>. NFC
Fangrui Song [Mon, 17 Jan 2022 08:02:47 +0000 (00:02 -0800)]
[ELF] Relocations: remove some cast<Undefined>. NFC

2 years ago[ELF] De-template getAlternativeSpelling. NFC
Fangrui Song [Mon, 17 Jan 2022 07:56:24 +0000 (23:56 -0800)]
[ELF] De-template getAlternativeSpelling. NFC

2 years ago[RISCV] Add initial support for getRegUsageForType and getNumberOfRegisters
Kito Cheng [Sun, 9 Jan 2022 14:16:05 +0000 (22:16 +0800)]
[RISCV] Add initial support for getRegUsageForType and getNumberOfRegisters

Those two TTI hooks are used during vectorization for calculating
register pressure, the default implementation isn't consider for LMUL,
and that's also definitly wrong value for register number (all register class
are 8 registers).

So in this patch we tried to:

1. Calculate right register usage for vector type and scalar type.
2. Return right number of register for general purpose register and
   vector register.

Reviewed By: craig.topper

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

2 years ago[PowerPC] Allow -mfloat128 option for VSX targets
Qiu Chaofan [Mon, 17 Jan 2022 07:12:33 +0000 (15:12 +0800)]
[PowerPC] Allow -mfloat128 option for VSX targets

Targets with VSX feature but without native float128 instructions can
also use that type with supplementary libcalls. We don't enable it by
default now because Glibc assumes long double and float128 can be
implicitly converted in between, which is not available under default
'ibmlongdouble' semantics in clang.

This commit partly relands cbd93ce.

2 years ago[ELF] Remove unneeded SyntheticSection memset(*, 0, *)
Fangrui Song [Mon, 17 Jan 2022 06:51:57 +0000 (22:51 -0800)]
[ELF] Remove unneeded SyntheticSection memset(*, 0, *)

After the D33630 fallout was properly fixed by a4c5db30be4e216834b44e31b47304ea1b92635f.

Tested by D37462/D44986 tests, the new --no-rosegment test in build-id.s, and a few --rosegment/--no-rosegment programs.

2 years ago[ELF] Remove redundant fillTrap and memset(*, 0, *). NFC
Fangrui Song [Mon, 17 Jan 2022 06:37:31 +0000 (22:37 -0800)]
[ELF] Remove redundant fillTrap and memset(*, 0, *). NFC

The new tests in build-id.s would catch problems if we made a mistake here.

2 years ago[ELF][test] Add --build-id tests for -z separate-loadable-segments and --no-rosegment
Fangrui Song [Mon, 17 Jan 2022 06:36:22 +0000 (22:36 -0800)]
[ELF][test] Add --build-id tests for -z separate-loadable-segments and --no-rosegment

2 years ago[ELF] RelocationSection<ELFT>::writeTo: use unstable partition
Fangrui Song [Mon, 17 Jan 2022 05:44:19 +0000 (21:44 -0800)]
[ELF] RelocationSection<ELFT>::writeTo: use unstable partition

2 years agoReland https://reviews.llvm.org/D113825 after fixing the test expectations.
esmeyi [Mon, 17 Jan 2022 05:28:25 +0000 (00:28 -0500)]
Reland https://reviews.llvm.org/D113825 after fixing the test expectations.

2 years ago[ELF] Change some DenseMap<StringRef, *> to DenseMap<CachedHashStringRef, *>. NFC
Fangrui Song [Mon, 17 Jan 2022 05:19:01 +0000 (21:19 -0800)]
[ELF] Change some DenseMap<StringRef, *> to DenseMap<CachedHashStringRef, *>. NFC

2 years ago[ELF] StringTableSection: Use DenseMap<CachedHashStringRef> to avoid redundant hash...
Fangrui Song [Mon, 17 Jan 2022 05:02:05 +0000 (21:02 -0800)]
[ELF] StringTableSection: Use DenseMap<CachedHashStringRef> to avoid redundant hash computation

5~6% speedup when linking clang and chrome.

2 years ago[Driver][FreeBSD] -r: imply -nostdlib like GCC
Fangrui Song [Mon, 17 Jan 2022 03:44:48 +0000 (19:44 -0800)]
[Driver][FreeBSD] -r: imply -nostdlib like GCC

Similar to D116843 for Gnu.cpp

Reviewed By: dim

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

2 years ago[compiler-rt][cmake] Use `GNUInstallDirs` to support custom installation dirs
John Ericson [Sun, 16 Jan 2022 06:19:45 +0000 (06:19 +0000)]
[compiler-rt][cmake] Use `GNUInstallDirs` to support custom installation dirs

I am breaking apart D99484 so the cause of build failures is easier to
understand.

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

2 years ago[RISCV] Add patterns for vector widening integer multiply-add instructions
eopXD [Sat, 15 Jan 2022 20:12:22 +0000 (12:12 -0800)]
[RISCV] Add patterns for vector widening integer multiply-add instructions

Reviewed By: craig.topper

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

2 years agoPreserve argument locations when cloning a region.
Dominik Grewe [Sun, 16 Jan 2022 21:16:57 +0000 (21:16 +0000)]
Preserve argument locations when cloning a region.

Reviewed By: mehdi_amini

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

2 years ago[AttrBuilder] Remove unused removeAttributes() overload
Nikita Popov [Sun, 16 Jan 2022 20:32:54 +0000 (21:32 +0100)]
[AttrBuilder] Remove unused removeAttributes() overload

The idiomatic way would be to call remove() with an AttributeMask
constructed from an AttributeSet.

2 years ago[AttrBuilder] Remove unused hasAttributes() overload
Nikita Popov [Sun, 16 Jan 2022 19:58:38 +0000 (20:58 +0100)]
[AttrBuilder] Remove unused hasAttributes() overload

This is unused, and doesn't make a lot of sense as an API. The
usual pattern would be to combine the AttrBuilder(AttributeSet)
constructor with the overlaps() method.

2 years ago[DAGCombine] Refactor DAGCombiner::ReduceLoadWidth. NFCI
Bjorn Pettersson [Tue, 11 Jan 2022 21:59:18 +0000 (22:59 +0100)]
[DAGCombine] Refactor DAGCombiner::ReduceLoadWidth. NFCI

Update code comments in DAGCombiner::ReduceLoadWidth and refactor
the handling of SRL a bit. The refactoring is done with the intent
of adding support for folding away SRA by using SEXTLOAD in a
follow-up patch.

The function is also renamed as DAGCombiner::reduceLoadWidth.

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

2 years ago[clang][dataflow] Add transfer functions for bind temporary and static cast
Stanislav Gatev [Fri, 14 Jan 2022 18:27:39 +0000 (18:27 +0000)]
[clang][dataflow] Add transfer functions for bind temporary and static cast

This is part of the implementation of the dataflow analysis framework.
See "[RFC] A dataflow analysis framework for Clang AST" on cfe-dev.

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

2 years ago[MLIR] Simplex::getRationalSample: return an optional, empty if Simplex is empty
Arjun P [Wed, 12 Jan 2022 16:36:47 +0000 (22:06 +0530)]
[MLIR] Simplex::getRationalSample: return an optional, empty if Simplex is empty

2 years ago[gn build] Port e6b153947dfa
LLVM GN Syncbot [Sun, 16 Jan 2022 16:03:49 +0000 (16:03 +0000)]
[gn build] Port e6b153947dfa

2 years agoRevert [LLD] Remove global state in lldCommon
Alexandre Ganea [Sun, 16 Jan 2022 16:03:06 +0000 (11:03 -0500)]
Revert [LLD] Remove global state in lldCommon

It seems to be causing issues on https://lab.llvm.org/buildbot/#/builders/123/builds/8383

2 years ago[LLD] Supplement with more comments. Clarify the intention in f860fe362282ed69b9d4503...
Alexandre Ganea [Sun, 16 Jan 2022 14:17:29 +0000 (09:17 -0500)]
[LLD] Supplement with more comments. Clarify the intention in f860fe362282ed69b9d4503a20e5d20b9a041189.

2 years agoResolve lit failures in clang-aarch64*
hyeongyu kim [Sun, 16 Jan 2022 14:02:55 +0000 (23:02 +0900)]
Resolve lit failures in clang-aarch64*

2 years ago[gn build] Port f860fe362282
LLVM GN Syncbot [Sun, 16 Jan 2022 13:58:27 +0000 (13:58 +0000)]
[gn build] Port f860fe362282

2 years ago[LLD] Remove global state in lldCommon
Alexandre Ganea [Sun, 16 Jan 2022 02:47:54 +0000 (21:47 -0500)]
[LLD] Remove global state in lldCommon

Move all variables at file-scope or function-static-scope into a hosting structure (lld::CommonLinkerContext) that lives at lldMain()-scope. Drivers will inherit from this structure and add their own global state, in the same way as for the existing COFFLinkerContext.

See discussion in https://lists.llvm.org/pipermail/llvm-dev/2021-June/151184.html

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

2 years ago[LV] Restore metadata to disable runtime unrolling for epilogue loop.
Florian Hahn [Sun, 16 Jan 2022 13:14:16 +0000 (13:14 +0000)]
[LV] Restore metadata to disable runtime unrolling for epilogue loop.

After d4a8fc3a87a1 LV stopped adding metadata to disable runtime
unrolling to the vectorized epilogue loop. This was missed because
278aa65cc495 removed the relevant test coverage.

This patch fixes that by adding the relevant metadata after
vector loop generation.

2 years ago[msan] reflect the changed flag to the tests.
hyeongyu kim [Sun, 16 Jan 2022 11:42:35 +0000 (20:42 +0900)]
[msan] reflect the changed flag to the tests.

1b1c8d changed `enable-noundef-analysis` flag to
`disable-noundef-analysis`.  noundef_analysis.cpp was using old
`enable-noundef-analysis` flag and this patch fixes it.

2 years ago[clang-format] Add return code to git-clang-format
owenca [Sun, 16 Jan 2022 03:41:06 +0000 (19:41 -0800)]
[clang-format] Add return code to git-clang-format

https://github.com/llvm/llvm-project/issues/53220

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

2 years ago[LV] Move AddRuntimeUnrollDisableMetaData so it can be used earlier (NFC)
Florian Hahn [Sun, 16 Jan 2022 10:28:55 +0000 (10:28 +0000)]
[LV] Move AddRuntimeUnrollDisableMetaData so it can be used earlier (NFC)

Move up the definition of AddRuntimeUnrollDisableMetaData, so it can be
re-used earlier in the file in a follow-up patch.

2 years ago[Clang/Test]: Rename enable_noundef_analysis to disable-noundef-analysis and turn...
hyeongyu kim [Sun, 16 Jan 2022 09:53:11 +0000 (18:53 +0900)]
[Clang/Test]: Rename enable_noundef_analysis to disable-noundef-analysis and turn it off by default

Turning on `enable_noundef_analysis` flag allows better codegen by removing freeze instructions.
I modified clang by renaming `enable_noundef_analysis` flag to `disable-noundef-analysis` and turning it off by default.

Test updates are made as a separate patch: D108453

Reviewed By: eugenis

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

2 years ago[ELF] Remove forEachRelSec. NFC
Fangrui Song [Sun, 16 Jan 2022 08:28:47 +0000 (00:28 -0800)]
[ELF] Remove forEachRelSec. NFC

2 years ago[ELF] Remove !isLazy() condition from computeBinding
Fangrui Song [Sun, 16 Jan 2022 07:58:15 +0000 (23:58 -0800)]
[ELF] Remove !isLazy() condition from computeBinding

Seems applicable since we demote lazy symbols to Undefined (D111365).

2 years ago[ELF] Remove config->relocatable condition from Symbol::computeBinding
Fangrui Song [Sun, 16 Jan 2022 07:49:47 +0000 (23:49 -0800)]
[ELF] Remove config->relocatable condition from Symbol::computeBinding

2 years ago[ELF] Speed up Symbol::computeBinding. NFC
Fangrui Song [Sun, 16 Jan 2022 07:40:43 +0000 (23:40 -0800)]
[ELF] Speed up Symbol::computeBinding. NFC

When computeBinding is inlined into includeInDynsym and computeIsPreemptible,
the optimizer can remove the config->gnuUnique load.

2 years ago[ELF] Slightly speed up Symbol::includeInDynsym. NFC
Fangrui Song [Sun, 16 Jan 2022 07:32:48 +0000 (23:32 -0800)]
[ELF] Slightly speed up Symbol::includeInDynsym. NFC

2 years ago[ELF] Simplify Symbol::includeInDynsym
Fangrui Song [Sun, 16 Jan 2022 07:27:45 +0000 (23:27 -0800)]
[ELF] Simplify Symbol::includeInDynsym

2 years ago[ELF] Optimize -z combreloc
Fangrui Song [Sun, 16 Jan 2022 06:33:51 +0000 (22:33 -0800)]
[ELF] Optimize -z combreloc

Sorting dynamic relocations is a bottleneck. Simplifying the comparator improves
performance. Linking clang is 4~5% faster with --threads=8.

This change may shuffle R_MIPS_REL32 for Mips and is a NFC for non-Mips.

2 years ago[X86] Pre-checkin test case for combining const operand to VNNI
Luo, Yuanke [Wed, 12 Jan 2022 06:25:42 +0000 (14:25 +0800)]
[X86] Pre-checkin test case for combining const operand to VNNI
instruction.

2 years agoRevert "[cmake] Use `GNUInstallDirs` to support custom installation dirs."
John Ericson [Sun, 16 Jan 2022 05:48:30 +0000 (05:48 +0000)]
Revert "[cmake] Use `GNUInstallDirs` to support custom installation dirs."

https://lab.llvm.org/buildbot/#/builders/46/builds/21146 Still have
this odd error, not sure how to reproduce, so I will just try breaking
up my patch.

This reverts commit 4a678f8072004eff9214c1a4e1836a14abb69535.

2 years ago[cmake] Use `GNUInstallDirs` to support custom installation dirs.
John Ericson [Sat, 15 Jan 2022 07:37:48 +0000 (07:37 +0000)]
[cmake] Use `GNUInstallDirs` to support custom installation dirs.

This is the original patch in my GNUInstallDirs series, now last to merge as the final piece!

It arose as a new draft of D28234. I initially did the unorthodox thing of pushing to that when I wasn't the original author, but since I ended up

 - Using `GNUInstallDirs`, rather than mimicking it, as the original author was hesitant to do but others requested.

 - Converting all the packages, not just LLVM, effecting many more projects than LLVM itself.

I figured it was time to make a new revision.

I have used this patch series (and many back-ports) as the basis of https://github.com/NixOS/nixpkgs/pull/111487 for my distro (NixOS), which was merged last spring (2021). It looked like people were generally on board in D28234, but I make note of this here in case extra motivation is useful.

---

As pointed out in the original issue, a central tension is that LLVM already has some partial support for these sorts of things. Variables like `COMPILER_RT_INSTALL_PATH` have already been dealt with. Variables like `LLVM_LIBDIR_SUFFIX` however, will require further work, so that we may use `CMAKE_INSTALL_LIBDIR`.

These remaining items will be addressed in further patches. What is here is now rote and so we should get it out of the way before dealing more intricately with the remainder.

Reviewed By: #libunwind, #libc, #libc_abi, compnerd

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

2 years ago[ORC-RT] Remove some stale comments.
Lang Hames [Sun, 16 Jan 2022 03:03:15 +0000 (14:03 +1100)]
[ORC-RT] Remove some stale comments.

We switched to SPS serialization for these functions in 089acf25223d2.

2 years ago[ORC-RT] Update WrapperFunctionCall for 089acf25223.
Lang Hames [Sun, 16 Jan 2022 01:56:06 +0000 (12:56 +1100)]
[ORC-RT] Update WrapperFunctionCall for 089acf25223.

089acf25223 updated WrapperFunctionCall to carry arbitrary argument payloads
(rather than plain address ranges). This commit implements the corresponding
update for the ORC runtime.

2 years ago[ELF] Simplify elf::link exit. NFC
Fangrui Song [Sun, 16 Jan 2022 01:59:05 +0000 (17:59 -0800)]
[ELF] Simplify elf::link exit. NFC

2 years ago[SelectionDAG] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds after...
Fangrui Song [Sun, 16 Jan 2022 01:13:09 +0000 (17:13 -0800)]
[SelectionDAG] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds after D117235

2 years ago[RISCV] Add RISCVISD::BFPW to ComputeNumSignBitsForTargetNode.
Craig Topper [Sat, 15 Jan 2022 21:50:38 +0000 (13:50 -0800)]
[RISCV] Add RISCVISD::BFPW to ComputeNumSignBitsForTargetNode.

2 years ago[lldb] Set result error state in 'frame variable'
Dave Lee [Fri, 7 Jan 2022 03:38:31 +0000 (19:38 -0800)]
[lldb] Set result error state in 'frame variable'

Ensure that errors in `frame variable` are reflected in result object.

The statistics for `frame variable` show invocations as being successful, even
when executing one of the error paths.

This change replaces `result.GetErrorStream()` with `result.AppendError()`,
which also sets the status to `eReturnStatusFailed`.

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

Recommitting after D116901 and D116863.

(cherry picked from commit 2c7d10c41278181e3e45c68f28b501cd95193a8a)

2 years ago[AttrBuilder] Remove ctor accepting AttributeList and Index
Nikita Popov [Sat, 15 Jan 2022 21:14:16 +0000 (22:14 +0100)]
[AttrBuilder] Remove ctor accepting AttributeList and Index

Use the AttributeSet constructor instead. There's no good reason
why AttrBuilder itself should exact the AttributeSet from the
AttributeList. Moving this out of the AttrBuilder generally results
in cleaner code.

2 years ago[AArch64] clang support for Armv8.8/9.3 MOPS
Lucas Prates [Thu, 23 Sep 2021 12:34:30 +0000 (13:34 +0100)]
[AArch64] clang support for Armv8.8/9.3 MOPS

This introduces clang command line support for the new Armv8.8-A and
Armv9.3-A instructions for standardising memcpy, memset and memmove
operations, which was previously introduced into LLVM in
https://reviews.llvm.org/D116157.

Patch by Lucas Prates, Tomas Matheson and Son Tuan Vu.

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

2 years ago[lldb] Use PlatformMacOSX for Mac Catalyst
Jonas Devlieghere [Sat, 15 Jan 2022 19:41:37 +0000 (11:41 -0800)]
[lldb] Use PlatformMacOSX for Mac Catalyst

Use PlatformMacOSX for Mac Catalyst apps on both Intel (x86) and Apple
Silicon (arm64).

2 years agoDisable the MLIR ExecutionEngine library when the native target is not configured
Mehdi Amini [Fri, 14 Jan 2022 07:47:47 +0000 (07:47 +0000)]
Disable the MLIR ExecutionEngine library when the native target is not configured

The execution engine would not be functional anyway, we're already
disabling the tests, this also disable the rest of the code.

Anecdotally this reduces the number of static library built when the
builtin target is disabled goes from 236 to 218.

Here is the complete list of LLVM targets built when running
`ninja check-mlir`:

libLLVMAggressiveInstCombine.a
libLLVMAnalysis.a
libLLVMAsmParser.a
libLLVMBinaryFormat.a
libLLVMBitReader.a
libLLVMBitstreamReader.a
libLLVMBitWriter.a
libLLVMCore.a
libLLVMDebugInfoCodeView.a
libLLVMDebugInfoDWARF.a
libLLVMDemangle.a
libLLVMFileCheck.a
libLLVMFrontendOpenMP.a
libLLVMInstCombine.a
libLLVMIRReader.a
libLLVMMC.a
libLLVMMCParser.a
libLLVMObject.a
libLLVMProfileData.a
libLLVMRemarks.a
libLLVMScalarOpts.a
libLLVMSupport.a
libLLVMTableGen.a
libLLVMTableGenGlobalISel.a
libLLVMTextAPI.a
libLLVMTransformUtils.a

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

2 years ago[libc++] Add _LIBCPP_HIDE_FROM_ABI to in_in_result
Nikolas Klauser [Sat, 15 Jan 2022 16:52:24 +0000 (17:52 +0100)]
[libc++] Add _LIBCPP_HIDE_FROM_ABI to in_in_result

Add `_LIBCPP_HIDE_FROM_ABI` to `in_in_result` conversion operators

Reviewed By: Quuxplusone, Mordante, #libc

Spies: libcxx-commits

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

2 years ago[ELF] Make some diagnostics follow the convention
Fangrui Song [Sat, 15 Jan 2022 18:46:25 +0000 (10:46 -0800)]
[ELF] Make some diagnostics follow the convention

2 years ago[CMake][LLDB] Resolve install conflict when `LLDB_BUILD_FRAMEWORK=ON`
paperchalice [Sat, 15 Jan 2022 18:40:48 +0000 (10:40 -0800)]
[CMake][LLDB] Resolve install conflict when `LLDB_BUILD_FRAMEWORK=ON`

Try to fix https://github.com/llvm/llvm-project/issues/108

Install python scripts into canonical resource path

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