The following code should return 0 in info: ------------------------------------------- program try type item integer :: i type(item), pointer :: next end type item type(item), pointer :: this=>null() integer :: info allocate(this) deallocate(this,stat=info) print *,'From deallocate:',info end program try ------------------------------------------- [sfilippo@euler CODE]$ gfortran -v try.f90 -o try Driving: gfortran -v try.f90 -o try -lgfortranbegin -lgfortran -lm -shared-libgcc Reading specs from /home/local/gfortran/bin/../lib/gcc/i686-pc-linux-gnu/4.0.0/specs Configured with: ../gcc-4.0-20040926/configure --prefix=/usr/local/gfortran Thread model: posix gcc version 4.0.0 20040926 (experimental) /home/local/gfortran/bin/../libexec/gcc/i686-pc-linux-gnu/4.0.0/f951 try.f90 -quiet -dumpbase try.f90 -mtune=pentiumpro -auxbase try -version -o /tmp/cc6VWeJf.s GNU F95 version 4.0.0 20040926 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 4.0.0 20040926 (experimental). GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 as -V -Qy -o /tmp/ccIr28ep.o /tmp/cc6VWeJf.s GNU assembler version 2.14.90.0.6 (i386-redhat-linux) using BFD version 2.14.90.0.6 20030820 /home/local/gfortran/bin/../libexec/gcc/i686-pc-linux-gnu/4.0.0/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o try /usr/lib/crt1.o /usr/lib/crti.o /home/local/gfortran/bin/../lib/gcc/i686-pc-linux-gnu/4.0.0/crtbegin.o -L/home/local/gfortran/bin/../lib/gcc/i686-pc-linux-gnu/4.0.0 -L/home/local/gfortran/bin/../lib/gcc -L/usr/local/gfortran/lib/gcc/i686-pc-linux-gnu/4.0.0 -L/home/local/gfortran/bin/../lib/gcc/i686-pc-linux-gnu/4.0.0/../../.. -L/usr/local/gfortran/lib/gcc/i686-pc-linux-gnu/4.0.0/../../.. /tmp/ccIr28ep.o -lgfortranbegin -lgfortran -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /home/local/gfortran/bin/../lib/gcc/i686-pc-linux-gnu/4.0.0/crtend.o /usr/lib/crtn.o [sfilippo@euler CODE]$ ./try From deallocate: 1073958278
Created attachment 7259 [details] test case
Confirmed.
the problem is that we don't pass the status argument when calling deallocate, but integer_zero_node instead. See this thread: http://gcc.gnu.org/ml/fortran/2004-10/msg00000.html
*** Bug 21375 has been marked as a duplicate of this bug. ***
Subject: Bug 17792 CVSROOT: /cvs/gcc Module name: gcc Changes by: kargl@gcc.gnu.org 2005-06-11 22:29:18 Modified files: gcc/fortran : ChangeLog trans-array.c trans-array.h trans-decl.c trans-stmt.c Log message: PR fortran/17792 PR fortran/21375 * trans-array.c (gfc_array_deallocate): pstat is new argument (gfc_array_allocate): update gfc_array_deallocate() call. (gfc_trans_deferred_array): ditto. * trans-array.h: update gfc_array_deallocate() prototype. * trans-decl.c (gfc_build_builtin_function_decls): update declaration * trans-stmt.c (gfc_trans_deallocate): Implement STAT= feature. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.459&r2=1.460 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-array.c.diff?cvsroot=gcc&r1=1.48&r2=1.49 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-array.h.diff?cvsroot=gcc&r1=1.8&r2=1.9 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-decl.c.diff?cvsroot=gcc&r1=1.60&r2=1.61 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-stmt.c.diff?cvsroot=gcc&r1=1.32&r2=1.33
Subject: Bug 17792 CVSROOT: /cvs/gcc Module name: gcc Changes by: kargl@gcc.gnu.org 2005-06-11 22:33:11 Modified files: gcc/testsuite : ChangeLog Added files: gcc/testsuite/gfortran.dg: deallocate_stat.f90 Log message: PR fortran/17792 PR fortran/21375 * gfortran.dg/deallocate_statO.f90: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5622&r2=1.5623 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/deallocate_stat.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
Subject: Bug 17792 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: kargl@gcc.gnu.org 2005-07-08 21:19:28 Modified files: gcc/fortran : ChangeLog intrinsic.c match.c primary.c trans-array.c trans-array.h trans-decl.c trans-stmt.c Log message: Backport from the mainline: PR fortran/21257 (port from g95) * match.c (gfc_match_label): Detect duplicate labels. * gfortran.dg/duplicate_labels.f90: New test. PR fortran/19926 * primary.c (gfc_match_rvalue): expr_type can be EXPR_CONSTANT for an array; check that sym->as is NULL. * gfortran.dg/pr19926.f90: New test. PR fortran/17792 PR fortran/21375 * trans-array.c (gfc_array_deallocate): pstat is new argument (gfc_array_allocate): update gfc_array_deallocate() call. (gfc_trans_deferred_array): ditto. * trans-array.h: update gfc_array_deallocate() prototype. * trans-decl.c (gfc_build_builtin_function_decls): update declaration * trans-stmt.c (gfc_trans_deallocate): Implement STAT= feature. * intrinsic.c (gfc_intrinsic_func_interface): Enable errors for generic functions whose simplification routine return FAILURE. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.335.2.76&r2=1.335.2.77 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/intrinsic.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.44.2.3&r2=1.44.2.4 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/match.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.31.8.7&r2=1.31.8.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/primary.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.22.2.4&r2=1.22.2.5 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-array.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.39.2.5&r2=1.39.2.6 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-array.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.7.18.1&r2=1.7.18.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-decl.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.54.2.3&r2=1.54.2.4 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-stmt.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.24.6.5&r2=1.24.6.6
Subject: Bug 17792 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: kargl@gcc.gnu.org 2005-07-08 21:21:38 Modified files: gcc/testsuite : ChangeLog Added files: gcc/testsuite/gfortran.dg: deallocate_stat.f90 duplicate_labels.f90 pr19926.f90 Log message: PR fortran/17792 PR fortran/21375 * gfortran.dg/deallocate_stat.f90: New test. PR fortran/19926 * gfortran.dg/pr19926.f90: New test. PR fortran/21257 * gfortran.dg/duplicate_labels.f90: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.253&r2=1.5084.2.254 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/deallocate_stat.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.8.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/duplicate_labels.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.8.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr19926.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.8.1
Back port to 4.0