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