[SPIRV][NFC] Merge Subgroup Reduce into uniform selector (#178802)
The ReduceMax, ReduceMin, and ReduceSum selectors were all doing the
samething with the exception of which opcode they were using.
This change unifies these implementations and allows pick the opcode via
a helper lambda.
[clang][driver][darwin] Tweak the use after scope fix in Darwin driver toolchain (#178981)
It's ever so slightly cleaner looking and less error prone to make the
SmallVector hold std::string instead of making a local just for the
version string.
[compiler-rt][common] Don't try to unmap non-page aligned pointers
When the sanitizer hasn't mapped the alternate signal stack, but the
host program has (like LLVM), the stack's base pointer may not be
aligned, if it were allocated via malloc, and thus wouldn't be safe to
unmap anyway. A solution that doesn't unmap the alternate stack unless
the sanitizer had mapped it in the first place will take more time to
design. For now, we can just avoid calling munmap on pointers without
the correct alignment.
[flang] Add support for additional compiler directive sentinel (#178941)
This patch allows to set up additional compiler directive sentinel in
addition to the default `!dir$`. Some user code could use other vendor
specific compiler directive sentinel and this solution allows to add
them to the parser options.
[lld][MachO] Accept hex format for cstring hashes in order file (#178933)
Support both decimal and hexadecimal formats for cstring hashes in
the order file. Hex values must use the 0x prefix (case insensitive).
Examples:
CSTR;1234567890 (decimal)
CSTR;0x499602D2 (hex)
Co-authored-by: Sharon Xu <sharonxu at fb.com>
[clang][Driver] Fix use after scope in darwin driver (#178967)
`Version.getAsString()` returns an `std::string`, and thus the
`StringRef` points to an invalid location when pushed into the
Components vector. This just keeps the temporary alive for the
new string to be generated, to fix the ASAN failure after #176541
Attributor: Use anchor scope for SimplifyQuery context (#178958)
This was asserting in computeKnownFPClass when a dominator tree
check happened across functions.
Fixes #178954
[clang][Driver] Fix use after scope in darwin driver
`Version.getAsString()` returns an `std::string`, and thus the
`StringRef` points to an invalid location when pushed into the
Components vector. This just keeps the temporary alive for the
new string to be generated, to fix the ASAN failure after #176541
[AArch64] Convert CLS intrinsics to use ISD::CTLS (#178885)
This patch converts AArch64 CLS intrinsics (aarch64_neon_cls) to use the
generic ISD::CTLS node.
- aarch64_neon_cls: Lowered to ISD::CTLS, pattern-matched to CLS
instruction
- Set ISD::CTLS as Legal for NEON vector types (v8i8, v16i8, v4i16,
v8i16, v2i32, v4i32)
Also adds generic CTLS expansion support:
- ExpandIntRes_CTLS in LegalizeIntegerTypes for i64->i32 type expansion
- expandCTLS in TargetLowering for targets without native CLS
instruction
Part of: https://github.com/llvm/llvm-project/issues/174337
[SystemZ] Bugfix: Add VLR16 to SystemZInstrInfo::copyPhysReg(). (#178932)
Support COPYs involving higher FP16 regs (like F24H) with a new pseudo
instruction 'VLR16'.
This is needed with -O0/regalloc=fast, and probably in more cases as
well.
Fixes #178788.
lldb-dap: Stop using replicated variable ids (#124232)
Closes #119784
Probably closes #147105 as well, but I couldn't test due to #156473:
This PR fixes two bugs:
1. It generates unique variable reference IDs per suspended debuggee
state.
2. It stores all created variables in a stopped state instead of
dropping variables in unselected scopes. So it can properly handle all
scope/variable requests
It does this by storing all variables in their respective scopes and
using that mapping in request handlers that relied on the old mapping.
It dynamically creates new variable/scope IDs instead of resetting IDs
whenever a new scope is created.
I also removed some unused code as well.
[5 lines not shown]
Attributor: Use anchor scope for SimplifyQuery context
This was asserting in computeKnownFPClass when a dominator tree
check happened across functions.
Fixes #178954
[LV] Add additional partial reduction test coverage for #167851.
Add test cases for which earlier versions of
https://github.com/llvm/llvm-project/pull/167851 was not NFC.
Test chained_sext_adds is moved to a new file.
[CIR][NFC] Add OGCG tests for coroutines (#178821)
This PR adds OGCG tests for `coro-task.cpp`. These tests are intended to
be used once the lowering is implemented, allowing us to compare the
generated output.
[ThinLTO] Stop attempting variable import once we see a non-variable (#178944)
This is a compile time improvement. Instead of looking through every
single copy of a value (of which there can be many for large targets
with linkonce_odr copies of the same values) for an importable variable,
stop immediately after we see a non-variable summary.
In most cases this is NFC because we expect all copies of a value to be
of the same type (e.g. all variables, or all functions). This only makes
a noticeable, slightly conservative, change in the case of same-named
local values in different modules compiled without distinguishing path.
The new test shows the effect of this (and is safe due to PR178761).
This makes a large reduction in thin link time for large targets that
have many copies of linkonce_odr vtables, all referencing functions.
[OpenMP] Remove LLVM_ENABLE_PROJECTS=openmp build mode (#176950)
Reapply #152189 and #174963 which were reverted because it broke
publish-sphinx-docs and publish-doxygen-docs.
The build mode has been deprecated in #136314 and was supposed to be
removed in the LLVM 21 release (#136314).
OpenMP currently supports 4 build modes:
* `cmake <llvm-project>/llvm -DLLVM_ENABLE_PROJECTS=openmp`
* `cmake <llvm-project>/llvm -DLLVM_ENABLE_RUNTIMES=openmp` (bootstrapping build)
* `cmake <llvm-project>/openmp` (standalone build)
* `cmake <llvm-project>/runtimes -DLLVM_ENABLE_RUNTIMES=openmp` (runtimes default/standalone build)
Each build mode increased the maintanance overhead since all build modes
must continue working and user confusion when there do not (see #151117,
#174126, #154117, ...). Let's finally remove it.
[WebAssembly] Prevent FastISel from trying to select funcref calls (#178742)
Before, Wasm FastISel treated all indirect calls the same, causing
miscompilations at O0 when trying to call a funcref (`call ptr
addrspace(20)`), as it would treat the funcref as a normal `ptr`
This adds a check so it falls back to ISelDAG when encountering calls
outside addrspace 0 (which covers direct calls and indirect calls
through normal function pointers).
Related: #140933