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

            Bug ID: 61750
           Summary: Compiling gfortran.dg/where_operator_assign_2.f90 with
                    -O3 -fwhole-program gives an ICE
           Product: gcc
           Version: 4.10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ipa
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dominiq at lps dot ens.fr

Compiling gfortran.dg/where_operator_assign_2.f90 with -O3 -fwhole-program
gives an ICE for 4.9 and 4.10 configured with the default --enable-checking. 

[Book15] f90/bug% gfc
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90 -O3
-fwhole-program
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90: In
function 'test':
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
 program test
 ^
VIEW_CONVERT_EXPR<unsigned char>(pretmp_322);

_330 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_322);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_30);

_328 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_30);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_666);

_326 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_666);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_147);

_325 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_147);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_322);

_323 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_322);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_30);

_321 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_30);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_666);

_319 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_666);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_147);

_307 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_147);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_322);

_303 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_322);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_30);

_286 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_30);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_666);

_285 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_666);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_147);

_281 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_147);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_322);

_256 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_322);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_30);

_251 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_30);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_666);

_250 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_666);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
error: conversion of register to a different size
VIEW_CONVERT_EXPR<unsigned char>(pretmp_147);

_242 = VIEW_CONVERT_EXPR<unsigned char>(pretmp_147);
/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
internal compiler error: verify_gimple failed

/opt/gcc/work/gcc/testsuite/gfortran.dg/where_operator_assign_2.f90:44:0:
internal compiler error: Abort trap: 6
gfc: internal compiler error: Abort trap: 6 (program f951)
Abort

The errors and ICE go away if gcc is configured with --enable-checking=release
or when compiling with -O2 -ftree-vectorize -fwhole-program.

Reply via email to