[clang][test] Add `%clang_cc1_cg_arm64_neon` substitution (#188547)
Add a LIT substitution `%clang_cc1_cg_arm64_neon` expanding to:
```python
clang -cc1 -internal-isystem <path> \
-triple arm64-none-linux-gnu \
-target-feature +neon -o -
```
This invocation is repeated across multiple tests. Introducing a
substitution reduces duplication, shortens RUN lines, and ensures
consistency across `clang -cc1` invocations.
Shorter RUN lines also make test-specific flags easier to spot.
[mlir][gpu] Reject conflicting async operands on gpu.launch_func (#196012)
Reject gpu.launch_func ops that have both async dependencies and an
explicit async object.
[mlir] Use custom mlir::Complex type for non-float complex numbers (#191821)
Instantiating std::complex for types where std::is_floating_point<T> is
false is not allowed, and throws warnings when building with MSSTL. This
patch fixes those warnings by introducing an mlir::Complex type, which
is a typedef to std::complex when T satisfies is_floating_point, and a
custom complex type otherwise.
The std::complex implementation from libc++ has been used as a guide for
implementing the custom type.
Fixes #65255
[OpenMP][offload] Inline target reductions
Significantly reduces register usage and removes register spilling in
`offload/test/offloading/multiple-reductions.cpp`, for example.
Provides speedup of up to 5-10x for a lot of reductions in such a larger
setup.
[OpenMP][offload] Add enhanced cross-team reduction test
Tests different patterns of OpenMP cross-team reductions, for multiple
data types.
If run with `LIBOMPTARGET_INFO=16`, shows current register spilling due
to dispatch jump chains (which grow for every reduction in the same
translation unit) for indirect function calls in the reduction runtime.
[lldb] Remove name field from StatsSuccessFail (#195039)
Each *Stats struct is supposed to serialize into JSON and contains the
data to serialize *itself* into JSON. However, the StatsSuccessFail also
contains a `name` field which is only interesting for the *parent* Stats
class. This patch just removes the field as it is only used for storing
a constant string that is only used once during serialization.
[gn] Fix a benign bug in write_cmake_config.py (#196043)
A local read() function was ignoring its parameter and was instead
always using the value that was passed in as parameter anyways.
No actual behavior change.
[LLVM][Constants] Store "splat (float 0.0)" as ConstantFP rather than ConstantAggregateZero. (#195284)
The original split is awkward because, not unreasonably, some code paths
expect constant folding of ConstantFP operands to yield a ConstantFP
result.
Fixes https://github.com/llvm/llvm-project/issues/194590
[flang][NFC] Converted select-type.f90 test to HLFIR (#195777)
Lower/select-type.f90 took special care to convert from legacy lowering
to HLFIR lowering.
Assisted-by: AI
[flang-rt] Avoid libstdc++ guard symbols in RTNAME(Timef) (#195984)
The function-local `static Lock timef_lock;` introduced by PR #185377
required thread-safe-static initialization, which causes the compiler to
emit calls to `__cxa_guard_acquire`/`__cxa_guard_release` from
libsupc++/libc++abi -- a C++ runtime library dependency that flang-rt
explicitly avoids (see comment in
flang-rt/include/flang-rt/runtime/lock.h).
Move `timef_lock` to namespace scope, matching the existing
`rand_seed_lock` pattern in the same file. The other function-local
statics (`start`, `ticks_per_sec`, `isInit`) have constant initializers
and are unaffected.
Assisted-by: AI
[Dexter] Add timestamps to DAP logging (#193705)
DAP logs are currently optionally output by Dexter to assist in
debugging or analyzing Dexter sessions. The output currently includes
the contents of every DAP message sent to/from the debug adapter, but
for some long-running programs it can also be useful to know when
messages have been sent and received; to assist, this patch adds
timestamps to DAP messages in the log.
[SPIRV] Fix failure on the `llvm.trap` test (#195996)
The `llvm.trap` test was failing with the expensive checks enabled,
because the backend incorrectly created the `OpConstant` and
`OpConstantNull` instructions for the operand of `OpAbortKHR` in the
same basic block. When there are multiple `llvm.trap` intrinsics, they
reuse the same operand, which doesn't dominate all the users. This
commit moves the constant into the function entry block to ensure it
dominates all the users.
Assisted-by: Claude Opus 4.6 <noreply at anthropic.com>