On 11/3/2021 7:53 AM, Maciej W. Rozycki wrote:
Correct a `vax-netbsdelf' target regression ultimately caused by commit
c605a8bf9270 ("VAX: Accept ASHIFT in address expressions") (needed for
LRA) and as of commit 4a960d548b7d ("Avoid invalid loop transformations
in jump threading registry.") causing a build error in libgcc:
But within a MEM the ASHIFT should have been canonicalized into a MULT by an appropriate power of two according to the canonicalization rules.



.../libgcc/libgcov-driver.c: In function 'gcov_do_dump':
.../libgcc/libgcov-driver.c:686:1: error: insn does not satisfy its constraints:
   686 | }
       | ^
(insn 2051 2050 2052 185 (set (reg/f:SI 0 %r0 [555])
         (plus:SI (ashift:SI (mem/c:SI (plus:SI (reg/f:SI 13 %fp)
                         (const_int -28 [0xffffffffffffffe4])) [40 %sfp+-28 S4 
A32])
                 (const_int 3 [0x3]))
             (plus:SI (reg/v/f:SI 9 %r9 [orig:176 fn_buffer ] [176])
                 (const_int 24 [0x18])))) ".../libgcc/libgcov-driver.c":172:40 
614 {movaddrdi}
      (nil))
I'm guessing this insn is the result of reloading an address within a MEM into a REG.   Had that address been in a canonical form I don't think this patch would be needed.

Am I missing something?

jeff

Reply via email to