https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85993

Oleg Endo <olegendo at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-05-31
     Ever confirmed|0                           |1

--- Comment #3 from Oleg Endo <olegendo at gcc dot gnu.org> ---
(In reply to David Binderman from comment #0)
> config/sh/sh.c:10878:12: warning: duplicated ‘if’ condition
> [-Wduplicated-cond]
> 
> Source code is
> 
>      else if (scratch0 != scratch1)
>         {
>           emit_move_insn (scratch1, GEN_INT (vcall_offset));
>           emit_insn (gen_add2_insn (scratch0, scratch1));
>           offset_addr = scratch0;
>         }
> 
> but earlier is code
> 
>      else if (scratch0 != scratch1)
>         {
>           /* scratch0 != scratch1, and we have indexed loads.  Get better
>              schedule by loading the offset into r1 and using an indexed
>              load - then the load of r1 can issue before the load from
>              (this_rtx + delta) finishes.  */
>           emit_move_insn (scratch1, GEN_INT (vcall_offset));
>           offset_addr = gen_rtx_PLUS (Pmode, scratch0, scratch1);
>         }
> 
> Interestingly, the two blocks of code in the ifs aren't the same.

The line 10864 used to be:

  else if (! TARGET_SH5 && scratch0 != scratch1)

and I chopped it off to be 

  else if (scratch0 != scratch1)

when removing support for SH5.  I haven't noticed that the 2nd else if block
became unreachable.  It can be removed.

Reply via email to