diff options
author | Janus Weil <janus@gcc.gnu.org> | 2013-12-18 23:00:53 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2013-12-18 23:00:53 +0100 |
commit | 7289d1c97783c40ead8e74d6137e2dddc0d59e30 (patch) | |
tree | 192e21ebbdbdd80b1285dd235fa974713a3cb89a /gcc/fortran/resolve.c | |
parent | f00f3b679e86ce80311dbeaa514ff488634f9245 (diff) | |
download | gcc-7289d1c97783c40ead8e74d6137e2dddc0d59e30.zip gcc-7289d1c97783c40ead8e74d6137e2dddc0d59e30.tar.gz gcc-7289d1c97783c40ead8e74d6137e2dddc0d59e30.tar.bz2 |
re PR fortran/59493 ([OOP] ICE: Segfault on Class(*) pointer association)
2013-12-18 Janus Weil <janus@gcc.gnu.org>
PR fortran/59493
* gfortran.h (gfc_find_intrinsic_vtab): Removed prototype.
(gfc_find_vtab): New prototype.
* class.c (gfc_find_intrinsic_vtab): Rename to 'find_intrinsic_vtab' and
make static. Minor modifications.
(gfc_find_vtab): New function.
(gfc_class_initializer): Use new function 'gfc_find_vtab'.
* check.c (gfc_check_move_alloc): Ditto.
* expr.c (gfc_check_pointer_assign): Ditto.
* interface.c (compare_actual_formal): Ditto.
* resolve.c (resolve_allocate_expr, resolve_select_type): Ditto.
* trans-expr.c (gfc_conv_intrinsic_to_class, gfc_trans_class_assign):
Ditto.
* trans-intrinsic.c (conv_intrinsic_move_alloc): Ditto.
* trans-stmt.c (gfc_trans_allocate): Ditto.
From-SVN: r206101
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index db2f5eb..57e6cbb 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -6930,10 +6930,7 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code) gcc_assert (ts); - if (ts->type == BT_CLASS || ts->type == BT_DERIVED) - gfc_find_derived_vtab (ts->u.derived); - else - gfc_find_intrinsic_vtab (ts); + gfc_find_vtab (ts); if (dimension) e = gfc_expr_to_initialize (e); @@ -8054,7 +8051,7 @@ resolve_select_type (gfc_code *code, gfc_namespace *old_ns) gfc_symbol *ivtab; gfc_expr *e; - ivtab = gfc_find_intrinsic_vtab (&c->ts); + ivtab = gfc_find_vtab (&c->ts); gcc_assert (ivtab && CLASS_DATA (ivtab)->initializer); e = CLASS_DATA (ivtab)->initializer; c->low = c->high = gfc_copy_expr (e); |