platform/upstream/llvm.git
2 years ago[PowerPC] PPCTLSDynamicCall does not preserve LiveIntervals
Jay Foad [Thu, 23 Jun 2022 10:28:02 +0000 (11:28 +0100)]
[PowerPC] PPCTLSDynamicCall does not preserve LiveIntervals

According to D127731, PPCTLSDynamicCall does not preserve
LiveIntervals, so stop claiming that it does and remove the code
that tried to repair them. NFCI.

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

2 years ago[AMDGPU] NFC. Add a test of the error message for assembling global_atomic_cmpswap_x2
Joe Nash [Tue, 5 Jul 2022 18:15:07 +0000 (14:15 -0400)]
[AMDGPU] NFC. Add a test of the error message for assembling global_atomic_cmpswap_x2

2 years ago[Libomptarget][NFC] Make Libomptarget use the LLVM naming convention
Joseph Huber [Fri, 1 Jul 2022 15:48:15 +0000 (11:48 -0400)]
[Libomptarget][NFC] Make Libomptarget use the LLVM naming convention

Libomptarget grew out of a project that was originally not in LLVM. As
we develop libomptarget this has led to an increasingly large clash
between the naming conventions used. This patch fixes most of the
variable names that did not confrom to the LLVM standard, that is
`VariableName` for variables and `functionName` for functions.

This patch was primarily done using my editor's linting messages, if
there are any issues I missed arising from the automation let me know.

Reviewed By: saiislam

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

2 years ago[pseudo] Add error-recovery framework & brace-based recovery
Sam McCall [Wed, 29 Jun 2022 11:48:00 +0000 (13:48 +0200)]
[pseudo] Add error-recovery framework & brace-based recovery

The idea is:

- a parse failure is detected when all heads die when trying to shift the next token
- we can recover by choosing a nonterminal we're partway through parsing, and
  determining where it ends through nonlocal means (e.g. matching brackets)
- we can find candidates by walking up the stack from the (ex-)heads
- the token range is defined using heuristics attached to grammar rules
- the unparsed region is represented in the forest by an Opaque node

This patch has the core GLR functionality.
It does not allow recovery heuristics to be attached as extensions to
the grammar, but rather infers a brace-based heuristic.

Expected followups:

- make recovery heuristics grammar extensions (depends on D127448)
- add recovery to our grammar for bracketed constructs and sequence nodes
- change the structure of our augmented `_ := start` rules to eliminate some
  special-cases in glrParse.
- (if I can work out how): avoid some spurious recovery cases described in comments

(Previously mistakenly committed as a0f4c10ae227a62c2a63611e64eba83f0ff0f577)

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

2 years ago[InstCombine] avoid conflict between CHECK prefix and value name in test file; NFC
Sanjay Patel [Tue, 5 Jul 2022 17:35:47 +0000 (13:35 -0400)]
[InstCombine] avoid conflict between CHECK prefix and value name in test file; NFC

Tests can fail if a value name (%sqrt becomes SQRT) and that is the same as the RUN prefix.

2 years ago[InstCombine] add tests for sqrt libcalls; NFC
Sanjay Patel [Tue, 5 Jul 2022 13:44:29 +0000 (09:44 -0400)]
[InstCombine] add tests for sqrt libcalls; NFC

2 years ago[SimplifyCFG] Skip hoisting common instructions that return token type
Yuanfang Chen [Tue, 5 Jul 2022 17:56:19 +0000 (10:56 -0700)]
[SimplifyCFG] Skip hoisting common instructions that return token type

By LangRef, hoisting token-returning instructions obsures the origin
so it should be skipped. Found this issue while investigating a
CoroSplit pass crash.

Reviewed By: nikic

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

2 years ago[mlir][tblgen] Consistently use `$_ctxt` instead of `$_ctx`
Markus Böck [Tue, 5 Jul 2022 18:04:50 +0000 (20:04 +0200)]
[mlir][tblgen] Consistently use `$_ctxt` instead of `$_ctx`

With the exceptions of AttrOrTypeParameter and DerivedAttr, all of MLIR consistently uses $_ctxt as the substitute variable for the MLIRContext in TableGen C++ code.
Usually this does not matter unless one where to reuse some code in multiple fields but it is still needlessly inconsistent and prone to error.

This patch fixes that by consistently using _$ctxt everywhere.

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

2 years ago[LinkerWrapper] Add AMDGPU specific options to the LLD invocation
Joseph Huber [Thu, 30 Jun 2022 15:41:38 +0000 (11:41 -0400)]
[LinkerWrapper] Add AMDGPU specific options to the LLD invocation

We use LLD to perform AMDGPU linking. This linker accepts some arguments
through the `-plugin-opt` facilities. These options match what `Clang`
will output when given the same input.

Reviewed By: yaxunl

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

2 years ago[llvm-lib] Ignore /NODEFAULTLIB flag
Pengxuan Zheng [Sat, 2 Jul 2022 02:23:03 +0000 (19:23 -0700)]
[llvm-lib] Ignore /NODEFAULTLIB flag

It doesn't look like there is anything llvm-lib needs to handle based on
Microsoft's description of the flag.

https://docs.microsoft.com/en-us/cpp/build/reference/managing-a-library?view=msvc-170

Reviewed By: thakis

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

2 years agoRevert "[lldb/test] Don't use preexec_fn for launching inferiors"
Jonas Devlieghere [Tue, 5 Jul 2022 17:12:57 +0000 (10:12 -0700)]
Revert "[lldb/test] Don't use preexec_fn for launching inferiors"

