On Mon, May 05, 2025 at 06:51:31PM +0300, Dimitar Dimitrov wrote:
> After r16-160-ge6f89d78c1a752, late_combine2 started transforming the
> following RTL for pru-unknown-elf:
> 
>   (insn 3949 3948 3951 255 (set (reg:QI 56 r14.b0 [orig:1856 _619 ] [1856])
>           (and:QI (reg:QI 1 r0.b1 [orig:1855 _201 ] [1855])
>               (const_int 3 [0x3])))
>        (nil))
>   ...
>   (insn 3961 7067 3962 255 (set (reg:SI 56 r14.b0)
>           (zero_extend:SI (reg:QI 56 r14.b0 [orig:1856 _619 ] [1856])))
>        (nil))
> 
> into:
> 
>   (insn 3961 7067 3962 255 (set (reg:SI 56 r14.b0)
>           (and:SI (subreg:SI (reg:QI 1 r0.b1 [orig:1855 _201 ] [1855]) 0)
>               (const_int 3 [0x3])))
>        (nil))
> 
> That caused libbacktrace build to break for pru-unknown-elf.  Register
> r0.b1 (regno 1) is not valid for SImode, which validate_subreg failed to
> reject.
> 
> Fix by calling HARD_REGNO_MODE_OK to ensure that both inner and outer
> modes are valid for the hardware subreg.  Remove the premature "success"
> return for paradoxical subregs, in order to allow subsequent validity
> checks to be executed.
> 


Please ignore this patch.  Linaro-TCWG-CI bot discovered that it causes
a regression for armv8l-unknown-linux-gnueabihf.

Regards,
Dimitar

Reply via email to