Le 26/08/2013 13:22, Janus Weil a écrit : > Hi Mikael, > >>> 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? > > Since the SIZEOF intrinsic has been around for some time in gfortran > (before STORAGE_SIZE was available), I would say we should at least > continue to support it for backward compatibility. And I guess we > should also make it behave reasonably for all inputs. However, it > might be worth to add a note in the documentation that STORAGE_SIZE > and SIZE should be used instead in standard-conforming code. > I thought about it again, and what I'm actually in favor of is diagnosing by default _all_ extensions having a standard replacement. That's an independant question, and not generating wrong code for SIZEOF is certainly good in any case.
Mikael