This reverts commit b15b1421bc9a11b318b65b489e5fd58dd917db1f because it
breaks GreenDragon [1]. The bot has been red for several days, so
reverting to green while I take a look.

[1] https://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/45012/

2 years ago[analyzer] Fix assertion in simplifySymbolCast
Gabor Marton [Wed, 1 Jun 2022 14:29:51 +0000 (16:29 +0200)]
[analyzer] Fix assertion in simplifySymbolCast

Depends on D128068.
Added a new test code that fails an assertion in the baseline.
That is because `getAPSIntType` works only with integral types.

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

2 years ago[analyzer] Do not emit redundant SymbolCasts
Gabor Marton [Fri, 17 Jun 2022 16:19:55 +0000 (18:19 +0200)]
[analyzer] Do not emit redundant SymbolCasts

In `RegionStore::getBinding` we call `evalCast` unconditionally to align
the stored value's type to the one that is being queried. However, the
stored type might be the same, so we may end up having redundant
`SymbolCasts` emitted.

The solution is to check whether the `to` and `from` type are the same
in `makeNonLoc`.

Note, we can't just do type equivalence check at the beginning of `evalCast`
because when `evalCast` is called from `getBinding` then the original type
(`OriginalTy`) is not set, so one operand is missing for the comparison. In
`evalCastSubKind(nonloc::SymbolVal)` when the original type is not set,
we get the `from` type via `SymbolVal::getType()`.

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

2 years ago[gn build] Port b8dbc6ffea93
LLVM GN Syncbot [Tue, 5 Jul 2022 16:35:01 +0000 (16:35 +0000)]
[gn build] Port b8dbc6ffea93

2 years ago[LSR] Fix bug for optimizing unused IVs to final values
Zaara Syeda [Tue, 5 Jul 2022 16:16:08 +0000 (12:16 -0400)]
[LSR] Fix bug for optimizing unused IVs to final values

This is a fix for a crash reported for https://reviews.llvm.org/D118808
The fix is to only consider PHINodes which are induction phis.
Fixes #55529

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

2 years ago[HLSL] Add ExternalSemaSource & vector alias
Chris Bieneman [Thu, 16 Jun 2022 20:35:48 +0000 (15:35 -0500)]
[HLSL] Add ExternalSemaSource & vector alias

HLSL vector types are ext_vector types, but they are also exposed via a
template syntax `vector<T, #>`. This is morally equavalent to the code:

```c++
template <typename T, int Size>
using vector = T __attribute__((ext_vector_type(Size)))
```

The problem is that templates aren't supported before HLSL 2021, and
type aliases still aren't supported in HLSL.

To resolve this (and other issues where HLSL can't represent its own
types), we rely on an external AST & Sema source being registered for
HLSL code.

This patch adds the HLSLExternalSemaSource and registers the vector
type alias.

Depends on D127802

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

2 years ago[mlir][LLVMIR] Apply CallOp/CallableInterface on suitable operations
Min-Yih Hsu [Fri, 1 Jul 2022 22:29:02 +0000 (15:29 -0700)]
[mlir][LLVMIR] Apply CallOp/CallableInterface on suitable operations

  - Applying CallOpInterface on CallOp and InvokeOp.
  - Applying CallableInterface on LLVMFuncOp.

We're testing the changes using CallGraph, which uses both interfaces.

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

2 years ago[AMDGPU] GFX11 trivial NFC tweaks
Jay Foad [Tue, 5 Jul 2022 16:17:01 +0000 (17:17 +0100)]
[AMDGPU] GFX11 trivial NFC tweaks

A few miscellaneous comment, whitespace and indentation tweaks.

2 years ago[Thumb2] Remove unneeded IR from MIR test (NFC)
Nikita Popov [Tue, 5 Jul 2022 16:17:02 +0000 (18:17 +0200)]
[Thumb2] Remove unneeded IR from MIR test (NFC)

Apart from the global, the IR does not appear to be relevant for
the test. Drop it, to remove the dependence on the sdiv constant
expression.

2 years ago[VectorCombine] Improve shuffle select shuffle-of-shuffles
David Green [Tue, 5 Jul 2022 16:16:18 +0000 (17:16 +0100)]
[VectorCombine] Improve shuffle select shuffle-of-shuffles

This in an extension to the code added in D123911 which added vector
combine folding of shuffle-select patterns, attempting to reduce the
total amount of shuffling required in patterns like:
  %x = shuffle %i1, %i2
  %y = shuffle %i1, %i2
  %a = binop %x, %y
  %b = binop %x, %y
  shuffle %a, %b, selectmask

This patch extends the handing of shuffles that are dependent on one
another, which can arise from the SLP vectorizer, as-in:
  %x = shuffle %i1, %i2
  %y = shuffle %x

The input shuffles can also be emitted, in which case they are treated
like identity shuffles. This patch also attempts to calculate a better
ordering of input shuffles, which can help getting lower cost input
shuffles, pushing complex shuffles further down the tree.

This is a recommit with some additional checks for supported forms and
out-of-bounds mask elements, with some extra tests.

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

2 years ago[Assembler] Name globals in test (NFC)
Nikita Popov [Tue, 5 Jul 2022 16:01:25 +0000 (18:01 +0200)]
[Assembler] Name globals in test (NFC)

This makes it easier to modify the test without having to renumber
everything.

2 years agoRevert "[mlir][sparse] add more unittest cases to sparse dialect merger"
Stella Stamenova [Tue, 5 Jul 2022 15:52:54 +0000 (08:52 -0700)]
Revert "[mlir][sparse] add more unittest cases to sparse dialect merger"

