Index: gcc/gcc/fortran/misc.c |
diff --git a/gcc/gcc/fortran/misc.c b/gcc/gcc/fortran/misc.c |
index 136b751a196adaa77d196397aa205eab20e67e12..b5e6275bc8d0df485029effe55d4471427fd95ac 100644 |
--- a/gcc/gcc/fortran/misc.c |
+++ b/gcc/gcc/fortran/misc.c |
@@ -42,22 +42,15 @@ gfc_getmem (size_t n) |
} |
-/* gfortran.h defines free to something that triggers a syntax error, |
- but we need free() here. */ |
- |
-#define temp free |
-#undef free |
- |
void |
gfc_free (void *p) |
{ |
+ /* The parentheses around free are needed in order to call not |
+ the redefined free of gfortran.h. */ |
if (p != NULL) |
- free (p); |
+ (free) (p); |
} |
-#define free temp |
-#undef temp |
- |
/* Get terminal width. */ |
@@ -74,9 +67,9 @@ void |
gfc_clear_ts (gfc_typespec *ts) |
{ |
ts->type = BT_UNKNOWN; |
- ts->derived = NULL; |
+ ts->u.derived = NULL; |
ts->kind = 0; |
- ts->cl = NULL; |
+ ts->u.cl = NULL; |
ts->interface = NULL; |
/* flag that says if the type is C interoperable */ |
ts->is_c_interop = 0; |
@@ -137,6 +130,9 @@ gfc_basic_typename (bt type) |
case BT_DERIVED: |
p = "DERIVED"; |
break; |
+ case BT_CLASS: |
+ p = "CLASS"; |
+ break; |
case BT_PROCEDURE: |
p = "PROCEDURE"; |
break; |
@@ -190,7 +186,11 @@ gfc_typename (gfc_typespec *ts) |
sprintf (buffer, "HOLLERITH"); |
break; |
case BT_DERIVED: |
- sprintf (buffer, "TYPE(%s)", ts->derived->name); |
+ sprintf (buffer, "TYPE(%s)", ts->u.derived->name); |
+ break; |
+ case BT_CLASS: |
+ sprintf (buffer, "CLASS(%s)", |
+ ts->u.derived->components->ts.u.derived->name); |
break; |
case BT_PROCEDURE: |
strcpy (buffer, "PROCEDURE"); |