[patch, fortran] Implement constant-folding for TRANSFER intrinsic.

Tobias Schlüter tobias.schlueter@physik.uni-muenchen.de
Sat May 12 17:47:00 GMT 2007


Brooks Moses wrote:
> At 10:28 AM 5/12/2007, Tobias Schlüter wrote:
>>> My inclination would be to do the cosmetic and small fixes to this 
>>> and go ahead and commit it and then work on the 
>>> alternate-character-set hypotheticality and the derived-type spacing 
>>> stuff in follow-up patches, since AFAIK this doesn't cause anything 
>>> to break that worked previously.  But that's not a strong 
>>> inclination, and I'll let Paul and FX make the call on that.  :)
>>
>> I think we should assert that we're not dealing with derived types, 
>> since otherwise we would leave the user with a potentially 
>> hard-to-find error.  Apart from that, I agree with this course of action.
> 
> That sounds like it might be a good idea.
> 
> If we do that, my suggestion would be to take the old code at the head 
> of gfc_simplify_transfer that returns NULL unless gfc_init_expr, and 
> make that conditional on SOURCE or MOLD being a derived type.  That way, 
> instead of ICEing on a derived type argument that could be handled at 
> runtime, we'll leave it unsimplified and let the runtime handle it.  
> Something like (in semi-pseudocode):
> 
>   /* Derived types are not known to be handled correctly yet.  */
>   if (type(source) is BT_DERIVED || type(mold) is BT_DERIVED)
>     {
>        if (gfc_init_expr)
>          gfc_error ("TRANSFER intrinsic not implemented for initialization"
>                     " at %L", &source->where);
>        return NULL;
>     }

Yes, completely agreed.

Cheers,
- Tobi



More information about the Fortran mailing list