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

Jorn Wolfgang Rennecke <amylaar at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |olegendo at gcc dot gnu.org

--- Comment #2 from Jorn Wolfgang Rennecke <amylaar 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);
>         }

The condition for this block used to be:
  else if (! TARGET_SH5 && scratch0 != scratch1)
because the SH5 SHcompact indexed addressing doesn't actually work
the way GCC expects indexed addressing to work.

Thus, the second block (quoted first) is SH5 code.

Reply via email to