This broke the windows mlir bot: https://lab.llvm.org/buildbot/#/builders/13/builds/22743

This reverts commit daeb2dcea09820d92f81db84623cf1c6df825e14 and 537db49596f65a05c0309cf3333fc44f1657e999.

2 years ago[DAG] visitREM - use isAllOnesOrAllOnesSplat instead of isConstOrConstSplat
Simon Pilgrim [Tue, 5 Jul 2022 15:44:21 +0000 (16:44 +0100)]
[DAG] visitREM - use isAllOnesOrAllOnesSplat instead of isConstOrConstSplat

We were only using the N1C scalar/splat value once, so for clarity use isAllOnesOrAllOnesSplat instead if we actually need it.

2 years ago[DAG] foldAddSubOfSignBit - don't bother creating the new shift node unless constant...
Simon Pilgrim [Tue, 5 Jul 2022 15:27:30 +0000 (16:27 +0100)]
[DAG] foldAddSubOfSignBit - don't bother creating the new shift node unless constant folding succeeds

Noticed by inspection - the new shift is only ever used if the constant fold occurs

2 years ago[MLIR][Presburger] Rename attachments to identifiers in PresburgerSpace
Groverkss [Tue, 5 Jul 2022 15:15:43 +0000 (16:15 +0100)]
[MLIR][Presburger] Rename attachments to identifiers in PresburgerSpace

"attachment" was a temporary name chosen for the information attached to a
variable in a PresburgerSpace. After the disambiguation of "variables" and
"identifiers" in PresburgerSpace, we use the word "identifiers" for this
information, since this information is used to "identify" these variables.

Reviewed By: arjunp

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

2 years ago[AMDGPU] Add patterns for GFX11 v_minmax and v_maxmin instructions
Jay Foad [Thu, 23 Jun 2022 14:32:50 +0000 (15:32 +0100)]
[AMDGPU] Add patterns for GFX11 v_minmax and v_maxmin instructions

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

2 years ago[BUILD] Add missed CMakeLists.txt change from dfb77f2
Ben Dunbobbin [Tue, 5 Jul 2022 15:01:27 +0000 (16:01 +0100)]
[BUILD] Add missed CMakeLists.txt change from dfb77f2

See: https://reviews.llvm.org/D128195

2 years ago[mlir][memref][NFC] Silence compiler warnings
Matthias Springer [Tue, 5 Jul 2022 15:01:40 +0000 (17:01 +0200)]
[mlir][memref][NFC] Silence compiler warnings

2 years ago[mlir][interfaces][NFC] Remove ViewLikeInterface::expandToRank
Matthias Springer [Tue, 5 Jul 2022 14:54:38 +0000 (16:54 +0200)]
[mlir][interfaces][NFC] Remove ViewLikeInterface::expandToRank

This helper function is no longer needed.

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

2 years agoRevert "[SimplifyCFG] Thread branches on same condition in more cases (PR54980)"
Nikita Popov [Tue, 5 Jul 2022 08:56:54 +0000 (10:56 +0200)]
Revert "[SimplifyCFG] Thread branches on same condition in more cases (PR54980)"

This reverts commit 4e545bdb355a470d601e9bb7f7b2693c99e61a3e.

The newly added test is the third infinite combine loop caused by
this change. In this case, it's a combination of the branch to
common dest and jump threading folds that keeps peeling off loop
iterations.

The core problem here is that we ideally would not thread over
loop backedges, both because it is potentially non-profitable
(it may break canonical loop structure) and because it may result
in these kinds of loops. Unfortunately, due to the lack of a
dominator tree in SimplifyCFG, there is no good way to prevent
this. While we have LoopHeaders, this is an optional structure and
we don't do a good job of keeping it up to date. It would be fine
for a profitability check, but is not suitable for a correctness
check.

So for now I'm just giving up here, as I don't see a good way to
robustly prevent infinite combine loops.

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

2 years ago[mlir][memref] Improve type inference for rank-reducing subviews
Matthias Springer [Tue, 5 Jul 2022 14:39:29 +0000 (16:39 +0200)]
[mlir][memref] Improve type inference for rank-reducing subviews

The result shape of a rank-reducing subview cannot be inferred in the general case. Just the result rank is not enough. The only thing that we can infer is the layout map.

This change also improves the bufferization patterns of tensor.extract_slice and tensor.insert_slice to fully support rank-reducing operations.

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

2 years ago[AMDGPU] gfx11 CodeGen for new DPP instructions
Joe Nash [Mon, 27 Jun 2022 17:20:21 +0000 (13:20 -0400)]
[AMDGPU] gfx11 CodeGen for new DPP instructions

Modifies the GCNDPPCombine pass to enable DPP formation for the new DPP
instruction in gfx11, namely VOP3 encoded instructions with DPP and VOPC
with DPP.

Depends on D128656

Reviewed By: #amdgpu, rampitec

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

2 years ago[mlir][tensor][bufferize][NFC] Clean up test case
Matthias Springer [Tue, 5 Jul 2022 13:36:02 +0000 (15:36 +0200)]
[mlir][tensor][bufferize][NFC] Clean up test case

Insert -split-input-file flag to make the test cases more stable.

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

2 years ago[gn build] Port d1af09ad9617
LLVM GN Syncbot [Tue, 5 Jul 2022 13:57:20 +0000 (13:57 +0000)]
[gn build] Port d1af09ad9617

2 years ago[pseudo] Implement guard extension.
Haojian Wu [Fri, 1 Jul 2022 12:50:07 +0000 (14:50 +0200)]
[pseudo] Implement guard extension.

