https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120049
Jerry DeLisle <jvdelisle at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |jvdelisle at gcc dot
gnu.org
Status|NEW |ASSIGNED
--- Comment #21 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
I have been digging in on this further. The basic types are defined in
libgfortran.h as shown here:
typedef enum
{ BT_UNKNOWN = 0, BT_INTEGER, BT_LOGICAL, BT_REAL, BT_COMPLEX,
BT_DERIVED, BT_CHARACTER, BT_CLASS, BT_PROCEDURE, BT_HOLLERITH, BT_VOID,
BT_ASSUMED, BT_UNION, BT_BOZ, BT_UNSIGNED
}
bt;
I have been checking for each one of these and building a test case. Obviously
our original checks based on (ts.type != BT_DERIVED) is too broad and short
circuiting based on the expr_type is too narrow. The simpler types BT_INTEGER,
BT_LOGICAL, BT_REAL, BT_COMPLEX, BT_CHARACTER, BT_HOLLERITH, BT_BOZ,
BT_UNSIGNED I think can be rejected
The BT_CLASS, BT_PROCEDURE, BT_ASSUMED, BT_UNION seem to not make sense to me
either. Steve, what do yo think about these last types. I can easily reject
them as well.
Look at my WIP patch now I am pretty sure I will be able to re-factor this code
and I will work on this while waiting for further feedback on this.