https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100970
Bug ID: 100970 Summary: ICE in output_constructor_regular_field, at varasm.c:5514 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: gs...@t-online.de Target Milestone: --- These invalid codes (different shape for array assignment, see z0) affect versions down to at least r5. Case z1 is silently accepted (but not with -m32). I wonder how this could be related to pr100950. $ cat z0.f90 module m integer :: a(1) = [1, 2] end $ cat z1.f90 module m type t integer :: a(1) = [1, 2] real, pointer :: b => null() end type end $ cat z2.f90 module m type t integer :: a(1) = [1, 2, 3] real, pointer :: b => null() end type end $ cat z3.f90 module m type t integer :: a(1) = [1, 2, 3, 4] real, pointer :: b => null() end type end $ cat z4.f90 module m type t integer :: a(1) = [1, 2, 3, 4, 5] real, pointer :: b => null() end type type(t) :: x end $ gfortran-12-20210606 -c z0.f90 z0.f90:2:18: 2 | integer :: a(1) = [1, 2] | 1 Error: Different shape for array assignment at (1) on dimension 1 (1 and 2) $ gfortran-12-20210606 -c z1.f90 $ gfortran-12-20210606 -c z4.f90 z4.f90:7:3: 7 | end | ^ internal compiler error: in output_constructor_regular_field, at varasm.c:5514 0xf3fdad output_constructor_regular_field ../../gcc/varasm.c:5514 0xf3fdad output_constructor ../../gcc/varasm.c:5820 0xf400ef output_constant ../../gcc/varasm.c:5172 0xf400ef assemble_variable_contents ../../gcc/varasm.c:2235 0xf47e8d assemble_variable(tree_node*, int, int, int) ../../gcc/varasm.c:2414 0xf4a18a varpool_node::assemble_decl() ../../gcc/varpool.c:595 0x8b0a8f output_in_order ../../gcc/cgraphunit.c:2135 0x8b0a8f symbol_table::compile() ../../gcc/cgraphunit.c:2353 0x8b33af symbol_table::compile() ../../gcc/cgraphunit.c:2540 0x8b33af symbol_table::finalize_compilation_unit() ../../gcc/cgraphunit.c:2537