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.