aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-array.c
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2005-11-02 21:01:54 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2005-11-02 13:01:54 -0800
commiteca18fb4b61a16634e61b7cf281ab65ef3292a74 (patch)
tree7c218f214ca42e611a74be01c9d0e04bc0df3d72 /gcc/fortran/trans-array.c
parent86414779a6d1a126eca6281af2dffada41e4fab3 (diff)
downloadgcc-eca18fb4b61a16634e61b7cf281ab65ef3292a74.zip
gcc-eca18fb4b61a16634e61b7cf281ab65ef3292a74.tar.gz
gcc-eca18fb4b61a16634e61b7cf281ab65ef3292a74.tar.bz2
re PR fortran/18157 (ice-on-valid code, pointer to user-defined type, fold-struct.c)
2005-11-02 Andrew Pinski <pinskia@physics.uc.edu> PR fortran/18157 * gfortran.fortran-torture/compile/defined_type_1.f90: New test. * gfortran.fortran-torture/compile/defined_type_2.f90: New test. * gfortran.fortran-torture/compile/defined_type_3.f90: New test. 2005-11-02 Andrew Pinski <pinskia@physics.uc.edu> PR fortran/18157 * trans-array.c (gfc_conv_resolve_dependencies): Use the correct type for the temporary array. * trans-expr.c (gfc_trans_assignment): Pass lss instead of lss_section to gfc_conv_resolve_dependencies to get the correct type. From-SVN: r106396
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r--gcc/fortran/trans-array.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index 72669f8..20d3c67 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -2542,10 +2542,13 @@ gfc_conv_resolve_dependencies (gfc_loopinfo * loop, gfc_ss * dest,
if (nDepend == 1)
{
+ tree base_type = gfc_typenode_for_spec (&dest->expr->ts);
+ if (GFC_ARRAY_TYPE_P (base_type)
+ || GFC_DESCRIPTOR_TYPE_P (base_type))
+ base_type = gfc_get_element_type (base_type);
loop->temp_ss = gfc_get_ss ();
loop->temp_ss->type = GFC_SS_TEMP;
- loop->temp_ss->data.temp.type =
- gfc_get_element_type (TREE_TYPE (dest->data.info.descriptor));
+ loop->temp_ss->data.temp.type = base_type;
loop->temp_ss->string_length = dest->string_length;
loop->temp_ss->data.temp.dimen = loop->dimen;
loop->temp_ss->next = gfc_ss_terminator;