Re: [Patch, fortran] PR90218 - [PDT] ICE: tree check: expected array_type, have record_type in gfc_conv_array_initializer, at fortran/trans-array.c:6071
Jerry D <[email protected]>
| Newsgroups | gmane.comp.gcc.patches,gmane.comp.gcc.fortran |
|---|---|
| Message-ID | <[email protected]> |
On 1/5/26 8:30 AM, Paul Richard Thomas wrote: > Hi All, > > This PR was largely fixed by preceding patches, insofar as it ran and produced > the expected output, apart from the explicit initialization expressions for the > PDT entities. However, the testcase leaked memory like a sieve and it has taken > a while to sort out a satisfactory fix. > > The chunks in trans-decl.cc implement the fix for the explicit initialization of > PDT entities. This part is straightforward. > > The rest of the patch is devoted to fixing the memory leaks triggered by the new > testcase. The problem was associated with pdt_arrays embedded in PDT > structure constructors, which themselves were embedded in array constructors > that were part of a PDT constructor.... if you see what I mean :-) The original > pdt_arrays are copied into a destination array, which is implicitly allocated > by gfc_duplicate_allocatable. The allocated memory was being lost in the > subsequent copy of the enclosing array constructor. Rescuing and freeing the > memory is accomplished using the finalization block, which is then executed > after the copy of the array constructor. Note that these frees are not guarded. > I don't believe that there is any circumstance where this will be an issue but, > if required, it would be easily implemented. > > The chunks in trans-stmt.cc pick up memory leaks in allocation and deallocation. > As a side effect, the leak in pdt_3.f03 is fixed. PR121972 will be updated > accordingly, since pdt_39/70/77.f03 still leak memory. > > Regtests on FC43/x86_64. OK for mainline > > Paul > Looks Good To Me Paul, also regression tested OK here. Jerry