https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85993
Bug ID: 85993 Summary: config/sh/sh.c:10878: suspicious if .. else chain Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- Target: sh 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.