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

            Bug ID: 82863
           Summary: [8 Regression] ICE in verify_flow_info building SH
                    libgcc
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jsm28 at gcc dot gnu.org
                CC: hubicka at gcc dot gnu.org
  Target Milestone: ---
            Target: sh4-linux-gnu

The following ICE building libgcc for sh4-linux-gnu was introduced by r254379. 
Compile the following with -O2:

typedef int SItype __attribute__ ((mode (SI)));
typedef unsigned int USItype __attribute__ ((mode (SI)));
typedef int DItype __attribute__ ((mode (DI)));
typedef unsigned int UDItype __attribute__ ((mode (DI)));
typedef float SFtype __attribute__ ((mode (SF)));
typedef float DFtype __attribute__ ((mode (DF)));
SFtype
__floatdisf (DItype u)
{
  if (! (- ((DItype) 1 << 53) < u
  && u < ((DItype) 1 << 53)))
    {
      if ((UDItype) u & (((UDItype) 1 << (((4 * 8) * 2) - 53)) - 1))
 {
   u &= ~ (((UDItype) 1 << (((4 * 8) * 2) - 53)) - 1);
   u |= ((UDItype) 1 << (((4 * 8) * 2) - 53));
 }
    }



  DFtype f = (SItype) (u >> (4 * 8));
  f *= 0x1p32f;
  f += (USItype)u;
  return (SFtype) f;
}

Resulting ICE seen:

floatdisf.i: In function '__floatdisf':
floatdisf.i:26:1: error: verify_flow_info: Wrong probability of edge 7->10
 }
 ^
floatdisf.i:26:1: error: verify_flow_info: Wrong probability of edge 7->8
floatdisf.i:26:1: error: verify_flow_info: Wrong probability of edge 5->11
floatdisf.i:26:1: error: verify_flow_info: Wrong probability of edge 5->6
floatdisf.i:26:1: error: verify_flow_info: Wrong probability of edge 2->11
floatdisf.i:26:1: error: verify_flow_info: Wrong probability of edge 2->4
during RTL pass: expand
floatdisf.i:26:1: internal compiler error: verify_flow_info failed
0x71a2c3 verify_flow_info()
        /scratch/jmyers/glibc/many8/src/gcc/gcc/cfghooks.c:265
0x10a37a2 checking_verify_flow_info
        /scratch/jmyers/glibc/many8/src/gcc/gcc/cfghooks.h:198
0x10a37a2 try_optimize_cfg
        /scratch/jmyers/glibc/many8/src/gcc/gcc/cfgcleanup.c:3015
0x10a3aad cleanup_cfg(int)
        /scratch/jmyers/glibc/many8/src/gcc/gcc/cfgcleanup.c:3179
0x7170b5 execute
        /scratch/jmyers/glibc/many8/src/gcc/gcc/cfgexpand.c:6511
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to