- Extend the GLR parser to allow conditional reduction based on the
  guard functions;
- Implement two simple guards (contextual-override/final) for cxx.bnf;
- layering: clangPseudoCXX depends on clangPseudo (as the guard function need
  to access the TokenStream);

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

2 years ago[ConstExpr] Don't create div/rem expressions
Nikita Popov [Wed, 29 Jun 2022 12:27:04 +0000 (14:27 +0200)]
[ConstExpr] Don't create div/rem expressions

This removes creation of udiv/sdiv/urem/srem constant expressions,
in preparation for their removal. I've added a
ConstantExpr::isDesirableBinOp() predicate to determine whether
an expression should be created for a certain operator.

With this patch, div/rem expressions can still be created through
explicit IR/bitcode, forbidding them entirely will be the next step.

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

2 years ago[clang][dataflow] Handle null pointers of type std::nullptr_t
Eric Li [Mon, 4 Jul 2022 20:46:07 +0000 (20:46 +0000)]
[clang][dataflow] Handle null pointers of type std::nullptr_t

Treat `std::nullptr_t` as a regular scalar type to avoid tripping
assertions when analyzing code that uses `std::nullptr_t`.

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

2 years ago[AMDGPU] gfx11 Generate VOPD Instructions
Joe Nash [Thu, 23 Jun 2022 19:57:01 +0000 (15:57 -0400)]
[AMDGPU] gfx11 Generate VOPD Instructions

We form VOPD  instructions in the GCNCreateVOPD pass by combining
back-to-back component instructions. There are strict register
constraints for creating a legal VOPD, namely that the matching operands
(e.g. src0x and src0y, src1x and src1y) must be in different register
banks. We add a PostRA scheduler
mutation to put possible VOPD components back-to-back.

Depends on D128442, D128270

Reviewed By: #amdgpu, rampitec

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

2 years ago[pseudo] Fix the build for the benchmark tool.
Haojian Wu [Tue, 5 Jul 2022 13:40:02 +0000 (15:40 +0200)]
[pseudo] Fix the build for the benchmark tool.

2 years ago[RuntimeDyld] Fix R_AARCH64_TSTBR14 relocation
Vladislav Khmelevsky [Tue, 28 Jun 2022 16:54:59 +0000 (19:54 +0300)]
[RuntimeDyld] Fix R_AARCH64_TSTBR14 relocation

Wrong mask was used to get branch instruction imm value.

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

2 years ago[SCEV] Fix isImpliedViaMerge() with values from previous iteration (PR56242)
Nikita Popov [Mon, 27 Jun 2022 13:09:24 +0000 (15:09 +0200)]
[SCEV] Fix isImpliedViaMerge() with values from previous iteration (PR56242)

When trying to prove an implied condition on a phi by proving it
for all incoming values, we need to be careful about values coming
from a backedge, as these may refer to a previous loop iteration.
A variant of this issue was fixed in D101829, but the dominance
condition used there isn't quite right: It checks that the value
dominates the incoming block, which doesn't exclude backedges
(values defined in a loop will usually dominate the loop latch,
which is the incoming block of the backedge).

Instead, we should be checking for domination of the phi block.
Any values defined inside the loop will not dominate the loop
header phi.

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

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

2 years ago[Compiler-RT] Remove FlushViewOfFile call when unmapping gcda files on win32.
Andi-Bogdan Postelnicu [Tue, 5 Jul 2022 09:07:15 +0000 (09:07 +0000)]
[Compiler-RT]  Remove FlushViewOfFile call when unmapping gcda files on win32.

This patch was pushed for calixte@mozilla.com

- this function (Windows only) is called when gcda are dumped on disk;
- according to its documentation, it's only useful in case of hard failures, this is highly improbable;
- it drastically decreases the time in the tests and consequently it avoids timeouts when we use slow disks.

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

2 years ago[pseudo] Use the prebuilt cxx grammar for the lit tests, NFC.
Haojian Wu [Mon, 4 Jul 2022 12:15:51 +0000 (14:15 +0200)]
[pseudo] Use the prebuilt cxx grammar for the lit tests, NFC.

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

2 years ago[AMDGPU][NFC] Refine matching SMRD offsets.
Ivan Kosarev [Tue, 5 Jul 2022 13:06:36 +0000 (14:06 +0100)]
[AMDGPU][NFC] Refine matching SMRD offsets.

Tell the matcher what we are looking for instead of matching everything
and then discarding the result if doesn't fit.

Reviewed By: foad

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

2 years ago[AMDGPU][GlobalISel] Support register offsets for SMRDs.
Ivan Kosarev [Tue, 5 Jul 2022 12:39:46 +0000 (13:39 +0100)]
[AMDGPU][GlobalISel] Support register offsets for SMRDs.

Reviewed By: foad

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

2 years ago[pseudo] Eliminate LRTable::Action. NFC
Sam McCall [Mon, 4 Jul 2022 18:35:40 +0000 (20:35 +0200)]
[pseudo] Eliminate LRTable::Action. NFC

The last remaining uses are in tests/test builders.
Replace with a builder struct.

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

2 years ago[SimplifyCFG] Thread all predecessors with same value at once
Nikita Popov [Tue, 5 Jul 2022 10:21:06 +0000 (12:21 +0200)]
[SimplifyCFG] Thread all predecessors with same value at once

If there are multiple predecessors that have the same condition
value (and thus same "real destination"), these were previously
handled by copying the threaded block for each predecessor.
Instead, we can reuse one block for all of them. This makes the
behavior of SimplifyCFG's jump threading match that of the
actual JumpThreading pass.

