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

            Bug ID: 119273
           Summary: subclass can not correctly access to superclass in
                    associate statement
           Product: gcc
           Version: 14.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: xingjingwei666 at gmail dot com
  Target Milestone: ---

Test case:

module test_module
    type :: test_type_father
        integer :: val
    end type test_type_father

    type, extends(test_type_father) :: test_type_child
        contains
        procedure :: test_function
    end type test_type_child

    contains
    function test_function(a) result(out)
        class(test_type_child), intent(in) :: a
        integer :: out
        out = a%val
    end function
end module

program test
    use test_module
    implicit none
    type(test_type_child) :: a
    integer :: temp_int(1,1)
    a%val = 1
    associate(temp => temp_int(:,a%test_function()))
    end associate
end program test

compile flag:
-fcheck=bounds


If compile without checking bounds, it works fine. But if "-fcheck=bounds" is
added into compile flag, it will crush at runtime at associate statement.

Error message is "Index '-788478977' of dimension 2 of array 'temp_int' outside
of expected range (1:1)", but val is set to 1 just before the associate
statement.

It seems that subclass can't correctly access component of superclass in
subclass's type-bounded procedure. Because in my real program, I use gdb(gdb is
running on WSL2) to check what happened, the result is segment fault. When I
check the value of superclass, it is empty rather than non-initialized random
number.

It occurs only on gfortran 14.2.0, I found there is no such problem on 12.4.0
and 13.3.0.

My platform is MacBook Pro(M4 pro), but I also test it on WSL2(core i7 11700)
and the result is the same.

gfortran -v:
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/opt/homebrew/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/aarch64-apple-darwin24/14/lto-wrapper
Target: aarch64-apple-darwin24
Configured with: ../configure --prefix=/opt/homebrew/opt/gcc
--libdir=/opt/homebrew/opt/gcc/lib/gcc/current --disable-nls
--enable-checking=release --with-gcc-major-version-only
--enable-languages=c,c++,objc,obj-c++,fortran,m2 --program-suffix=-14
--with-gmp=/opt/homebrew/opt/gmp --with-mpfr=/opt/homebrew/opt/mpfr
--with-mpc=/opt/homebrew/opt/libmpc --with-isl=/opt/homebrew/opt/isl
--with-zstd=/opt/homebrew/opt/zstd --with-pkgversion='Homebrew GCC 14.2.0_1'
--with-bugurl=https://github.com/Homebrew/homebrew-core/issues
--with-system-zlib --build=aarch64-apple-darwin24
--with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.2.0 (Homebrew GCC 14.2.0_1)

Reply via email to