[Patch, Fortran] Enable FINALization/poly dealloc for allocatables

Tobias Burnus burnus@net-b.de
Fri May 31 16:36:00 GMT 2013


And another one: I just realized that the following dead code can be 
removed (twice):

+      if (TREE_CODE (array) == ADDR_EXPR
+          && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (array, 0))))
+        tmp = TREE_OPERAND (array, 0);

As "tmp" is not used. That's part of gfc_build_final_call,thus, I cannot 
easily do it as follow up patch.

Build and regtested on x86-64-gnu-linux.
OK for the trunk?

Tobias


Tobias Burnus wrote:
> Another re-diff.
>
> Changes:
> - Removed spurious bits of the now-committed patch, 
> http://gcc.gnu.org/ml/fortran/2013-05/msg00114.html
> - Moved gfc_build_final_call up in the file and made it static.
> - Removed it from trans.h.  Instead, gfc_add_finalizer_call is now 
> nonstatic.
>
> The reason for the latter change is that I want to use it for 
> INTENT(OUT) finalization for nonallocatables - and including the 
> change in this patch makes life easier for me.
>
> OK for the trunk?
>
> Tobias
>
> Tobias Burnus wrote:
>> Small update of the patch. Changes:
>>
>> * There was a problem finalizing  "var(:)%comp", which lead to an 
>> ICE. Thanks to Dominique pointed out. See "expr->rank =" code added 
>> in gfc_add_finalizer_call. I added the full test case from PR37336 
>> (dg-do compile: finalize_14.f90) to test for this.
>> * I added a new test case, which ensures that the built-in scalarizer 
>> and packer works correctly (it did), see finalize_13.f90.
> [...]
>> Tobias Burnus wrote:
>>> this patch enables finalization (and polymorphic deallocation) for 
>>> allocatables for: end of scope, DEALLOCATE and intent(out).
>>>
>>> As a side effect, an allocatable is no longer deallocated at the end 
>>> of the main program. (Variables declared in the main program have 
>>> automatically SAVE attribute; before finalization, it made no 
>>> difference but with finalization it is detectable. And only 
>>> finalizing nonfinalizable allocatables seems to be too much effort 
>>> for too little gain.)
>> ...
>>> Build and regtested on x86-64-gnu-linux.
>>> OK for the trunk?
>>>
>>> Tobias
>>>
>>> PS: Fortran requires additional cases where finalization has to 
>>> happen; those will be added in follow-up patches.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: finalize-alloc-v4.diff
Type: text/x-patch
Size: 33595 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20130531/298915ba/attachment.bin>


More information about the Gcc-patches mailing list