> > The test case listed in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46164
> > shows the expected asm command "mov r1, r1" is not generated."r1" is defined
> > as a volatile register, and there are three insns related to r1:
> > 
> >     (insn 98 97 40 3 (set (reg/v:SI 1 r1 [ b ]) (reg:SI 154 [ b ])) 
> >     (insn 41 40 43 3 (set (reg/f:SI 148)        (reg/v:SI 1 r1 [ b ]))
> >     (insn 43 41 45 3 (parallel [
> >             (set (reg/v:SI 0 r0 [ ret ])
> >                 (asm_operands/v:SI ("mov %2, %2  mov %3, %3  mov %4, %4")
> > ("=r") 0 [
> >                         (reg/v:SI 0 r0 [ a ])
> >                         (reg/v:SI 1 r1 [ b ])
> >                         (reg/v:SI 2 r2 [ c ])
> >                         (mem/c:QI (reg/f:SI 148) [0 MEM[(char *)&temp]+0 S1
> > A8])
> 
> 98+41 was not combined.  Why?  41+43 was not combined.  Why?

Actually, it looks like it first rejected 98+41, then combined 41+43 (and
that is fine), and then it combined 98+43?


Segher

Reply via email to