495344 Commits

Author SHA1 Message Date
Timm Bäder
1d9fb2ee61 [clang][Interp] Disable CFStringMakeConstantString test on AIX
It's not only the fist CFSTR call that's broken on AIX.
See 0a739eb75f (commitcomment-139910542)
2024-03-18 14:53:04 +01:00
Mark de Wever
4109b18ee5
[libc++][CMake] Removes LIBCXX_ENABLE_CLANG_TIDY. (#85262)
The clang-tidy selection in CMake was refactored in
https://github.com/llvm/llvm-project/pull/81362. During review it was
suggested to remove this CMake option.
2024-03-18 14:32:30 +01:00
Nikolas Klauser
4ea850b52f
[libc++] Remove __unconstrained_reverse_iterator (#85582)
`__unconstrained_reverse_iterator` has outlived its usefullness, since
the standard and subsequently the compilers have been fixed.
2024-03-18 14:19:51 +01:00
zicwangupa
bc70f60418
[SelectionDAG] Add m_Neg and m_Not pattern matcher and update DAGCombiner (#85365)
Resolves #85065

---------

Co-authored-by: Matt Arsenault <arsenm2@gmail.com>
2024-03-18 18:34:31 +05:30
Nikolas Klauser
a10aa4485e
[libc++] Simplify the implementation of remove_reference (#85207)
GCC 13 introduced the type trait `__remove_reference`. We can simplify
the implementation of `remove_reference` a bit by using it.
2024-03-18 13:57:07 +01:00
martinboehme
27d504998e
[clang][dataflow] Fix getResultObjectLocation() on CXXDefaultArgExpr. (#85072)
This patch includes a test that causes an assertion failure without the
other
changes in this patch.
2024-03-18 13:36:20 +01:00
Benjamin Kramer
2469208818 [bazel] Add missing dependencies for daebe5c4f27ba140ac8d13abf41e3fe4db72b91a 2024-03-18 13:24:19 +01:00
Bhuminjay Soni
ab28c1de23
fix unnecessary warning when using bitand with boolean operators (#81976)
This pull request fixes #77601 where using the `bitand` operator with
boolean operands should not trigger the warning, as it would indicate an
intentional use of bitwise AND rather than a typo or error.

Fixes #77601
2024-03-18 08:19:44 -04:00
Chao Chen
daebe5c4f2
[MLIR][XeGPU] Adding XeGPU 2d block operators (#84692)
Hi @joker-eph, This PR adds XeGPU 2D block operators. It contains:
1. `TensorDescType` and `TensorDescAttr` definitions
2. `MemoryScopeAttr` and `CacheHintAttr` definitions which are used by
`TensorDescAttr`.
3. `CreateNdDescOp`, `PrefetchNdOp`, `LoadNdOp`, and `StoreNdOp`
definitions, and their corresponding testcases for illustration.

---------

Co-authored-by: Mehdi Amini <joker.eph@gmail.com>
2024-03-18 07:09:47 -05:00
Orlando Cazalet-Hyams
a9f78a3c67 Fix Werror buildbots after #84915
e.g. https://lab.llvm.org/buildbot/#/builders/77/builds/35540
2024-03-18 12:05:45 +00:00
Timm Bäder
c2f75c7159 [clang][Interp] Handle CXXDefaultInitExpr of composite type 2024-03-18 12:59:56 +01:00
Benjamin Kramer
6598f631bd Remove another layering violation by unused include. NFC 2024-03-18 12:56:51 +01:00
Paul Walker
6825081162
[NFC][LLVM][SVE][ISel] Remove redundant type information from Pat targets. (#85409) 2024-03-18 11:56:32 +00:00
Rodrigo Salazar
4c5bc76677
[libcxx][test] Create feature host-can-create-symlinks (#82204)
On Windows you can not create symlinks without elevated privileges
unless you have Windows developer mode enabled. There's ~67 libcxx tests
that run into failures on windows if your environment is not set up
correctly (Go to windows settings and enable "developer mode").

This change:
- Adds a feature check for whether the host can create symlinks. (see
libcxx/utils/libcxx/test/features.py)
- Mark the feature as required for the 67 tests that hit failures on
windows due to this. This will allow lit to correctly mark these tests
as unsupported instead of unexpectedly failed (this is helpful since
then you know you didn't break something with your change, it's just
that it's not supported with your environment).
2024-03-18 12:53:54 +01:00
Benjamin Kramer
c18fc4fcf3 Remove unused include. NFC 2024-03-18 12:51:42 +01:00
Orlando Cazalet-Hyams
f0dbcfe352
[RemoveDIs] Update DIBuilder C API with DbgRecord functions [1/2] (#84915)
Follow on from #84739, which updates the DIBuilder class.

All the functions that have been added are temporary and will be
deprecated in the future. The intention is that they'll help downstream
projects adapt during the transition period.

```
New functions (all to be deprecated)
------------------------------------
LLVMIsNewDbgInfoFormat                      # Returns true if the module is in the new non-instruction mode.
LLVMSetIsNewDbgInfoFormat                   # Convert to the requested debug info format.

LLVMDIBuilderInsertDeclareIntrinsicBefore   # Insert a debug intrinsic (old debug info format). 
LLVMDIBuilderInsertDeclareIntrinsicAtEnd    # Same as above.
LLVMDIBuilderInsertDbgValueIntrinsicBefore  # Same as above.
LLVMDIBuilderInsertDbgValueIntrinsicAtEnd   # Same as above.

LLVMDIBuilderInsertDeclareRecordBefore      # Insert a debug record (new debug info format). 
LLVMDIBuilderInsertDeclareRecordAtEnd       # Same as above.
LLVMDIBuilderInsertDbgValueRecordBefore     # Same as above.
LLVMDIBuilderInsertDbgValueRecordAtEnd      # Same as above.
```

The existing `LLVMDIBuilderInsert...` functions call through to the
intrinsic versions (old debug info format) currently.

In the next patch, I'll swap them to call the debug records versions
(new debug info format). Downstream users of this API can query and
change the current format using the first two functions above, or can
instead opt to temporarily use intrinsics or records explicitly.
2024-03-18 11:45:14 +00:00
Paul Walker
a60deaa204
[ConstantHoisting] Don't attempt to hoist ConstantInt vectors. (#85416)
The pass uses the TTI hook getIntImmCostIntrin that only supports scalar
integer types. Whilst hoisting expensive vector constant is likely
worthwhile, this is new behaviour and so I've followed the path taken by
the GEP variant of collectConstantCandidates and simply bail for vector
types.
2024-03-18 11:35:42 +00:00
Alfie Richards
295cdd5c3d
[ARM][TableGen][MC] Change the ARM mnemonic operands to be optional for ASM parsing (#83436)
This changs the way the assembly matcher works for Aarch32 parsing.
Previously there was a pile of hacks which dictated whether the CC,
CCOut, and VCC operands should be present which de-facto chose if the
wide/narrow (or thumb1/thumb2/arm) instruction version were chosen.

This meant much of the TableGen machinery present for the assembly
matching was effectively being bypassed and worked around.

This patch makes the CC and CCOut operands optional which allows the ASM
matcher operate as it was designed and means we can avoid doing some of
the hacks done previously. This also adds the option for the target to
allow the prioritizing the smaller instruction encodings as is required
for Aarch32.
2024-03-18 11:25:13 +00:00
Orlando Cazalet-Hyams
3e6db60291 [RemoveDIs] Update Clang front end to handle DbgRecords (#84756)
This patch fixes problems that pop up when clang emits DbgRecords
instead of debug intrinsics.

Note: this doesn't mean clang is emitting DbgRecords yet, because the
modules it creates are still always in the old debug mode. That will
come in a future patch.

Depends on #84739
2024-03-18 10:55:29 +00:00
Vyacheslav Levytskyy
59f34e8c2b
[SPIRV] Add Lifetime intrinsics/instructions (#85391)
This PR:
* adds Lifetime intrinsics/instructions
* fixes how the binary header is emitted (correct version and better
approximation of Bound)
* add validation into more test cases
2024-03-18 11:42:44 +01:00
Yingwei Zheng
38a44bdc93
[CodeGenPrepare] Reverse the canonicalization of isInf/isNanOrInf (#81572)
In commit
2b582440c1,
we canonicalize the isInf/isNanOrInf idiom into fabs+fcmp for better
analysis/codegen (See also the discussion in
https://github.com/llvm/llvm-project/pull/76338).

This patch reverses the fabs+fcmp to `is.fpclass`. If the `is.fpclass`
is not supported by the target, it will be expanded by TLI.

Fixes the regression introduced by
2b582440c1
and
https://github.com/llvm/llvm-project/pull/80414#issuecomment-1936374206.
2024-03-18 18:27:45 +08:00
Benjamin Kramer
f362e12aab [clang-format] Make header self-contained
These includes were removed in 426e6945897afbec01c042bec4771522a2aac176
2024-03-18 11:23:38 +01:00
pvanhout
3493438605 Revert "[AMDGPU] Run LowerLDS at the end of the fullLTO pipeline (#75333)"
This reverts commit 9b98692eedb78aa106539c36ba02944f32cae1ff.
2024-03-18 11:18:57 +01:00
Orlando Cazalet-Hyams
92122b0b4b Revert "[RemoveDIs] Update Clang front end to handle DbgRecords (#84756)"
This reverts commit 6f60ad7e9a3508f19d54c827cf11f7930a0685ee.

Buildbots: https://lab.llvm.org/buildbot/#/builders/196/builds/47206
2024-03-18 10:13:35 +00:00
Orlando Cazalet-Hyams
3e4170a587 Revert "Fix formatting in #84756"
This reverts commit b097b3dc2ba2517621a5e3da3237a77ed0e7586f.

Buildbots: https://lab.llvm.org/buildbot/#/builders/196/builds/47206
2024-03-18 10:13:12 +00:00
Orlando Cazalet-Hyams
b097b3dc2b Fix formatting in #84756 2024-03-18 10:01:51 +00:00
Orlando Cazalet-Hyams
6f60ad7e9a
[RemoveDIs] Update Clang front end to handle DbgRecords (#84756)
This patch fixes problems that pop up when clang emits DbgRecords
instead of debug intrinsics.

Note: this doesn't mean clang is emitting DbgRecords yet, because the
modules it creates are still always in the old debug mode. That will
come in a future patch.

Depends on #84739
2024-03-18 09:59:58 +00:00
Christian Sigg
40d29537fc [mlir][bazel] Fix BUILD after dbbdee2ea2156170062813fb3d7f2c023d65e02d. 2024-03-18 10:58:10 +01:00
Orlando Cazalet-Hyams
3ab1481f9a
[RemoveDIs] Use getFirstNonPHIIt to fix crash #85472 (#85618) 2024-03-18 09:57:22 +00:00
Benjamin Kramer
0d313ee393 [bazel] Port dbbdee2ea2156170062813fb3d7f2c023d65e02d 2024-03-18 10:49:29 +01:00
Kareem Ergawy
87cee71b37
[flang][MLIR][OpenMP] Extend delayed privatization for scalar allocatables and pointers (#84740)
One more step in extending support for delayed privatization. This diff
adds support for scalar allocatables and pointers.
2024-03-18 10:44:44 +01:00
Sander de Smalen
7fad304a03
[AArch64][SME] Make coalescer barrier available without +sme. (#85311)
For each call that changes the streaming-mode ISel inserts a
COALESCER_BARRIER node for the FP and (non-scalable) vector arguments to
the callee.

When calling a non-streaming function from a streaming-compatible
function, it's not required to have +sme (in case the SME code-path is
not actually executed at runtime). The patterns to match the
COALESCER_BARRIER however were still predicated with `HasSME`, which is
incorrect. This patch tries to fix that.
2024-03-18 09:43:03 +00:00
Christian Sigg
68342ed1ac
[mlir][bazel] Fix for 513cdb82223a106f183b49a40d9acb1f7efbbe7e. (#85617)
Follow-up from https://github.com/llvm/llvm-project/pull/85604, this
change also fixes the ArithDialect target.
2024-03-18 10:42:25 +01:00
Alfie Richards
6854f6f1b1
[TableGen] Add PreferSmallerInstructions for Targets. (#83587)
This option means that in assembly matching instructions with smaller
encodings will be preferred.

This will be used for the ARM instruction set where this is the correct
behavior after some other refactoring.
2024-03-18 09:04:37 +00:00
Alfie Richards
3128c202f1
[TableGen] Bug fix for tied optional operands resolution (#83588)
This fixes tied operand resolution in cases where there are optional operands before the tied operand.
2024-03-18 09:03:45 +00:00
Matthias Gehre
5cc228148e
TranslateToCpp: Emit floating point literals with suffix (#85392)
Emits `2.0e+00f` instead of `(float)2.0e+00`.

This helps consumers of the emitted code, especially when there are
large numbers of floating point literals, to have a simple AST.
2024-03-18 09:58:57 +01:00
Florian Hahn
c07c1c47d3
[VPlan] Remove redundant cast (NFCI).
SinkCandidate is a VPSingleDefRecipe now, so no cast is needed to access
getUnderlyingInstr directly.
2024-03-18 08:58:23 +00:00
Christian Sigg
5d45757ec1
[mlir][bazel] Partial fix for 513cdb82223a106f183b49a40d9acb1f7efbbe7e. (#85604)
Adds a separate target for bufferization interfaces.

`//mlir:ArithDialect` would need to depend on
`//mlir:ValueBoundsOpInterface` as well, but that's creating a circular
dependency.
2024-03-18 09:51:50 +01:00
Pierre van Houtryve
9b98692eed
[AMDGPU] Run LowerLDS at the end of the fullLTO pipeline (#75333)
This change allows us to use `--lto-partitions` in some cases (not at
all guaranteed it works perfectly), as LDS is lowered before the module
is split for parallel codegen.

We must run LowerLDS before splitting modules as it needs to see all
callers of functions with LDS to properly lower them.
2024-03-18 09:09:43 +01:00
Nikolas Klauser
99a8ffe6b1
[libc++] Use __is_scoped_enum for the implementation of is_scoped_enum if it's available (#85580) 2024-03-18 08:51:45 +01:00
LLVM GN Syncbot
b1e10d7618 [gn build] Port 580f60484e19 2024-03-18 07:36:04 +00:00
Christian Ulmann
63897a595a
[MLIR][SROA] Replace pattern based approach with a one-shot one (#85437)
This commit changes MLIR's SROA implementation back from being pattern
based into a full pass. This is beneficial for upcoming changes that
rely more heavily on the datalayout.

Unfortunately, this change required substantial test changes, as the
IRBuilder no cleans up the IR.
2024-03-18 08:33:09 +01:00
Christian Ulmann
3e2992f070
[MLIR][Mem2Reg] Replace pattern based approach with a bulk one (#85426)
This commit changes MLIR's Mem2Reg implementation back from being
pattern based into a full pass. Using Mem2Reg as a pattern is
wasteful, as each application can invalidate the dominance info.
Applying changes in bulk allows for reuse of the same dominance info.

Unfortunately, this requires some test changes, due to the `IRBuilder`
not simplifying IR.
2024-03-18 08:32:50 +01:00
Nikolas Klauser
a2fe410581
[libc++][NFC] Simplify the implementation of equal a bit (#84754)
We can simplify the implementation of the two range overload of `equal`
a bit since we can now use `if constexpr`.
2024-03-18 08:32:09 +01:00
Nikolas Klauser
580f60484e
[libc++][NFC] Merge is{,_nothrow,_trivially}{,_copy,_move,_default}{_assignable,_constructible} (#85308)
These headers have become very small by using compiler builtins, often
containing only two declarations. This merges these headers, since
there doesn't seem to be much of a benefit keeping them separate.

Specifically, `is_{,_nothrow,_trivially}{assignable,constructible}` are
kept and the `copy`, `move` and `default` versions of these type traits
are moved in to the respective headers.
2024-03-18 08:29:44 +01:00
Qiu Chaofan
65ae09eeb6
[PowerPC] Fix behavior of rldimi/rlwimi/rlwnm builtins (#85040)
rldimi is 64-bit instruction, so the corresponding builtin should not
be available in 32-bit mode. Rotate amount should be in range and
cases when mask is zero needs special handling.

This change also swaps the first and second operands of rldimi/rlwimi
to match previous behavior. For masks not ending at bit 63-SH,
rotation will be inserted before rldimi.
2024-03-18 14:17:16 +08:00
Carlos Alberto Enciso
c1ccf0781b
[llvm-debuginfo-analyzer][NFC] Rename LVElfReader.cpp[h] (#85530)
As part of the WebAssembly support work review
  https://github.com/llvm/llvm-project/pull/82588

It was decided to rename:

  Files: LVElfReader.cpp[h] -> LVDWARFReader.cpp[h]
         ELFReaderTest.cpp  -> DWARFReaderTest.cpp

  Class: LVELFReader        -> LVDWARFReader

The name LVDWARFReader would match the another reader LVCodeViewReader
as they will reflect the type of
debug information format that they are parsing.
2024-03-18 05:08:42 +00:00
Carlos Alberto Enciso
c8da99959d
[llvm-debuginfo-analyzer][DOC] Change .wasm references to .o (#85566)
As part of the WebAssembly support work
https://github.com/llvm/llvm-project/pull/82588

As the object files used in the test cases are a single object (just
produced by clang without being processed by wasm-ld), it was determined
to use .o intead of .wasm.

Update the README.txt to reflect that the tool now supports WebAssembly.
2024-03-18 05:07:08 +00:00
Sameer Sahasrabuddhe
ec34699f75
[GlobalISel] convergence control tokens and intrinsics (#67006)
[GlobalISel] Implement convergence control tokens and intrinsics in GMIR

In the IR translator, convert the LLVM token type to LLT::token(), which is an
alias for the s0 type. These show up as implicit uses on convergent operations.

Differential Revision: https://reviews.llvm.org/D158147
2024-03-18 10:34:11 +05:30
Owen Pan
55a02d10d9 [clang-format][NFC] Minor changes to a unit test in 8e5de66af3da
See https://github.com/llvm/llvm-project/pull/85470#discussion_r1527297517
2024-03-17 21:37:32 -07:00