[Patch, Fortran] No-op Patch - a.k.a. FINAL wrapper update
Janus Weil
janus@gcc.gnu.org
Fri Nov 30 10:39:00 GMT 2012
2012/11/30 Janus Weil <janus@gcc.gnu.org>:
> Hi,
>
>>> one thing that I do not like about your patch is the modification of
>>> "gfc_find_derived_vtab": You create two versions of it, one of which creates
>>> the vtab if it does not exist, while the other version does not do this.
>>> [...] can you explain to me why this would be necessary?
>>
>>
>> Well, strictly speaking it is not necessary. However, I use it in the
>> to-be-submitted calling part of the patch:
>>
>> else if (al->expr->ts.type == BT_DERIVED)
>> {
>> gfc_symbol *vtab = gfc_find_derived_vtab
>> (al->expr->ts.u.derived);
>> if (vtab)
>>
>> Here, I do not want to force the generation of a vtab which wouldn't
>> otherwise exist. Otherwise, one had to at least guard it by checks for
>> nonextensible derived types (sequence, bind(C)).
>
> I don't think it is a good idea to base the decision whether to call a
> finalizer on the presence of a vtab. In my version of the patch I
> introduced a routine 'gfc_is_finalizable' to perform this decision.
Forgot to mention: My last version of the patch is available at
http://gcc.gnu.org/ml/fortran/2012-11/msg00009.html
Btw, one prerequisite for the implementation of finalization would be
to have the following bug fixed:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55207
(which is about automatic deallocation in the main program).
Cheers,
Janus
More information about the Gcc-patches
mailing list