From ea06c7b0c4299833959a6a62a7a57533e60c8418 Mon Sep 17 00:00:00 2001 From: Andre Vehreschild Date: Sun, 5 Feb 2017 14:05:10 +0100 Subject: [PATCH] re PR fortran/79335 (Conditional jump or move depends on uninitialised in value get_scalar_to_descriptor_type(tree_node*, symbol_attribute) (trans-expr.c:53)) gcc/fortran/ChangeLog: 2017-02-05 Andre Vehreschild PR fortran/79335 * trans-decl.c (generate_coarray_sym_init): Retrieve the symbol's attributes before using them. From-SVN: r245193 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans-decl.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 601017dbfdd..222e91f15bb 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2017-02-05 Andre Vehreschild + + PR fortran/79335 + * trans-decl.c (generate_coarray_sym_init): Retrieve the symbol's + attributes before using them. + 2017-02-05 Andre Vehreschild PR fortran/78958 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 3e54e80a69a..41b36a59495 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -5128,6 +5128,16 @@ generate_coarray_sym_init (gfc_symbol *sym) else reg_type = GFC_CAF_COARRAY_STATIC; + /* Compile the symbol attribute. */ + if (sym->ts.type == BT_CLASS) + { + attr = CLASS_DATA (sym)->attr; + /* The pointer attribute is always set on classes, overwrite it with the + class_pointer attribute, which denotes the pointer for classes. */ + attr.pointer = attr.class_pointer; + } + else + attr = sym->attr; gfc_init_se (&se, NULL); desc = gfc_conv_scalar_to_descriptor (&se, decl, attr); gfc_add_block_to_block (&caf_init_block, &se.pre); -- 2.30.2