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

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2024-02-10
     Ever confirmed|0                           |1
           Priority|P3                          |P4
             Status|UNCONFIRMED                 |NEW
                 CC|                            |kargl at gcc dot gnu.org

--- Comment #1 from kargl at gcc dot gnu.org ---
Reduced testcase. 

module bindcchar

   contains

      subroutine bindc_optional(c1, c3) bind(c)
         character(*), optional ::  c1, c3(100)
         print *, c1(1:3), c3(5)(1:3)
      end subroutine

      subroutine not_bindc_optional(c1, c3)
         character(*), optional :: c1,  c3(100)
         call bindc_optional(c1, c3)
      end subroutine

end module

Note, the OPTIONAL attribute is required to cause the ICE.
Note, -Wall generates a few warnings.  Perhaps, these should
be errors.

% gfcx -c -Wall fr.f90
fr.f90:5:34:

    5 |       subroutine bindc_optional(c1, c3) bind(c)
      |                                  1
Warning: Variable ‘c1’ at (1) is a dummy argument of the BIND(C) procedure
‘bindc_optional’ but may not be C interoperable [-Wc-binding-type]
fr.f90:5:38:

    5 |       subroutine bindc_optional(c1, c3) bind(c)
      |                                      1
Warning: Variable ‘c3’ at (1) is a dummy argument of the BIND(C) procedure
‘bindc_optional’ but may not be C interoperable [-Wc-binding-type]
fr.f90:12:36:

   12 |          call bindc_optional(c1, c3)
      |                                    1

Reply via email to