>But here, after reload completes, there shouldn't be pseudos in the IL, so >the condition should not trigger anymore.
At that point we'll just exit the condition earlier with !reload_completed. On Thu, Oct 23, 2014 at 1:40 AM, Jakub Jelinek <ja...@redhat.com> wrote: > On Wed, Oct 22, 2014 at 03:34:38PM -0600, Jeff Law wrote: >> >--- a/gcc/cse.c >> >+++ b/gcc/cse.c >> >@@ -6953,6 +6953,11 @@ delete_trivially_dead_insns (rtx_insn *insns, int >> >nreg) >> > /* If no debug insns can be present, COUNTS is just an array >> > which counts how many times each pseudo is used. */ >> > } >> >+ /* Pseudo PIC register should be considered as used due to possible >> >+ new usages generated. */ >> >+ if (pic_offset_table_rtx >> >+ && REGNO (pic_offset_table_rtx) >= FIRST_PSEUDO_REGISTER) >> >+ counts[REGNO (pic_offset_table_rtx)]++; >> > /* Go from the last insn to the first and delete insns that only set >> > unused >> > registers or copy a register to itself. As we delete an insn, remove >> > usage counts for registers it uses. >> Shouldn't this also be guarded with !reload_completed? One reload is >> complete all the implicit references to the PIC register should be explicit >> and thus there's no need to treat the PIC register special. > > Supposedly this one yes. > >> >diff --git a/gcc/dce.c b/gcc/dce.c >> >index 5b7d36e..a52a59c 100644 >> >--- a/gcc/dce.c >> >+++ b/gcc/dce.c >> >@@ -127,6 +127,10 @@ deletable_insn_p (rtx_insn *insn, bool fast, >> >bitmap arg_stores) >> > if (HARD_REGISTER_NUM_P (DF_REF_REGNO (def)) >> > && global_regs[DF_REF_REGNO (def)]) >> > return false; >> >+ /* Initialization of pseudo PIC register should never be removed. */ >> >+ else if (DF_REF_REG (def) == pic_offset_table_rtx >> >+ && REGNO (pic_offset_table_rtx) >= FIRST_PSEUDO_REGISTER) >> >+ return false; >> Similarly. > > But here, after reload completes, there shouldn't be pseudos in the IL, so > the condition should not trigger anymore. > > Jakub