Affects versions down to at least r5 : (in addition to pr93483_c2_first_print) $ cat z1.f90 program p print *, -[real :: [(1)]] print *, +[real :: [-(1)]] print *, -[real :: [[(1)]]] end $ gfortran-13-20221009 -c z1.f90 f951: internal compiler error: Segmentation fault 0xf3feef crash_signal ../../gcc/toplev.cc:314 0x7becaf reduce_unary ../../gcc/fortran/arith.cc:1290 0x7bec7f reduce_unary ../../gcc/fortran/arith.cc:1277 0x7bec7f reduce_unary ../../gcc/fortran/arith.cc:1277 0x7bf408 eval_intrinsic ../../gcc/fortran/arith.cc:1652 0x832374 match_level_2 ../../gcc/fortran/matchexp.cc:490 0x832392 match_level_3 ../../gcc/fortran/matchexp.cc:551 0x832484 match_level_4 ../../gcc/fortran/matchexp.cc:599 0x832484 match_and_operand ../../gcc/fortran/matchexp.cc:693 0x832672 match_or_operand ../../gcc/fortran/matchexp.cc:722 0x832742 match_equiv_operand ../../gcc/fortran/matchexp.cc:765 0x832814 match_level_5 ../../gcc/fortran/matchexp.cc:811 0x831be1 gfc_match_expr(gfc_expr**) ../../gcc/fortran/matchexp.cc:870 0x8192d9 match_io_element ../../gcc/fortran/io.cc:3668 0x81bc0a match_io_list ../../gcc/fortran/io.cc:3716 0x81c00e match_io ../../gcc/fortran/io.cc:4394 0x81fb0a gfc_match_print() ../../gcc/fortran/io.cc:4450 0x851e41 match_word ../../gcc/fortran/parse.cc:67 0x857aa3 decode_statement ../../gcc/fortran/parse.cc:539 0x857eda next_free ../../gcc/fortran/parse.cc:1402
Confirmed. The following example from pr93483 has the same issue: print *, +[ real :: (1) ] end
The master branch has been updated by Harald Anlauf <anlauf@gcc.gnu.org>: https://gcc.gnu.org/g:d45af5c2eb1ba1e48449d8f3c5b4e3994a956f92 commit r13-3340-gd45af5c2eb1ba1e48449d8f3c5b4e3994a956f92 Author: Harald Anlauf <anlauf@gmx.de> Date: Sat Oct 15 21:56:56 2022 +0200 Fortran: handle bad array ctors with typespec [PR93483, PR107216, PR107219] gcc/fortran/ChangeLog: PR fortran/93483 PR fortran/107216 PR fortran/107219 * arith.cc (reduce_unary): Handled expressions are EXP_CONSTANT and EXPR_ARRAY. Do not attempt to reduce otherwise. (reduce_binary_ac): Likewise. (reduce_binary_ca): Likewise. (reduce_binary_aa): Moved check for EXP_CONSTANT and EXPR_ARRAY from here ... (reduce_binary): ... to here. (eval_intrinsic): Catch failed reductions. * gfortran.h (GFC_INTRINSIC_OPS): New enum ARITH_NOT_REDUCED to keep track of expressions that were not reduced by the arithmetic evaluation code. gcc/testsuite/ChangeLog: PR fortran/93483 PR fortran/107216 PR fortran/107219 * gfortran.dg/array_constructor_56.f90: New test. * gfortran.dg/array_constructor_57.f90: New test. Co-authored-by: Mikael Morin <mikael@gcc.gnu.org>
Fixed for gcc-13. Closing. Thanks for your insistence!