[ARM][GlobalISel] Add legalizer and regbankselect tests for G_CONSTANT_FOLD_BARRIER
Cover the s32 (legal), s16 (widened), and s64 (narrowed) legalizer
actions, and the GPR bank mapping.
Assisted-by: Claude Opus 5.5
[libclang] Only resolve dependent member names, not arbitrary callees
HeuristicResolver::resolveCalleeOfCallExpr() does more than resolve
dependent names: for a callee that is itself a call it returns the class the
inner call returns, for a dependent ADL call it returns the single visible
candidate, and it looks through parentheses. That made the cursor for
'm.make()()' refer to the class 'Functor', and changed the result for some
non-dependent calls.
Instead, look through a call to its callee as getDeclFromExpr() does, and
only use HeuristicResolver for CXXDependentScopeMemberExpr and
DependentScopeDeclRefExpr. Add tests for both cases and a release note.
Assisted-by: Claude Opus 5.5
MC: Remove MCAsmInfo::ExceptionsType (#233030)
The exception model now comes from the module, and the MCAsmInfo
predicates that depend on it take the model as a parameter. The
target's default model is still available from
Triple::getDefaultExceptionHandling.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
devel/go-wire: Update 1.3.0 => 1.3.1
Changelog:
https://github.com/goforj/wire/releases/tag/v1.3.1
Port changes:
- Add pkg-message to inform that it requires a symlink to Go
to be able to launch go-wire which can be solved by installing
the lang/go package.
- Also require Go for runtime via USES.
PR: 299684
Approved by: osa, vvd (Mentors, implicit)
MFH: 2026Q4
(cherry picked from commit 87202e4f2cc1d0c24a8a7bfb9d938d245dff8c5b)
devel/go-wire: Update 1.3.0 => 1.3.1
Changelog:
https://github.com/goforj/wire/releases/tag/v1.3.1
Port changes:
- Add pkg-message to inform that it requires a symlink to Go
to be able to launch go-wire which can be solved by installing
the lang/go package.
- Also require Go for runtime via USES.
PR: 299684
Approved by: osa, vvd (Mentors, implicit)
MFH: 2026Q4
smsc: Use read-modify-write to configure LEDs
After reset the driver enables three LED outputs by writing 1s to
the appropriate GPIO/LED configuration bits in the LED & GPIO
configuration register LED_GPIO_CFG.
The LED Select (LED_SEL) bit in LED_GPIO_CFG chooses between two LED
modes:
0: Speed, Link+Activity, Full Duplex
1: Speed, Link, Activity
If an EEPROM is present LED_SEL is initialized from bit 1 in the
EEPROM's configuration flags value. If no EEPROM is present this bit
defaults to zero.
Previously we wrote to all bits in the register, clearing LED_SEL. A
device with LED_SEL set by the EEPROM would thus not have correct LEDs.
[6 lines not shown]
smsc: Support external PHY
SMSC_HW_CFG_PSEL indicates that an external PHY is present. Skip the
internal PHY initialization when set and store the ID of the detected
PHY.
Reviewed by: br
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D60744
smsc: Remove phy address check in smsc_miibus_writereg
The driver only allowed writes to the expected phy (i.e., sc->sc_phyno),
and reads were never filtered. sc_phyno is already passed to
mii_attach() as phyloc, so nothing tries to issue MDIO writes to other
addresses and the check is not required.
Remove the check in advance of supporting external PHYs at arbitrary
addresses.
Tested on Microchip's EVB-LAN9500A-LC LAN9500A evaluation board.
Sponsored by: The FreeBSD Foundation
Sponsored by: Microchip (Hardware)
Differential Revision: https://reviews.freebsd.org/D60743
[AMDGPU] Update waterfall-call-inreg-agpr.ll mismatched CC (#235075)
update test such that the call CC matches the CC of the target function
Identified while investigating
https://github.com/llvm/llvm-project/issues/234232
[SimplifyCFG] Propagate unknown weights in ConstantFoldTerminator (#234823)
Before we were just dropping the metadata node which causes a profcheck
failure. Propagate the unknown profile so the profcheck verifier knows
that we have dealt with this case.
Found while doing a bootstrapping build of LLVM with -mllvm
-enable-profcheck-in-pipeline.
[libclang] Resolve dependent member references in clang_getCursorReferenced
Inside a class template, references to members of a dependent base, such
as 'this->size()' where the base is 'A<T>', aren't bound to a declaration
until instantiation, so clang_getCursorReferenced() returned a null cursor
for them.
Fall back to HeuristicResolver, which clangd uses for the same purpose, to
look the name up in the primary template, and return the result if it's a
single declaration. This also resolves 'type_trait<T>::value' in a
requires-clause or concept to the primary template's static member.
'A<T>::size()' (a qualified reference to an instance member) still isn't
resolved, because HeuristicResolver only considers static members for a
DependentScopeDeclRefExpr.
Addresses part of #15370.
Assisted-by: Claude Opus 5.5
InlineSpiller: Stop adding kill flags on virtual registers
The spiller was marking uses of the new virtual registers created for
rematerialization and spilling as killed. VirtRegRewriter recomputes
kill flags from live intervals after allocation, so these were never
needed.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[RegAlloc] Restrict statepoint remat by default
Statepoint deopt and GC operands may live in stack slots, but when a
statepoint has more of them than there are registers, InlineSpiller
can rematerialize them into registers in front of it. Greedy then
runs out of registers and the basic allocator asserts.
restrict-statepoint-remat makes these operands spill and fold into
the statepoint instead. It was added off by default pending
validation, and the statepoint register allocation tests already
enable it, so turn it on by default.
AArch64: Stop adding kill flags on new virtual registers
Continue purging uses of kill flags
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[Interpreter] Strip the '\01' mangling escape when looking up external functions
The interpreter looked up external functions, both in its "lle_X_" table
and via dlsym() for libffi calls, using the IR name as-is. A declaration
such as @"\01printf" or @"\01_stat$INODE64" (as produced for asm labels)
was looked up with the escape, and on targets with a global prefix also
with the prefix, so it failed with "Tried to execute an unknown external
function" even though the JIT handled it.
Drop the escape and, if present, the data layout's global prefix before
looking the function up.
Fixes #5852.
Assisted-by: Claude Opus 5.5
[PowerPC] Remove unnecessary FP_EXTENDS from non-compare operand of FSEL. NFCI (#231540)
The first operand of PPCISD::FSEL always needs to be f64, but not the
second or third operand. Those operands need to match each other and the
result type.
AI tells me that f32 operands are already held in f64 format so an
fp_extend codegens to a copy.
Found while adding verification of SDTCisSameAs in
SDNodeInfo::verifyNode.
Assisted-by: Claude
[ARM][GlobalISel] Legalize G_CONSTANT_FOLD_BARRIER
The IRTranslator emits G_CONSTANT_FOLD_BARRIER for the no-op bitcasts that
ConstantHoisting uses to materialize hoisted constants, but ARM had no
legalizer rule or register bank mapping for it, so ordinary code such as
an add and a mul sharing a large constant failed with "unable to legalize
instruction" at -O2.
Mark it legal for s32 (clamping other scalar sizes) and map it to GPRs, as
AArch64, X86, and RISC-V already do. InstructionSelect removes it
generically.
Fixes #235104.
Assisted-by: Claude Opus 5.5