This also avoids the infinite combine loop reported in:
https://reviews.llvm.org/D124159#3624387

2 years ago[LV] Remove stray dbgs() call after 774fc63490939.
Florian Hahn [Tue, 5 Jul 2022 11:58:13 +0000 (12:58 +0100)]
[LV] Remove stray dbgs() call after  774fc63490939.

2 years ago[SimplifyCFG] Add additional jump threading test (NFC)
Nikita Popov [Tue, 5 Jul 2022 11:57:16 +0000 (13:57 +0200)]
[SimplifyCFG] Add additional jump threading test (NFC)

A case where multiple predecessors can be threaded over the same
edge, with a phi node in the threaded block.

2 years ago[clang-extdef-mapping] Directly process .ast files
Tobias Hieta [Tue, 5 Jul 2022 11:45:32 +0000 (13:45 +0200)]
[clang-extdef-mapping] Directly process .ast files

When doing CTU analysis setup you pre-compile .cpp to .ast and then
you run clang-extdef-mapping on the .cpp file as well. This is a
pretty slow process since we have to recompile the file each time.

With this patch you can now run clang-extdef-mapping directly on
the .ast file. That saves a lot of time.

I tried this on llvm/lib/AsmParser/Parser.cpp and running
extdef-mapping on the .cpp file took 5.4s on my machine.

While running it on the .ast file it took 2s.

This can save a lot of time for the setup phase of CTU analysis.

Reviewed By: martong

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

2 years ago[NFC] Fix wrong comment.
Thomas Symalla [Tue, 5 Jul 2022 11:37:44 +0000 (13:37 +0200)]
[NFC] Fix wrong comment.

2 years ago[LLDB] Fix decorator import in TestTwoHitsOneActual.py
Muhammad Omair Javaid [Tue, 5 Jul 2022 11:26:14 +0000 (15:26 +0400)]
[LLDB] Fix decorator import in TestTwoHitsOneActual.py

2 years ago[MLIR][Affine] Allow `<=` in IntegerSet constraints
Groverkss [Tue, 5 Jul 2022 11:17:24 +0000 (12:17 +0100)]
[MLIR][Affine] Allow `<=` in IntegerSet constraints

This patch extends the affine parser to allow affine constraints with `<=`.
This is useful in writing unittests for Presburger library and test in general.

The internal storage and printing of IntegerSet is still in the original format.

Reviewed By: bondhugula

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

2 years agoUpdating office hours
Alexey Bader [Tue, 5 Jul 2022 11:11:45 +0000 (07:11 -0400)]
Updating office hours

2 years ago[LLDB] Skip TestTwoHitsOneActual.py on Arm/AArch64 Linux
Muhammad Omair Javaid [Tue, 5 Jul 2022 11:00:53 +0000 (15:00 +0400)]
[LLDB] Skip TestTwoHitsOneActual.py on Arm/AArch64 Linux

This test has some race condition which is making it hang on LLDB
Arm/AArch64 Linux buildbot. I am marking it as skipped until we
investigate whats going wrong.

2 years ago[VE] Restructure eliminateFrameIndex
Kazushi (Jam) Marukawa [Tue, 5 Jul 2022 10:38:06 +0000 (19:38 +0900)]
[VE] Restructure eliminateFrameIndex

Restructure the current implementation of eliminateFrameIndex function
in order to support more instructions.

Reviewed By: efocht

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

2 years agoCorrect XFAIL according to bot owner's advice
Jun Zhang [Tue, 5 Jul 2022 10:43:21 +0000 (18:43 +0800)]
Correct XFAIL according to bot owner's advice

Signed-off-by: Jun Zhang <jun@junz.org>
2 years ago[clang-tidy] By-pass portability issues in confusable-identifiers test
serge-sans-paille [Tue, 5 Jul 2022 10:19:00 +0000 (12:19 +0200)]
[clang-tidy] By-pass portability issues in confusable-identifiers test

2 years agoRevert "[VE] Restructure eliminateFrameIndex"
Kazushi (Jam) Marukawa [Tue, 5 Jul 2022 10:35:12 +0000 (19:35 +0900)]
Revert "[VE] Restructure eliminateFrameIndex"

This reverts commit 98e52e8bff525b1fb2b269f74b27f0a984588c9c.

2 years ago[VE] Restructure eliminateFrameIndex
Kazushi (Jam) Marukawa [Sat, 2 Jul 2022 05:06:17 +0000 (14:06 +0900)]
[VE] Restructure eliminateFrameIndex

Restructure the current implementation of eliminateFrameIndex function
in order to support more instructions.

Reviewed By: efocht

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

2 years agoReland "Reland "[NFC] Add a missing test for for clang-repl""
Jun Zhang [Tue, 5 Jul 2022 04:32:12 +0000 (12:32 +0800)]
Reland "Reland "[NFC] Add a missing test for for clang-repl""

This reverts commit 6956840b5c0029d7f8e043b3c77bb1ffc230e4d5.
Try to use `XFAIL: windows-msvc || ps4` to disable all unsupported targets.

Signed-off-by: Jun Zhang <jun@junz.org>
2 years ago[LLDB] Disable TestGdbRemoteFork* for Arm/AArch64 Linux
Muhammad Omair Javaid [Tue, 5 Jul 2022 09:16:23 +0000 (13:16 +0400)]
[LLDB] Disable TestGdbRemoteFork* for Arm/AArch64 Linux

This test is causing some trouble with LLDB Arm/AArch64 Linux buildbot.
I am disabling is temporarily to make buildbot green.

