> On 23 Jul 2026, at 18:24, Jeffrey Law <[email protected]> wrote:
> 
> 
> 
> On 7/22/2026 9:24 AM, [email protected] wrote:
>> From: Kyrylo Tkachov <[email protected]>
>> 
>> noce_convert_multiple_sets keys its dependency information by destination
>> register number.  Hard registers can have overlapping definitions in
>> different modes.  An exact RTL replacement cannot represent the value from a
>> partial or mode-changing definition.
>> 
>> Reject hard-register destinations in the block eligibility check.  Assert
>> the resulting pseudo-only invariant when dependency information is
>> initialized.
>> 
>> Add an RTL execution test with mixed-mode hard-register definitions.  It
>> verifies that the block remains unconverted.
>> 
>> Bootstrapped and regtested on aarch64-none-linux-gnu and
>> x86_64-pc-linux-gnu.
>> 
>> gcc/ChangeLog:
>> 
>> PR rtl-optimization/126184
>> * ifcvt.cc (init_noce_multiple_sets_info): Assert that destinations
>> are pseudos.
>> (bb_ok_for_noce_convert_multiple_sets): Reject hard-register
>> destinations.
>> 
>> gcc/testsuite/ChangeLog:
>> 
>> PR rtl-optimization/126184
>> * gcc.target/aarch64/pr126184-2.c: New test.
> It may be over-aggressive in rejecting (imagine if we only have one hard 
> register assignment in the block within the set of multiple assignments).  
> But I wouldn't really want to chase that kind of case without some evidence 
> it matters.
> 
> So, OK.

Thanks Jeff, could you also have a look at 2/2 at
https://gcc.gnu.org/pipermail/gcc-patches/2026-July/725012.html please?
I think Robin is happy with that as well, and I’d like to get it in so that I 
can propose the 16.2 backport.
Kyrill

> 
> Jeff


Reply via email to