[ORC] Fix OrcCAPITestBase.ExecutionTest on Darwin/arm64e (#223577)
Switch to ExecutorAddr::toPtr to sign the function pointer. We'll need a
C API solution for this eventually, but this will do for now to get the
test passing.
rdar://186687669
[mlir][tosa] Use optnone for compliance initialization under MSan (NFC) (#223586)
The compliance-map constructor includes a ~5,000-line generated
initializer.
Under MemorySanitizer, shadow and origin tracking instrumentation on
this single mega-function causes extreme compilation times (>3.5
minutes),
dominated by InstCombine (~68s) and greedy register allocation (~71s).
Recently, LLVM_ATTRIBUTE_MINSIZE was added to optimize for size, but
MSan
instrumentation still inflates the function enough to trigger severe
slowdowns in the backend.
Mark the constructor with optnone under LLVM_MEMORY_SANITIZER_BUILD to
skip
expensive optimization and register allocation passes, bringing
compilation
time under MSan down from 3m38s to ~30s.
[5 lines not shown]
[RISCV] Select the capability ABI by default when the Y extension is enabled
computeDefaultABI() previously had no knowledge of the RVY (CHERI) base,
so a target with Y enabled and no explicit -target-abi
would fall back to the plain integer ABI instead of il32pc64(d)/
l64pc128(d).
This adds explicit non-RVY ABIs to two tests since otherwise those would
hit the assertion that the ABI is not supported yet. As the ABI does not
matter for these tests, we can safely use the non-RVY ones.
This change was created with the help of AI tools
Reviewed By: lenary
Pull Request: https://github.com/llvm/llvm-project/pull/213411
[CIR] Accept a union whose members do not cover its declared size
Past two eightbytes the x86_64 classifier never reads a union's members
to pick a coerce type. It either classifies the record as memory, which
needs no coerce type at all, or it classifies SSE followed by SSEUP, and
then the coerce type is a vector as wide as the whole record.
Assisted-by: Cursor / claude-opus-5
devel/zizmor: Add port: Static analysis for GitHub Actions
zizmor is a static analysis tool for CI/CD systems.
It can find and fix security issues in common CI/CD setups, including
GitHub Actions, Dependabot, and pre-commit. Some of the things zizmor
finds:
- Template injection vulnerabilities, leading to attacker-controlled
code execution
- Accidental credential persistence and leakage
- Excessive permission scopes and credential grants to runners
- Impostor commits and confusable git references
- ...and much more!
WWW: https://docs.zizmor.sh/
WWW: https://github.com/zizmorcore/zizmor
[CMake] Factor check- target deps to reduce build.ninja size by 45%
Many LLVM developers are not aware, but our lit CMake logic creates a
check-* target for every eligible subdirectory inside a lit test suite.
There are thousands of these targets; in the benchmark configuration:
```
❯ ninja -C build -t targets all | grep '^check-' | wc -l
2667
```
Chris Bieneman originally added this feature in March 2015. The original
change suppressed these targets for Xcode and Visual Studio because the
target clutter hurt IDE usability; rL344555 later generalized that
behavior behind LLVM_ENABLE_IDE.
When using the Ninja generator, each of these check-${proj}-${subdir}
targets repeats its suite's transitive test dependencies, like so:
[52 lines not shown]
[InstCombine] Add fold combining adjacent extracted bit fields to restore optimization for separate truncations (#219598)
This restores the InstCombine optimization that was lost (regression)
starting from Clang 14, when assembling adjacent bit fields extracted
from a wider integer.
The fold combines:
```
(trunc (lshr X, S) & M0) | (lshr (trunc X), S & M1) --> (trunc (lshr X, S) & (C0 | C1))
```
The fold handles both orderings. I implemented tests for this fold in
trunc.ll
alive2 proof: https://alive2.llvm.org/ce/z/rPQN4D
Fixes #215254