[libc++][ci] Retarget the ARM BuildKite runners (#224107)
I enabled agent clusters in BuildKite since unclustered agents are not
supported anymore. As part of that, I created a new libcxx-builders-arm
queue to replace the existing queue. This patch switches the pipeline
definition so that new jobs start targeting the new queue with clustered
agents.
[ORC] Link LLVMOrcShared against TargetParser
Mangler::fromTriple() calls Triple::computeDataLayout(), which lives in
LLVMTargetParser, but LLVMOrcShared only lists Support as a link
component.
This goes unnoticed in a static build: the component is an archive, so
the reference is not resolved until the final executable link, where
LLVMTargetParser is present anyway. With BUILD_SHARED_LIBS=ON each
component becomes a shared library linked with -Wl,-z,defs, and linking
LLVMOrcShared itself fails:
ld.lld: error: undefined symbol:
llvm::Triple::computeDataLayout[abi:cxx11](llvm::StringRef) const
>>> referenced by Mangler.cpp:50
Fix the S3 suite against CI run #372
The session wiped its own credentials. _clean_leftovers matched every
name by the s3proto prefix and ran inside s3_deployment, which resolves
s3_accounts first -- so it deleted the three access keys the session had
just created, and every signed request from the first test onward
answered InvalidAccessKeyId. 259 failed, 194 errored, and the 24 that
passed were the ones asserting a bare 403. It is a session fixture of
its own now, ordered ahead of the accounts.
A credential check goes in beside it, because that failure is
indistinguishable per-test from an authorization one and silent in every
case that asserts a bare 403: the session proves all three keys clear
the credential layer before a single case depends on one.
Two grant cases were wrong about the model, not about the server. An
allow mode that does not carry an operation is not a refusal of it --
where the bucket has live S3 ACLs the evaluator defers to the object's
own record, and a grantee owns what it wrote, so a WRITEONLY grantee
[12 lines not shown]
[RelLookupTableConverter] Allow multiple uses of loaded value (#223853)
RelLookupTableConverter previously required `!Load ||
!Load->hasOneUse()`, which prevented converting lookup tables if the
loaded pointer was used more than once in the function.
This restriction is unnecessary since the loaded value itself can be
used many times. The check was likely an over-zealous carryover from
`GV->hasOneUse()` and `GEP->hasOneUse()`.
Remove the check and add a test verifying that lookup tables with
multiple uses of the loaded pointer are converted.
[AMDGPU][Doc] Add documentation about ABI occupancy
This PR introduces ABI occupancy in documentation. The actual code
implementation will be in follow-up PRs.
risc-v: revert the change for generic_bs_r_4
According to the RISC-V ABI Calling Convention an integer scalars
narrower than XLEN bits are widened according to the sign of their
type up to 32 bits, then sign-extended to XLEN bits.
Fix bazel build for llvm_exegesis_tests (#224085)
- llvm/unittests:llvm_exegesis_tests: Fixes
https://github.com/llvm/llvm-project/pull/208364 (commit 6c31f6446a55)
Root cause: Adding PerfHelperTest.cpp introduced an include of
<perfmon/perf_event.h> under HAVE_LIBPFM, which failed layering_check
and was missing a dependency on libpfm. Fix: Disable layering_check
[Clang] Fix `-Wsign-compare` assertion when negating a vector of unsigned integers (#223295)
Fixes #203575
`-1 == -*c`, where `c` points to a vector of `unsigned`, hit the
`unsigned range includes negative?` assertion in `AnalyzeComparison`.
The range analysis for unary `-` and `~` (added in #126846) checks
whether the result type is unsigned with `isUnsignedIntegerType()`,
which never looks through vector types. So the negated unsigned vector
was treated as a signed negation and came back with a possibly-negative
range, even though the operand's own range was correctly unsigned. Same
story for `~*c`.
The check now uses `hasUnsignedIntegerRepresentation()`, which looks
through vector and matrix element types the same way
`IntRange::forValueOfType` and the caller in `AnalyzeComparison` already
do. The binary-operator result gets the same predicate for its
non-negative fixup, since it had the identical blind spot. With that, a
negated unsigned vector takes the same path as a negated `unsigned`
scalar, and the comparison warns about mixed signs again as it did
before Clang 21.