Bug 103693 - [12/13 Regression] ICE in gfc_array_dimen_size(): Bad EXPR_ARRAY expr since r12-4967-gbcf3728abe848888
Summary: [12/13 Regression] ICE in gfc_array_dimen_size(): Bad EXPR_ARRAY expr since r...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 12.0
: P4 normal
Target Milestone: 10.5
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-invalid-code
Depends on:
Blocks:
 
Reported: 2021-12-13 19:54 UTC by G. Steinmetz
Modified: 2022-07-03 20:32 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2021-12-14 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description G. Steinmetz 2021-12-13 19:54:14 UTC
Changed between 20211031 and 20211107 :


$ cat z1.f90
program p
   class(*), parameter :: a(1, 2) = 2
   integer, parameter :: c(b(1):*, b(2):*) = a
end


$ gfortran-12-20211031 -c z1.f90
z1.f90:3:27:

    3 |    integer, parameter :: c(b(1):*, b(2):*) = a
      |                           1
Error: Non-constant lower bound in implied-shape declaration at (1)
z1.f90:2:33:

    2 |    class(*), parameter :: a(1, 2) = 2
      |                                 1
Error: CLASS variable 'a' at (1) cannot have the PARAMETER attribute
z1.f90:2:35:

    2 |    class(*), parameter :: a(1, 2) = 2
      |                                   1
Error: Cannot convert INTEGER(4) to invalid class at (1)


$ gfortran-12-20211212 -c z1.f90
f951: internal compiler error: gfc_array_dimen_size(): Bad EXPR_ARRAY expr
0x799f59 gfc_report_diagnostic
        ../../gcc/fortran/error.c:874
0x79bac7 gfc_internal_error(char const*, ...)
        ../../gcc/fortran/error.c:1494
0x76a27b gfc_array_dimen_size(gfc_expr*, int, __mpz_struct (*) [1])
        ../../gcc/fortran/array.c:2616
0x7a1796 gfc_check_conformance(gfc_expr*, gfc_expr*, char const*, ...)
        ../../gcc/fortran/expr.c:3605
0x7a1d49 gfc_check_assign(gfc_expr*, gfc_expr*, int, bool)
        ../../gcc/fortran/expr.c:3766
0x7a4fe4 gfc_check_assign_symbol(gfc_symbol*, gfc_component*, gfc_expr*)
        ../../gcc/fortran/expr.c:4545
0x7828ee add_init_expr_to_sym
        ../../gcc/fortran/decl.c:2014
0x78c6aa variable_decl
        ../../gcc/fortran/decl.c:3108
0x78c6aa gfc_match_data_decl()
        ../../gcc/fortran/decl.c:6297
0x7f7183 match_word
        ../../gcc/fortran/parse.c:67
0x7f7183 decode_statement
        ../../gcc/fortran/parse.c:378
0x7f8bca next_free
        ../../gcc/fortran/parse.c:1397
0x7f8bca next_statement
        ../../gcc/fortran/parse.c:1629
0x7fa15b parse_spec
        ../../gcc/fortran/parse.c:4168
0x7fd2ac parse_progunit
        ../../gcc/fortran/parse.c:6192
0x7fe971 gfc_parse_file()
        ../../gcc/fortran/parse.c:6737
0x84bfcf gfc_be_parse_file
        ../../gcc/fortran/f95-lang.c:216
Comment 1 Martin Liška 2021-12-14 10:08:51 UTC
Started with r12-4967-gbcf3728abe848888.
Comment 2 anlauf 2021-12-15 20:03:25 UTC
Gerhard, the issue here is

  class(*), parameter :: a(1,2) = 2

which we do not yet support, and where there is a duplicate by you already.
Comment 3 Jakub Jelinek 2022-05-06 08:32:08 UTC
GCC 12.1 is being released, retargeting bugs to GCC 12.2.
Comment 4 GCC Commits 2022-06-30 19:01:51 UTC
The master branch has been updated by Harald Anlauf <anlauf@gcc.gnu.org>:

https://gcc.gnu.org/g:4c233cabbe388a6b8957c1507e129090e9267ceb

