https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96294
Bug ID: 96294 Summary: Compile error for pointer function Product: gcc Version: 10.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: peng.w...@compiler-dev.com Target Milestone: --- I got a testcase like this: **** program a IMPLICIT NONE myfunc() = 311 print*,myfunc() contains FUNCTION myfunc() RESULT (result_ptr) IMPLICIT NONE INTEGER, POINTER :: result_ptr INTEGER, SAVE, TARGET:: targ result_ptr => targ END FUNCTION myfunc end program a **** But I got a compile error for the testcase above: **** func-04.f90:7:4: 7 | FUNCTION myfunc() RESULT (result_ptr) | 1 Error: INTERNAL-PROC procedure at (1) is already declared as STATEMENT-PROC procedure. F2008: A pointer function assignment is ambiguous if it is the first executable statement after the specification block. Please add any other kind of executable statement before it. FIXME func-04.f90:7:4: 7 | FUNCTION myfunc() RESULT (result_ptr) | 1 Error: Statement function ‘myfunc’ at (1) may not have pointer or allocatable attribute func-04.f90:3:19: 3 | myfunc() = 311 | 1 Error: Pointer assignment target cannot be a constant at (1) **** I wonder if this pointer function feature is not support by gfortran ,or if it is a bug above? this is the options given when GCC was configured: # gfortran -v Using built-in specs. COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=/usr/local/gcc/libexec/gcc/x86_64-pc-linux-gnu/10.1.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure --prefix=/usr/local/gcc -enable-checking=release -enable-languages=c,fortran -disable-bootstrap -disable-multilib Thread model: posix Supported LTO compression algorithms: zlib gcc version 10.1.0 (GCC)