GCC bootstrap on s390x currently fails with:

/build2/gcc/libgcc/../gcc/libgcc2.c: In function '__ucmpdi2':
/build2/gcc/libgcc/../gcc/libgcc2.c:1169: internal compiler error: in
compare_ranges, at tree-vrp.c:3375

reload reassigns a hard reg to a pseudo which has been created by change-loop
(ira-emit.c). The pseudo is live across a bb boundary. The target bb has
another pred bb which clobbers the same hard reg which is chosen by reload for
the pseudo. So my current guess is that either the liveness info is broken for
the pseudo created by change_loop or reload does not respect it in some way.

The problem might be related to PR37859 which describes a problem where IRA is
not able to detect that a register has been modified in the loop body. I've
tried the patch: http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00780.html
without success.


-- 
           Summary: [4.4 Regression] Bootstrap failure due to miscompilation
                    of tree-vrp.c
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Keywords: wrong-code, ra
          Severity: critical
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: krebbel at gcc dot gnu dot org
 GCC build triplet: s390x-ibm-linux
  GCC host triplet: s390x-ibm-linux
GCC target triplet: s390x-ibm-linux


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

Reply via email to