From: Salvatore Filippone <filippone.salvatore@gmail.com>
To: Fortran List <fortran@gcc.gnu.org>
Subject: Re: FINAL subroutines
Date: Mon, 24 Jan 2022 15:49:23 +0100 [thread overview]
Message-ID: <CANSzZf62shkBCy7aUzjUxjWRJMaD7YLHBHkuxwn90n+tVCJ0Hw@mail.gmail.com> (raw)
In-Reply-To: <CANSzZf7kmAQ9XXSsAHE6_93WZXhh==ZUeqGZZM2VUTn0YxELzQ@mail.gmail.com>
And here is the code embedded as text............ sorry about sending an
attachment that was purged
------------------------- testfinal.f90 ---------------------
module test_type_mod
type :: my_test_type
integer, allocatable :: i
contains
final :: delete_test_type
end type my_test_type
interface my_test_type
module procedure new_test_type_object
end interface my_test_type
contains
subroutine delete_test_type(this)
type(my_test_type) :: this
write(*,*) 'Called delete_test_type'
if (allocated(this%i)) deallocate(this%i)
end subroutine delete_test_type
function new_test_type_object(item) result(res)
type(my_test_type) :: res
integer, intent(in) :: item
!Allocation on assignment
res%i=item
end function new_test_type_object
end module test_type_mod
module target_mod
use test_type_mod
type :: outer_type
type(my_test_type), allocatable :: test_item
end type outer_type
contains
subroutine new_outer_type(outer,item)
type(outer_type), intent(out) :: outer
integer :: item
allocate(outer%test_item)
write(*,*) 'Assigning outer%test_item'
outer%test_item = my_test_type(itemi)
write(*,*) 'End of new_outer_type'
end subroutine new_outer_type
end module target_mod
program testfinal
use target_mod
implicit none
integer :: i=10
type(outer_type), allocatable :: wrapper
write(*,*) 'Allocating wrapper '
allocate(wrapper)
write(*,*) 'Calling new_outer_type '
call new_outer_type(wrapper,i)
write(*,*) 'DeAllocating wrapper '
deallocate(wrapper)
end program testfinal
On Mon, Jan 24, 2022 at 2:50 PM Salvatore Filippone <
filippone.salvatore@gmail.com> wrote:
> Hi all
> The attached code compiles and runs fine under both GNU and Intel, but it
> produces different results, in particular the FINAL subroutine is invoked
> just once with GNU, three times with Intel.
>
> It seems to me that they cannot both be right; I am not sure what the
> standard is mandating in this case.
> Any ideas?
> Salvatore
> --------------- Intel
> [pr1eio03@login1: newstuff]$ ifort -v
> ifort version 19.1.1.217
> [pr1eio03@login1: newstuff]$ ifort -o testfinal testfinal.f90
> [pr1eio03@login1: newstuff]$ ./testfinal
> Allocating wrapper
> Calling new_outer_type
> Assigning outer%test_item
> Called delete_test_type
> Called delete_test_type
> End of new_outer_type
> DeAllocating wrapper
> Called delete_test_type
> ----------------------------- GNU
> sfilippo@lagrange newstuff]$ gfortran -v
> Using built-in specs.
> COLLECT_GCC=gfortran
> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/11/lto-wrapper
> OFFLOAD_TARGET_NAMES=nvptx-none
> OFFLOAD_TARGET_DEFAULT=1
> Target: x86_64-redhat-linux
> Configured with: ../configure --enable-bootstrap
> --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,lto --prefix=/usr
> --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=
> http://bugzilla.redhat.com/bugzilla --enable-shared
> --enable-threads=posix --enable-checking=release --enable-multilib
> --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions
> --enable-gnu-unique-object --enable-linker-build-id
> --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin
> --enable-initfini-array
> --with-isl=/builddir/build/BUILD/gcc-11.2.1-20210728/obj-x86_64-redhat-linux/isl-install
> --enable-offload-targets=nvptx-none --without-cuda-driver
> --enable-gnu-indirect-function --enable-cet --with-tune=generic
> --with-arch_32=i686 --build=x86_64-redhat-linux
> Thread model: posix
> Supported LTO compression algorithms: zlib zstd
> gcc version 11.2.1 20210728 (Red Hat 11.2.1-1) (GCC)
> [sfilippo@lagrange newstuff]$ gfortran -o testfinal testfinal.f90
> [sfilippo@lagrange newstuff]$ ./testfinal
> Allocating wrapper
> Calling new_outer_type
> Assigning outer%test_item
> End of new_outer_type
> DeAllocating wrapper
> Called delete_test_type
> ---------------------
>
>
next prev parent reply other threads:[~2022-01-24 14:49 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-24 13:50 Salvatore Filippone
2022-01-24 14:49 ` Salvatore Filippone [this message]
2022-01-24 15:45 ` Andrew Benson
2022-01-24 16:11 ` Salvatore Filippone
2022-01-26 21:29 ` Jerry D
2022-01-26 22:59 ` Paul Richard Thomas
2022-01-27 7:17 ` Salvatore Filippone
2022-01-27 22:10 ` Paul Richard Thomas
2022-01-28 8:05 ` Salvatore Filippone
2022-01-28 9:01 ` Paul Richard Thomas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CANSzZf62shkBCy7aUzjUxjWRJMaD7YLHBHkuxwn90n+tVCJ0Hw@mail.gmail.com \
--to=filippone.salvatore@gmail.com \
--cc=fortran@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).