This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Patch, Fortran, OOP] PR 57305: ICE when calling SIZEOF on an unlimited polymorphic variable
- From: Mikael Morin <mikael dot morin at sfr dot fr>
- To: Janus Weil <janus at gcc dot gnu dot org>
- Cc: gfortran <fortran at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 22 Aug 2013 23:46:40 +0200
- Subject: Re: [Patch, Fortran, OOP] PR 57305: ICE when calling SIZEOF on an unlimited polymorphic variable
- References: <CAKwh3qi633jU-ojPKqRa_16DKWhXn9L2N0Wr4trAG9p1dJ-sXg at mail dot gmail dot com>
Hello,
Le 22/08/2013 15:20, Janus Weil a écrit :
> Hi all,
>
> the SIZEOF intrinsic currently returns the size according to the
> *declared* type for polymorphic variables. I think this doesn't really
> make much sense and it also causes ICEs when SIZEOF is called on
> CLASS(*) variables (which don't really have a declared type).
> Therefore I'm proposing to make SIZEOF return the size according to
> the *dynamic* type instead. The same is done by STORAGE_SIZE (F08),
> which however gives the size in bits. SIZEOF is a GNU extension, so we
> are free to decide on its behavior. I don't remember why the declared
> type was chosen in the first place, and I hope that no one seriously
> depends on the current behavior (the size of the declared type is
> probably not really useful after all).
>
I'm slightly inclined to kindly invite the user to switch to
STORAGE_SIZE+SIZE instead. Any other opinion?
> The patch was regtested on x86_64-unknown-linux-gnu. Ok for trunk?
>
Independently of the above, the patch seems to be forgetting the
arg->rank != 0 case.
Mikael