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.

Reply via email to