This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/81621] ICE in delete_insn, at cfgrtl.c:167 with s390x cross compiler


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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2017-08-02
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 41896
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41896&action=edit
gcc8-pr81621.patch

Untested fix.  The problem is that the bb-reorder pass does:
  df_set_flags (DF_DEFER_INSN_RESCAN);
but doesn't call df_finish_pass nor return TODO_df_finish to let the pass
manager to handle that.  And we enter ira with that changeable flag, where
e.g.:
        delete_insn (move_insn);
        while ((other_def = DF_REG_DEF_CHAIN (REGNO (other_reg))))
          delete_insn (DF_REF_INSN (other_def));
        delete_insn (def_insn);
in move_unallocated_pseudos heavily relies on df updates not being deferred.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]