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 rtl-optimization/51978] New: ext-elim-1.c ICE on powerpc64


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51978

             Bug #: 51978
           Summary: ext-elim-1.c ICE on powerpc64
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: rtl-optimization
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: jakub@gcc.gnu.org
                CC: ebotcazou@gcc.gnu.org


The new testcase apparently ICEs on powerpc64-linux, supposedly -free has been
tested solely on x86_64-linux and i686-linux.

The problem is that add_removable_* uses note_stores to find the sign/zero
extending sets (wonder if it shouldn't use single_set instead, I guess that
should be sufficient for x86_64/i686 purposes) but then assumes that the
zero/sign extension is in a set right in PATTERN (cand->insn) by passing that
as set_pat (from which it uses XEXP (SET_SRC))).

The attached untested patch cures the ICE, still I wonder about the single_set
instead of note_stores, I'd expect the pass isn't really prepared to handle
multiple sets in parallel alongside with sign/zero extension anyway.

Additionally, I wonder if some of the PR51667 additions couldn't be dropped
again (4.8 material) now that we keep the UD/DU links for the whole duration of
the pass.


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