[Patch, Fortran] PR56650/36437 - Add compile-time simplification for (c_)sizeof, storage_size
Tobias Burnus
burnus@net-b.de
Wed Mar 27 11:27:00 GMT 2013
Am 27.03.2013 10:47, schrieb Thomas Koenig:
> I think you need to deallocate array_size in gfc_simplify_sizeof
> unconditionally.
Actually, when I applied the more than two years old draft patch, I
thought likewise - but that leads to segfaults. If one reads the code
more carefully, one sees that the condition is required:
>> + if (x->rank && x->expr_type != EXPR_ARRAY
>> + && gfc_array_size (x, &array_size) == FAILURE)
>> + return NULL;
>
> Here, it is allocated on success of gfc_array_size.
But only if "x->rank && x->expr_type != EXPR_ARRAY" is true.
> And here, it is freed only if expr_type != EXPR_ARRAY.
>
>> + if (x->rank && x->expr_type != EXPR_ARRAY)
Which is the same condition.
I have now applied the (unmodified) patch as Rev. 197159.
Thanks for the review!
Tobias
More information about the Fortran
mailing list