2 years ago[ARM] Add Support for Cortex-M85
Archibald Elliott [Tue, 5 Jul 2022 09:43:31 +0000 (10:43 +0100)]
[ARM] Add Support for Cortex-M85

This patch adds support for Arm's Cortex-M85 CPU. The Cortex-M85 CPU is
an Arm v8.1m Mainline CPU, with optional support for MVE and PACBTI,
both of which are enabled by default.

Parts have been coauthored by by Mark Murray, Alexandros Lamprineas and
David Green.

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

2 years agoFix tests with non-default CLANG_DEFAULT_LINKER
Yi Kong [Tue, 5 Jul 2022 09:26:34 +0000 (17:26 +0800)]
Fix tests with non-default CLANG_DEFAULT_LINKER

Force -fuse-ld option, as some other tests in the same file do.

2 years ago[OpenCL] Remove fast_ half geometric builtins
Sven van Haastregt [Tue, 5 Jul 2022 09:22:34 +0000 (10:22 +0100)]
[OpenCL] Remove fast_ half geometric builtins

These are not mentioned in the OpenCL C Specification nor in the
OpenCL Extension Specification.

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

2 years ago[IndVars] Precommit test with redundant FPToSI.
Florian Hahn [Tue, 5 Jul 2022 09:21:33 +0000 (10:21 +0100)]
[IndVars] Precommit test with redundant FPToSI.

Test for #55505.

2 years ago[InstCombine] improve fold for icmp_eq_and to icmp_ult
Chenbing Zheng [Tue, 5 Jul 2022 09:14:22 +0000 (17:14 +0800)]
[InstCombine] improve fold for icmp_eq_and to icmp_ult

In D95959, the improve analysis for "C >> X" broken the fold
((%x & C) == 0) --> %x u< (-C) iff (-C) is power of two.

It simplifies C, but fails to satisfy the fold condition.
This patch try to restore C before the fold.

Reviewed By: spatel

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

2 years ago[gn build] (manually) port 6b3956e123db
Peter Waller [Mon, 4 Jul 2022 14:10:02 +0000 (14:10 +0000)]
[gn build] (manually) port 6b3956e123db

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

2 years ago[InstCombine] [NFC] use C.isNegatedPowerOf2() instead of (~C + 1).isPowerOf2()
Chenbing Zheng [Tue, 5 Jul 2022 09:02:52 +0000 (17:02 +0800)]
[InstCombine] [NFC] use C.isNegatedPowerOf2() instead of (~C + 1).isPowerOf2()

Reviewed By: RKSimon

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

2 years ago[gn build] (manually) port dfb77f2e99a1
Nico Weber [Tue, 5 Jul 2022 08:59:41 +0000 (10:59 +0200)]
[gn build] (manually) port dfb77f2e99a1

2 years ago[lldb] Add support to load object files from thin archives
Kaining Zhong [Tue, 5 Jul 2022 08:50:37 +0000 (10:50 +0200)]
[lldb] Add support to load object files from thin archives

This fixes https://github.com/llvm/llvm-project/issues/50114 where lldb/mac
can't load object files from thin archives.  This patch allows lldb to identify
thin archives, and load object files contained in them.

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

2 years ago[InstCombine] add negtive tests for (%x & C) == 0 -> %x u< (-C). nfc
Chenbing Zheng [Tue, 5 Jul 2022 08:48:49 +0000 (16:48 +0800)]
[InstCombine] add negtive tests for (%x & C) == 0 -> %x u< (-C). nfc

2 years ago[AArch64][SME] Add SME addha/va intrinsics
David Sherwood [Wed, 15 Jun 2022 14:10:16 +0000 (15:10 +0100)]
[AArch64][SME] Add SME addha/va intrinsics

This patch adds new the following SME intrinsics:

  @llvm.aarch64.sme.addva
  @llvm.aarch64.sme.addha

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

2 years ago[LLD][ELF] Add FORCE_LLD_DIAGNOSTICS_CRASH to force LLD to crash
Ben Dunbobbin [Fri, 1 Jul 2022 15:45:09 +0000 (16:45 +0100)]
[LLD][ELF] Add FORCE_LLD_DIAGNOSTICS_CRASH to force LLD to crash

Add FORCE_LLD_DIAGNOSTICS_CRASH inspired by the existing
FORCE_CLANG_DIAGNOSTICS_CRASH.

This is particularly useful for people customizing LLD as they may
want to modify the crash reporting behavior.

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

2 years ago[LV] Consider minimum vscale assmuption for RT check cost.
Florian Hahn [Tue, 5 Jul 2022 08:41:58 +0000 (09:41 +0100)]
[LV] Consider minimum vscale assmuption for RT check cost.

For scalable VFs, the minimum assumed vscale needs to be included in the
cost-computation, otherwise a smaller VF may be used for RT check cost
computation than was used for earlier cost computations.

Fixes a RISCV test failing with UBSan due to both scalar and vector
loops having the same cost.

2 years ago[mlir][Linalg] Add DropUnitDims support for tensor::ParallelInsertSliceOp.
Nicolas Vasilache [Mon, 4 Jul 2022 16:48:18 +0000 (09:48 -0700)]
[mlir][Linalg] Add DropUnitDims support for tensor::ParallelInsertSliceOp.

ParallelInsertSlice behaves similarly to tensor::InsertSliceOp in its
rank-reducing properties.
This revision extends rank-reducing rewrite behavior and reuses most of the
existing implementation.

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

2 years agoFix use of pointer arithmetic instead of iterators.
Manuel Klimek [Tue, 5 Jul 2022 08:20:09 +0000 (08:20 +0000)]
Fix use of pointer arithmetic instead of iterators.