commit r13-1370-g4c233cabbe388a6b8957c1507e129090e9267ceb
Author: Harald Anlauf <anlauf@gmx.de>
Date:   Wed Jun 29 21:36:17 2022 +0200

    Fortran: error recovery on invalid CLASS(), PARAMETER declarations [PR105243]
    
    gcc/fortran/ChangeLog:
    
            PR fortran/103137
            PR fortran/103138
            PR fortran/103693
            PR fortran/105243
            * decl.cc (gfc_match_data_decl): Reject CLASS entity declaration
            when it is given the PARAMETER attribute.
    
    gcc/testsuite/ChangeLog:
    
            PR fortran/103137
            PR fortran/103138
            PR fortran/103693
            PR fortran/105243
            * gfortran.dg/class_58.f90: Fix test.
            * gfortran.dg/class_73.f90: New test.
    
    Co-authored-by: Steven G. Kargl <kargl@gcc.gnu.org>
Comment 5 GCC Commits 2022-07-03 19:44:02 UTC
The releases/gcc-12 branch has been updated by Harald Anlauf <anlauf@gcc.gnu.org>:

https://gcc.gnu.org/g:d870ce1a112c0cbdff6172346a4a164503d92573

commit r12-8544-gd870ce1a112c0cbdff6172346a4a164503d92573
Author: Harald Anlauf <anlauf@gmx.de>
Date:   Wed Jun 29 21:36:17 2022 +0200

    Fortran: error recovery on invalid CLASS(), PARAMETER declarations [PR105243]
    
    gcc/fortran/ChangeLog:
    
            PR fortran/103137
            PR fortran/103138
            PR fortran/103693
            PR fortran/105243
            * decl.cc (gfc_match_data_decl): Reject CLASS entity declaration
            when it is given the PARAMETER attribute.
    
    gcc/testsuite/ChangeLog:
    
            PR fortran/103137
            PR fortran/103138
            PR fortran/103693
            PR fortran/105243
            * gfortran.dg/class_58.f90: Fix test.
            * gfortran.dg/class_73.f90: New test.
    
    Co-authored-by: Steven G. Kargl <kargl@gcc.gnu.org>
    (cherry picked from commit 4c233cabbe388a6b8957c1507e129090e9267ceb)
Comment 6 GCC Commits 2022-07-03 20:13:46 UTC
The releases/gcc-11 branch has been updated by Harald Anlauf <anlauf@gcc.gnu.org>:

https://gcc.gnu.org/g:5c293d9abc4b14e987a574fc11666809a2b8b8da

commit r11-10107-g5c293d9abc4b14e987a574fc11666809a2b8b8da
Author: Harald Anlauf <anlauf@gmx.de>
Date:   Wed Jun 29 21:36:17 2022 +0200

    Fortran: error recovery on invalid CLASS(), PARAMETER declarations [PR105243]
    
    gcc/fortran/ChangeLog:
    
            PR fortran/103137
            PR fortran/103138
            PR fortran/103693
            PR fortran/105243
            * decl.c (gfc_match_data_decl): Reject CLASS entity declaration
            when it is given the PARAMETER attribute.
    
    gcc/testsuite/ChangeLog:
    
            PR fortran/103137
            PR fortran/103138
            PR fortran/103693
            PR fortran/105243
            * gfortran.dg/class_58.f90: Fix test.
            * gfortran.dg/class_73.f90: New test.
    
    Co-authored-by: Steven G. Kargl <kargl@gcc.gnu.org>
    (cherry picked from commit 4c233cabbe388a6b8957c1507e129090e9267ceb)
Comment 7 GCC Commits 2022-07-03 20:29:50 UTC
The releases/gcc-10 branch has been updated by Harald Anlauf <anlauf@gcc.gnu.org>:

https://gcc.gnu.org/g:290147c4c8e3d9d1f13297b511d3a0afb5e952d4

commit r10-10882-g290147c4c8e3d9d1f13297b511d3a0afb5e952d4
Author: Harald Anlauf <anlauf@gmx.de>
Date:   Wed Jun 29 21:36:17 2022 +0200

    Fortran: error recovery on invalid CLASS(), PARAMETER declarations [PR105243]
    
    gcc/fortran/ChangeLog:
    
            PR fortran/103137
            PR fortran/103138
            PR fortran/103693
            PR fortran/105243
            * decl.c (gfc_match_data_decl): Reject CLASS entity declaration
            when it is given the PARAMETER attribute.
    
    gcc/testsuite/ChangeLog:
    
            PR fortran/103137
            PR fortran/103138
            PR fortran/103693
            PR fortran/105243
            * gfortran.dg/class_58.f90: Fix test.
            * gfortran.dg/class_73.f90: New test.
    
    Co-authored-by: Steven G. Kargl <kargl@gcc.gnu.org>
    (cherry picked from commit 4c233cabbe388a6b8957c1507e129090e9267ceb)
Comment 8 anlauf 2022-07-03 20:32:36 UTC
Fixed on all open branches.  Closing.

Thanks for the report!