516869 Commits

Author SHA1 Message Date
Lang Hames
53a8a7cd85 [ORC] Fix typo in include guard comment. 2024-10-22 09:23:48 -07:00
Peng Liu
b263a71c2b
[libc++] Refactor vector constructors to eliminate code duplication (#113193)
This PR refactors the std::vector's initializer_list constructors to
reduce code duplication. The constructors now call `__init_with_size`
directly, reducing code duplication and improving readability and
maintainability.
2024-10-22 12:21:31 -04:00
Alex Voicu
2074de252b
[clang][HIP] Don't use the OpenCLKernel CC when targeting AMDGCNSPIRV (#110447)
When compiling HIP source for AMDGCN flavoured SPIR-V that is expected
to be consumed by the ROCm HIP RT, it's not desirable to set the OpenCL
Kernel CC on `__global__` functions. On one hand, this is not an OpenCL
RT, so it doesn't compose with e.g. OCL specific attributes. On the
other it is a "noisy" CC that carries semantics, and breaks overload
resolution when using [generic dispatchers such as those used by
RAJA](186d4194a5/src/common/HipDataUtils.hpp (L39)).
2024-10-22 17:16:46 +01:00
Lang Hames
41365dcbd6 [ORC] Add missing DylibManager header.
-
Accidentally left out of db21bd4fa9bf40a9f6e7713bf674dcfaa48d1d5b.
2024-10-23 03:05:02 +11:00
Jonas Devlieghere
cd4b33c9a9
[lldb] Log errors to the system log if they would otherwise get dropped (#111911)
Log errors to the (always-on) system log if they would otherwise get
dropped by LLDB_LOG_ERROR.
2024-10-22 09:00:08 -07:00
Lang Hames
db21bd4fa9 [ORC] Move EPC load-dylib and lookup operations into their own class.
This keeps common operations together, and should make it easier to write
re-usable dylib managers in the future (e.g. a DylibManager that uses
the EPC's remote-execution APIs to implement load and lookup).
2024-10-23 02:59:14 +11:00
Jan Svoboda
8bbd0797d4
[clang] Allocate Module instances in BumpPtrAllocator (#112795)
In `clang-scan-deps`, we're creating lots of `Module` instances.
Allocating them all in a bump-pointer allocator reduces the number of
retired instructions by 1-1.5% on my workload.
2024-10-22 08:57:33 -07:00
Jay Foad
40c3e583b7
[KnownBits] Check that mul is optimal for low order bits (#113316) 2024-10-22 16:36:06 +01:00
Jordan Rupprecht
5942be03ea
[lldb][test] Fix TestUseSourceCache for readonly source trees (#113251)
TestUseSourceCache attempts to write to a build artifact copied from the
source tree, and asserts the write succeeded. If the source tree is read
only, the copy will also be read only, causing it to fail. When
producing the build artifact, ensure that it is writable.
2024-10-22 10:34:15 -05:00
Nashe Mncube
6e535a9ac7
[LLVM][MC][AArch64] Assembler support for Armv9.6-A memory systems extensions (#112341)
Add support for the following Armv9.6-A memory systems extensions:
  FEAT_LSUI      - Unprivileged Load Store
  FEAT_OCCMO     - Outer Cacheable Cache Maintenance Operation
  FEAT_PCDPHINT  - Producer-Consumer Data Placement Hints
  FEAT_SRMASK    - Bitwise System Register Write Masks

as documented here:

https://developer.arm.com/documentation/109697/2024_09/Feature-descriptions/The-Armv9-6-architecture-extension

Co-authored-by: Jonathan Thackray <jonathan.thackray@arm.com>

---------

Co-authored-by: Jonathan Thackray <jonathan.thackray@arm.com>
2024-10-22 16:06:14 +01:00
Janek van Oirschot
a18826d75c
[AMDGPU] Create local KnownBits in case DenseMap gets invalidated (#111568)
KnownBits retrieved from DenseMap may invalidate if insertion requires a
(re)growth.

Fixes https://github.com/llvm/llvm-project/issues/110930
2024-10-22 16:05:07 +01:00
Lukacma
d8d144aea5
[LLVM][AArch64] Add assembly/disassembly of SVE BFSCALE instruction (#113168)
This patch add assembly/disassembly and tests for sve bfscale
instruction according to https://developer.arm.com/documentation/ddi0602
.
2024-10-22 16:01:00 +01:00
Kazu Hirata
c5ea7b8338
[mlir] Avoid repeated hash lookups (NFC) (#113249) 2024-10-22 08:00:11 -07:00
Kazu Hirata
5dbfb49490
[lldb] Avoid repeated hash lookups (NFC) (#113248) 2024-10-22 07:59:41 -07:00
Kazu Hirata
0690a42261
[BPF] Avoid repeated map lookups (NFC) (#113247) 2024-10-22 07:59:14 -07:00
Kazu Hirata
da66f6a280
[llvm-jitlink] Use heterogenous lookups with std::map (NFC) (#113245) 2024-10-22 07:58:50 -07:00
Daniel Hoekwater
ac1a01f533
Reland [CFIFixup] Factor CFI remember/restore insertion into a helper (NFC) (#113328)
The previous submission looked like it triggered build failure
https://lab.llvm.org/buildbot/#/builders/17/builds/3116, but this
appears to be a spurious failure due to a flaky test.
2024-10-22 10:57:47 -04:00
Kunwar Grover
1004865f1c
[mlir][Vector] Support 0-d vectors natively in TransferOpReduceRank (#112907)
Since
ddf2d62c7d
, 0-d vectors are supported in VectorType. This patch removes 0-d vector
handling with scalars for the TransferOpReduceRank pattern. This pattern
specifically introduces tensor.extract_slice during vectorization,
causing vectorization to not fold transfer_read/transfer_write slices
properly. The changes in vectorization test files reflect this.

There are other places where lowering patterns are still side-stepping
from handling 0-d vectors properly, by turning them into scalars, but
this patch only focuses on the vector.transfer_x patterns.
2024-10-22 15:50:16 +01:00
Fabian Ritter
4c697f7037
[LowerMemIntrinsics] Use i8 GEPs in memcpy/memmove lowering (#112707)
The IR lowering of memcpy/memmove intrinsics uses a target-specific type
for its load/store operations. So far, the loaded and stored addresses
are computed with GEPs based on this type. That is wrong if the
allocation size of the type differs from its store size: The width of
the accesses is determined by the store size, while the GEP stride is
determined by the allocation size. If the allocation size is greater
than the store size, some bytes are not copied/moved.

This patch changes the GEPs to use i8 addressing, with offsets based on
the type's store size. The correctness of the lowering therefore no
longer depends on the type's allocation size.

This is in support of PR #112332, which allows adjusting the memcpy loop
lowering type through a command line argument in the AMDGPU backend.
2024-10-22 16:48:50 +02:00
Michael Jones
4275a73124
[libc] Fix long double is double double const (#113258)
Turns out for double double LDBL_MANT_DIG == 106. This patch fixes the
constant. Should fix the ppc buildbot.

Previously:
https://github.com/llvm/llvm-project/pull/113235
https://github.com/llvm/llvm-project/issues/113237
https://github.com/llvm/llvm-project/pull/91651
2024-10-22 07:31:57 -07:00
tltao
6512a8dd8c
[SystemZ] Split SystemZInstPrinter to two classes based on Asm dialect (#112975)
In preparation for future work on separating the output of the GNU/HLASM
ASM dialects, we first separate the SystemZInstPrinter classes to two
versions, one for each ASM dialect.

The common code remains in a SystemZInstPrinterCommon class instead.

---------

Co-authored-by: Tony Tao <tonytao@ca.ibm.com>
2024-10-22 10:28:57 -04:00
Jan Voung
6761b24ae2
[clang][dataflow] Cache accessors for bugprone-unchecked-optional-access (#112605)
Treat calls to zero-param const methods as having stable return values
(with a cache) to address issue #58510. The cache is invalidated when
non-const methods are called. This uses the infrastructure from PR
#111006.

For now we cache methods returning:
- ref to optional
- optional by value
- booleans

We can extend that to pointers to optional in a next change.
2024-10-22 10:18:22 -04:00
Jinsong Ji
b81d8e9033
[NFC][Clang] Fix enumerated mismatch warning (#112816)
This is one of the many PRs to fix errors with LLVM_ENABLE_WERROR=on.
Built by GCC 11.

```
Fix warning:
llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:3153:14: error: enumerated mismatch in conditional expression: ‘clang::diag::<unnamed enum>’ vs ‘clang::diag::<unnamed enum>’ [-Werror=enum-compare]
 3152 |          DS.isFriendSpecified() || NextToken().is(tok::kw_friend)
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 3153 |              ? diag::err_friend_concept
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~
 3154 |              : diag::
      |              ~~~~~~~~
 3155 |                    err_concept_decls_may_only_appear_in_global_namespace_scope);

```

---------

Co-authored-by: Sirraide <aeternalmail@gmail.com>
Co-authored-by: cor3ntin <corentinjabot@gmail.com>
2024-10-22 09:35:41 -04:00
Louis Dionne
d6e714b10e
[libc++] Rewrite the transitive header checking machinery (#110554)
Since we don't generate a full dependency graph of headers, we can
greatly simplify the script that parses the result of --trace-includes.

At the same time, we also unify the mechanism for detecting whether a
header is a public/C compat/internal/etc header with the existing
mechanism in header_information.py.

As a drive-by this fixes the headers_in_modulemap.sh.py test which had
been disabled by mistake because it used its own way of determining
the list of libc++ headers. By consistently using header_information.py
to get that information, problems like this shouldn't happen anymore.

This should also unblock #110303, which was blocked because of
a brittle implementation of the transitive includes check which broke
when the repository was cloned at a path like /path/__something/more.
2024-10-22 09:18:58 -04:00
Louis Dionne
c623df38c9
[libc++] Fix typo in is_always_lock_free test (#113169) 2024-10-22 09:17:06 -04:00
Paul Walker
5bb34803a4 [NFC] Migrate tests to use autoupdate for CHECK lines. 2024-10-22 12:55:15 +00:00
Haojian Wu
56f75b5c15 Fix the broken test 2024-10-22 14:39:36 +02:00
Andrzej Warzyński
91c11574e8
Revert "[MLIR] Make OneShotModuleBufferize use OpInterface (#110322)" (#113124)
This reverts commit 2026501cf107fcb3cbd51026ba25fda3af823941.

Failing bot:
  * https://lab.llvm.org/staging/#/builders/125/builds/389
2024-10-22 13:28:44 +01:00
Haojian Wu
a6d6c00fe7
[clang] Lifetimebound in assignment operator should work for non-gsl annotated types. (#113180)
This issue is identified during the discussion of [this
comment](https://github.com/llvm/llvm-project/issues/112234#issuecomment-2426102198).

There will be no release note for this fix as it is a follow-up to
[#106997](https://github.com/llvm/llvm-project/pull/106997).
2024-10-22 14:22:06 +02:00
Krasimir Georgiev
deecfa90c6
bazelbuild: adapt for commit b735c66da9 (#113302) 2024-10-22 13:59:59 +02:00
Paul Walker
f1ade1f874
[LLVM][CodeGen][AArch64] while_le(#,max_int) -> all_active (#111183)
When the second operand of an incrementing while instruction is the
maximum value, comparisons that include equality can never fail.
2024-10-22 12:28:39 +01:00
lifengxiang1025
cd290a6480
[Doc] Update a broken link in CompileCudaWithLLVM (#113282) 2024-10-22 19:28:22 +08:00
Jay Foad
b3acb25735
[AMDGPU] Don't rely on !eq comparing int with bits<5>. NFC. (#113279)
Tweak VOP2eInst_Base so that it does not rely on !eq comparing an int
value (-1) with a bits<5> value. This is to avoid a change in behaviour
when #112904 lands, which is a bug fix which has the side effect of
implicitly casting template arguments to the declared template parameter
type.
2024-10-22 12:20:36 +01:00
Alex Voicu
6e0b0038cd
[clang][OpenCL][CodeGen][AMDGPU] Do not use private as the default AS for when generic is available (#112442)
Currently, for AMDGPU, when compiling for OpenCL, we unconditionally use
`private` as the default address space. This is wrong for cases where
the `generic` address space is available, and is corrected via this
patch. In general, this AS map abuse is a bad hack and we should re-work
it altogether, but at least after this patch we will stop being
incorrect for e.g. OpenCL 2.0.
2024-10-22 12:05:48 +01:00
Emilia Kond
aea60ab94d
[clang-format] Make bitwise and imply requires clause (#110942)
This patch adjusts the requires clause/expression parser to imply a
requires clause if it is preceded by a bitwise and operator `&`, and
assume it is a reference qualifier. The justification is that bitwise
operations should not be used for requires expressions.

This is a band-aid fix. The real problems lie in the lookahead heuristic
in the same method. It may be worth it to rewrite that whole heuristic
to track more state in the future, instead of just blindly marching
forward across multiple unrelated definitions, since right now, the
definition following the one with the requires clause can influence
whether the heuristic chooses clause or expression.

Fixes https://github.com/llvm/llvm-project/issues/110485
2024-10-22 13:36:28 +03:00
James Chesterman
11c818816d
[AArch64] Improve index selection for histograms (#111150)
Removes unnecessary extends on the indices passed into histogram instructions. It also removes the instruction when the mask is zero.
2024-10-22 11:14:00 +01:00
Jay Foad
e7f1dae412
[AMDGPU] gfx1152 does not have Feature1_5xVGPRs (#113163) 2024-10-22 11:12:00 +01:00
Akshat Oke
ca32bd643b
[NewPM][AMDGPU] Port SIPreAllocateWWMRegs to NPM (#109939) 2024-10-22 15:37:08 +05:30
Akshat Oke
f8cb526076
[AMDGPU] Add tests for SIPreAllocateWWMRegs (#109963) 2024-10-22 15:33:46 +05:30
Akshat Oke
4e32d7236b
[NewPM][CodeGen] Port LiveRegMatrix to NPM (#109938) 2024-10-22 15:28:04 +05:30
Akshat Oke
75ec65e384
[CodeGen] LiveIntervalUnions::Array Implement move constructor (#111357)
Solves the double free error.
2024-10-22 15:23:58 +05:30
Akshat Oke
834b820f40
[AMDGPU] Correct pass dependencies for SILowerSGPRSpills (#109937)
Replace unused analysis (VirtRegMap) dependency with the used one (SlotIndexes)
Initializes `SlotIndexesWrapperPass` which is used by SILowerSGPRSpills to ensure that legacy pass manager finds it.
Removes the initialization for `VirtRegMapWrapperPass` since it is not requested in this pass.
2024-10-22 15:20:54 +05:30
Akshat Oke
93802815ab
[NewPM][CodeGen] Port VirtRegMap to NPM (#109936) 2024-10-22 15:15:56 +05:30
Caroline Concatto
83c6e2f8f4 Revert "[LLVM][AArch64]Add assembly/disassembly for compare-and-branch instructions (#112726)"
This reverts commit dc84337f7b5bb2447e30f3364ebc863e9e04b8be.

Reversting because the sanitizer fails with the following error
llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp:502:56:
    runtime error: left shift of negative value -256
2024-10-22 09:37:11 +00:00
Vlad Serebrennikov
6bb72de75a [clang][NFC] Update cxx_dr_status.html 2024-10-22 12:16:07 +03:00
Congcong Cai
c0c36aa018
[clang codegen] fix crash emitting __array_rank (#113186)
Fixed: #113044
the type of `ArrayTypeTraitExpr` can be changed, use i32 directly is
incorrect.

---------

Co-authored-by: Eli Friedman <efriedma@quicinc.com>
2024-10-22 17:03:51 +08:00
Andrei Safronov
1e9a296557
[Xtensa] Implement branch analysis. (#110959) 2024-10-22 11:59:37 +03:00
Ramkumar Ramachandra
d897ea37db
LAA: check nusw on GEP in place of inbounds (#112223)
With the introduction of the nusw flag in GEPNoWrapFlags, it should be
safe to weaken the check in LoopAccessAnalysis to just check the nusw
flag on the GEP, instead of inbounds.
2024-10-22 09:58:54 +01:00
Ramkumar Ramachandra
f719cfa868
LAA: be less conservative in isNoWrap (#112553)
isNoWrap has exactly one caller which handles Assume = true separately,
but too conservatively. Instead, pass Assume to isNoWrap, so it is
threaded into getPtrStride, which has the correct handling for the
Assume flag. Also note that the Stride == 1 check in isNoWrap is
incorrect: getPtrStride returns Strides == 1 or -1, except when
isNoWrapAddRec or Assume are true, assuming ShouldCheckWrap is true; we
can include the case of -1 Stride, and when isNoWrapAddRec is true. With
this change, passing Assume = true to getPtrStride could return a
non-unit stride, and we correctly handle that case as well.
2024-10-22 09:55:51 +01:00
Younan Zhang
d15559d69d
[Clang] Don't assert on substituted-but-yet-expanded packs for nested lambdas (#112896)
Nested lambdas could refer to outer packs that would be expanded by a
larger CXXFoldExpr, in which case that reference could happen to be a
full expression containing intermediate types/expressions, e.g.
SubstTemplateTypeParmPackType/FunctionParmPackExpr. They are designated
as "UnexpandedPack" dependencies but don't introduce new packs anyway.

This also handles a missed case for VarDecls, where the flag of
ContainsUnexpandedPack was not propagated up to the surrounding lambda.

Fixes #112352
2024-10-22 16:51:43 +08:00