2 years ago[libc++] Fix __split_buffer::__construct_at_end definition to match declaration
Nikolas Klauser [Tue, 5 Jul 2022 08:13:38 +0000 (10:13 +0200)]
[libc++] Fix __split_buffer::__construct_at_end definition to match declaration

2 years ago[libc++] Use __is_exactly_{input, forward}_iterator
Nikolas Klauser [Mon, 4 Jul 2022 20:45:49 +0000 (22:45 +0200)]
[libc++] Use __is_exactly_{input, forward}_iterator

Reviewed By: ldionne, #libc

Spies: libcxx-commits

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

2 years agoRevert "[VectorCombine] Improve shuffle select shuffle-of-shuffles"
Nikita Popov [Tue, 5 Jul 2022 07:29:11 +0000 (09:29 +0200)]
Revert "[VectorCombine] Improve shuffle select shuffle-of-shuffles"

This reverts commit 19a1e20b8a0f69da2a871eae6cbd03d1314ee02d.

Clang crashes while linking bullet from llvm-test-suite in
ReleaseLTO-g cmake configuration.

2 years ago[flang] Avoid opaque pointer issue with character array substring addressing
Jean Perier [Tue, 5 Jul 2022 07:13:07 +0000 (09:13 +0200)]
[flang] Avoid opaque pointer issue with character array substring addressing

When addressing a substring of a character array, codegen emits two
GEPs: one for to compute the address of the base element, and a second
one to address the first characters from that element.

The first GEP still returns the LLVM array type (if the FIR array type could be
translated to an array type. Therefore) so zero
indexes must be added to the second GEP in this case to cover for the
Fortran array dimensions before inserting the susbtring offset index.

Surprisingly, the previous code worked ok when MLIR emits none opaque
pointers. But with opaque pointers, the two GEPs are folded in an
invalid GEP where the substring offset becomes an offset for the outer
array dimension.

Note that I tried to fix the issue by modifying the first GEP to return the
element type, but this still gave bad results (here something might be
wrong with opaque pointer in MLIR or LLVM).

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

2 years ago[clang-tidy] Fix confusable identifiers interaction with DeclContext
serge-sans-paille [Tue, 28 Jun 2022 08:34:46 +0000 (10:34 +0200)]
[clang-tidy] Fix confusable identifiers interaction with DeclContext

Properly checks enclosing DeclContext, and add the related test case.
It would be great to be able to use Sema to check conflicting scopes, but that's
not something clang-tidy seems to be able to do :-/

Fix #56221

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

2 years ago[RISCV] Replace an explicit check with an assert.
Craig Topper [Tue, 5 Jul 2022 05:33:15 +0000 (22:33 -0700)]
[RISCV] Replace an explicit check with an assert.

Shift amounts should never be 0 or more than bitwidth - 1.

2 years ago[RISCV] Rename some variables for clarity. NFC
Craig Topper [Tue, 5 Jul 2022 05:28:08 +0000 (22:28 -0700)]
[RISCV] Rename some variables for clarity. NFC

2 years ago[test] Check for more -fsanitize=array-bounds behavior
Stephan Bergmann [Wed, 29 Jun 2022 06:17:58 +0000 (08:17 +0200)]
[test] Check for more -fsanitize=array-bounds behavior

...that had temporarily regressed with (since reverted)
<https://github.com/llvm/llvm-project/commit/886715af962de2c92fac4bd37104450345711e4a>
"[clang] Introduce -fstrict-flex-arrays=<n> for stricter handling of flexible
arrays", and had then been seen to cause issues in the wild:

For one, the HarfBuzz project has various "fake" flexible array members of the
form

> Type                arrayZ[HB_VAR_ARRAY];

in <https://github.com/harfbuzz/harfbuzz/blob/main/src/hb-open-type.hh>, where
HB_VAR_ARRAY is a macro defined as

> #ifndef HB_VAR_ARRAY
> #define HB_VAR_ARRAY 1
> #endif

in <https://github.com/harfbuzz/harfbuzz/blob/main/src/hb-machinery.hh>.

For another, the Firebird project in
<https://github.com/FirebirdSQL/firebird/blob/master/src/lock/lock_proto.h> uses
a trailing member

>         srq lhb_hash[1];                        // Hash table

as a "fake" flexible array, but declared in a

> struct lhb : public Firebird::MemoryHeader

that is not a standard-layout class (because the Firebird::MemoryHeader base
class also declares non-static data members).

(The second case is specific to C++.  Extend the test setup so that all the
other tests are now run for both C and C++, just in case the behavior could ever
start to diverge for those two languages.)

A third case where -fsanitize=array-bounds differs from -Warray-bounds (and
which is also specific to C++, but which doesn't appear to have been encountered
in the wild) is when the "fake" flexible array member's size results from
template argument substitution.

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

2 years ago[lld-macho] Handle LOH_ARM64_ADRP_LDR_GOT optimization hints
Daniel Bertalan [Sun, 3 Jul 2022 08:58:39 +0000 (10:58 +0200)]
[lld-macho] Handle LOH_ARM64_ADRP_LDR_GOT optimization hints

This hint instructs the linker to perform the AdrpLdr or AdrpAdd
transformation depending on whether the GOT load has been relaxed to
load a local symbol's address.

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

2 years ago[mlir] Add InferIntRangeInterface to gpu.launch
Christian Sigg [Mon, 4 Jul 2022 06:11:30 +0000 (08:11 +0200)]
[mlir] Add InferIntRangeInterface to gpu.launch

