diff options
author | Andre Vehreschild <vehre@gcc.gnu.org> | 2017-02-19 19:18:33 +0100 |
---|---|---|
committer | Andre Vehreschild <vehre@gcc.gnu.org> | 2017-02-19 19:18:33 +0100 |
commit | e0396d770f84acfbbbb2397cd2bc53aa57996550 (patch) | |
tree | a39cc5e3a1fb427f0d6a210b901b623875d202de /gcc/fortran/trans-array.c | |
parent | f46e2bc9236de506841dca92414b217a1d90bbea (diff) | |
download | gcc-e0396d770f84acfbbbb2397cd2bc53aa57996550.zip gcc-e0396d770f84acfbbbb2397cd2bc53aa57996550.tar.gz gcc-e0396d770f84acfbbbb2397cd2bc53aa57996550.tar.bz2 |
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-19 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/79335
* trans-array.c (duplicate_allocatable_coarray): Ensure attributes
passed are properly initialized.
(structure_alloc_comps): Same.
* trans-expr.c (gfc_trans_structure_assign): Same.
From-SVN: r245579
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index d0dfc26..47e8c09 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -7950,6 +7950,8 @@ duplicate_allocatable_coarray (tree dest, tree dest_tok, tree src, tree dummy_desc; gfc_init_se (&se, NULL); + gfc_clear_attr (&attr); + attr.allocatable = 1; dummy_desc = gfc_conv_scalar_to_descriptor (&se, dest, attr); gfc_add_block_to_block (&globalblock, &se.pre); size = TYPE_SIZE_UNIT (TREE_TYPE (type)); @@ -8518,14 +8520,15 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl, else { gfc_se se; - symbol_attribute attr; gfc_init_se (&se, NULL); - gfc_clear_attr (&attr); token = fold_build3_loc (input_location, COMPONENT_REF, pvoid_type_node, decl, c->caf_token, NULL_TREE); - comp = gfc_conv_scalar_to_descriptor (&se, comp, attr); + comp = gfc_conv_scalar_to_descriptor (&se, comp, + c->ts.type == BT_CLASS + ? CLASS_DATA (c)->attr + : c->attr); gfc_add_block_to_block (&fnblock, &se.pre); } |