[Patch, Fortran, 4.9] Minor FINAL preparation patch

Tobias Burnus burnus@net-b.de
Wed Mar 13 10:26:00 GMT 2013

Dear all,

this small patch fixes some small issues with the current FINAL 
implementation, which is still disabled. Namely:

(a) class.c: TRANSFER has an optional size= argument; if one doesn't has 
an actual-argument (which can be expr == NULL), it segfaults.
(b) class.c: SIZE needs to return an index-size-kind integer not a 
default-kind integer (tree checking error, but potentially also wrong code)
(c) trans.c: Scalar coarrays (with -fcoarray=lib) were mishandled - they 
also use an array descriptor

Build and regtested on x86-64-gnu-linux.

(I target 4.9 with this patch; in principle, it could also be applied to 
4.8: The code is not used, yet, and thus it shouldn't harm on 4.8 but 
there is also no benefit.)

The full patch, which enables finalization and regtests is available at: 
https://userpage.physik.fu-berlin.de/~tburnus/final/ – The patch still 
requires some clean up. In addition, finalization (with a user FINAL 
subroutine) is mishandled for allocatable INTENT(OUT) as gfortran 
handles it (at least partially) in the caller (trans-expr.c's 
gfc_conv_procedure_call) and not in the callee (trans-decl.c). That will 
lead to not finalizing and segfaults at run time. There are more issues, 
but for an experimental implementation, fixing this issue should be 
enough. (Note: the .mod version should be bumped to force recompilation, 
which is required due to the ABI change of the vtable.)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: final-prep.diff
Type: text/x-patch
Size: 4430 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20130313/ebbcb035/attachment.bin>

More information about the Gcc-patches mailing list