Infers block/grid dimensions/indices or ranges of such dimensions/indices.

Reviewed By: krzysz00

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

2 years ago[llvm-objcopy] -O binary: align sh_offset for section changed from SHT_NOBITS
Fangrui Song [Tue, 5 Jul 2022 04:45:19 +0000 (21:45 -0700)]
[llvm-objcopy] -O binary: align sh_offset for section changed from SHT_NOBITS

For a SHT_NOBITS section like .bss, its sh_offset is typically not
aligned by sh_addralign. If it is converted to SHT_PROGBITS by
`--set-section-flags .bss=alloc,contents`, we should conceptually align
it when computing the output size for -O binary. Otherwise the output
size may be smaller than GNU objcopy produced output.

* binary-no-paddr.test has a case with non-sensical p_paddr=1 which has
  a changed behavior. Update it.

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

Reviewed By: jhenderson

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

2 years ago[LoongArch] Add initial support for function calls
wanglei [Tue, 5 Jul 2022 01:54:30 +0000 (09:54 +0800)]
[LoongArch] Add initial support for function calls

Note that this is just enough for simple function call examples to
generate working code.

A good portion of this patch is the extra functions that needed to be
implemented to support the test case. e.g. storeRegToStackSlot,
loadRegFromStackSlot, eliminateFrameIndex.

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

2 years ago[LoongArch] Add codegen support for conditional branches
wanglei [Tue, 5 Jul 2022 01:49:11 +0000 (09:49 +0800)]
[LoongArch] Add codegen support for conditional branches

Setting ISD::BR_CC to Expand makes it much easier to deal with
matching the expanded form.

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

2 years ago[LoongArch] Add codegen support for load/store operations
wanglei [Tue, 5 Jul 2022 01:46:19 +0000 (09:46 +0800)]
[LoongArch] Add codegen support for load/store operations

This patch also support lowering global addresses.

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

2 years ago[RISCV][Clang] Teach RISCVEmitter to generate BitCast for pointer operands.
Yeting Kuo [Sun, 3 Jul 2022 11:20:28 +0000 (19:20 +0800)]
[RISCV][Clang] Teach RISCVEmitter to generate BitCast for pointer operands.

RVV C intrinsics use pointers to scalar for base address and their corresponding
IR intrinsics but use pointers to vector. It makes some vector load intrinsics
need specific ManualCodegen and MaskedManualCodegen to just add bitcast for
transforming to IR.

For simplifying riscv_vector.td, the patch make RISCVEmitter detect pointer
operands and bitcast them.

Reviewed By: kito-cheng

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

2 years ago[NFC] Remove unused test inputs
Chuanqi Xu [Tue, 5 Jul 2022 02:55:14 +0000 (10:55 +0800)]
[NFC] Remove unused test inputs

2 years ago[NFC][ASTImporter] remove the unnecessary condition checks in ASTImporter.cpp
phyBrackets [Tue, 5 Jul 2022 02:41:00 +0000 (08:11 +0530)]
[NFC][ASTImporter] remove the unnecessary condition checks in ASTImporter.cpp

I think that these conditions are unnecessary because in VisitClassTemplateDecl we import the definition via the templated CXXRecordDecl and in VisitVarTemplateDecl via the templated VarDecl. These are named ToTemplted and DTemplated respectively.

Reviewed By: martong

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

2 years ago[RISCV][NFC] Merge the isolated decleration into foreach.
jacquesguan [Mon, 4 Jul 2022 09:15:32 +0000 (17:15 +0800)]
[RISCV][NFC] Merge the isolated decleration into foreach.

Reviewed By: benshi001

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

2 years ago[InstCombine] Make use of low zero bits to determine exact int->fp cast
zhongyunde [Tue, 5 Jul 2022 01:14:29 +0000 (09:14 +0800)]
[InstCombine] Make use of low zero bits to determine exact int->fp cast

According the comment https://reviews.llvm.org/D127854#inline-1226805,
We could also make use of these low zero bits, https://alive2.llvm.org/ce/z/GYxTRu

Reviewed By: spatel, nikic, xbolva00

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

2 years ago[InstCombine] fold sub of min/max of sub with common operand
Sanjay Patel [Mon, 4 Jul 2022 22:55:24 +0000 (18:55 -0400)]
[InstCombine] fold sub of min/max of sub with common operand

  x - max(x - y, 0) --> min(x, y)
  x - min(x - y, 0) --> max(x, y)

https://alive2.llvm.org/ce/z/2YkqFe

issue #55470

2 years ago[InstCombine] add tests for sub of smin/smax; NFC
Sanjay Patel [Mon, 4 Jul 2022 22:46:40 +0000 (18:46 -0400)]
[InstCombine] add tests for sub of smin/smax; NFC

issue #55470

2 years ago[InstCombine] add helper function for sub-of-min/max folds; NFC
Sanjay Patel [Mon, 4 Jul 2022 21:39:54 +0000 (17:39 -0400)]
[InstCombine] add helper function for sub-of-min/max folds; NFC

The test diffs are cosmetic -- but improvements -- because we
let instcombine handle replacement. Instead of dropping the
old value name, it propagates to the new instruction.

2 years ago[OffloadPackager] Use appropriate kind for LTO bitcode
Joseph Huber [Mon, 4 Jul 2022 21:32:47 +0000 (17:32 -0400)]
[OffloadPackager] Use appropriate kind for LTO bitcode

Summary:
Currently we just check the extension to set the image kind. This
incorrectly labels the `.o` files created during LTO as object files.
This patch simply adds a check for the bitcode magic bytes instead.