aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/module.c
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-09-20 22:03:22 +0000
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-09-20 22:03:22 +0000
commit9fa6b0af1f0a8ec3d6799f54a7c8feedbbc0d4f9 (patch)
treec777e12a86d2297992869f6434a715f22b9b1da3 /gcc/fortran/module.c
parent4f68f111df59d8474f3635bb7a3eb5e0469b722b (diff)
downloadgcc-9fa6b0af1f0a8ec3d6799f54a7c8feedbbc0d4f9.zip
gcc-9fa6b0af1f0a8ec3d6799f54a7c8feedbbc0d4f9.tar.gz
gcc-9fa6b0af1f0a8ec3d6799f54a7c8feedbbc0d4f9.tar.bz2
re PR fortran/33221 (Cannot declare variables of TYPE without components)
PR fortran/33221 * gfortran.h (symbol_attribute): Add zero_comp field. * symbol.c (gfc_use_derived): Handle case of emtpy derived types. * decl.c (gfc_match_data_decl): Likewise. (gfc_match_derived_decl): Likewise. * module.c (ab_attribute, attr_bits): Add AB_ZERO_COMP member. (mio_symbol_attribute): Write and read AB_ZERO_COMP. * resolve.c (resolve_symbol): Handle case of emtpy derived types. * parse.c (parse_derived): Likewise. * gfortran.dg/used_types_18.f90: Declare variable of empty derived type. From-SVN: r128633
Diffstat (limited to 'gcc/fortran/module.c')
-rw-r--r--gcc/fortran/module.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 0b01ee4..3418afa 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -1523,7 +1523,7 @@ typedef enum
AB_ELEMENTAL, AB_PURE, AB_RECURSIVE, AB_GENERIC, AB_ALWAYS_EXPLICIT,
AB_CRAY_POINTER, AB_CRAY_POINTEE, AB_THREADPRIVATE, AB_ALLOC_COMP,
AB_POINTER_COMP, AB_PRIVATE_COMP, AB_VALUE, AB_VOLATILE, AB_PROTECTED,
- AB_IS_BIND_C, AB_IS_C_INTEROP, AB_IS_ISO_C, AB_ABSTRACT
+ AB_IS_BIND_C, AB_IS_C_INTEROP, AB_IS_ISO_C, AB_ABSTRACT, AB_ZERO_COMP
}
ab_attribute;
@@ -1560,6 +1560,7 @@ static const mstring attr_bits[] =
minit ("ALLOC_COMP", AB_ALLOC_COMP),
minit ("POINTER_COMP", AB_POINTER_COMP),
minit ("PRIVATE_COMP", AB_PRIVATE_COMP),
+ minit ("ZERO_COMP", AB_ZERO_COMP),
minit ("PROTECTED", AB_PROTECTED),
minit ("ABSTRACT", AB_ABSTRACT),
minit (NULL, -1)
@@ -1673,6 +1674,8 @@ mio_symbol_attribute (symbol_attribute *attr)
MIO_NAME (ab_attribute) (AB_POINTER_COMP, attr_bits);
if (attr->private_comp)
MIO_NAME (ab_attribute) (AB_PRIVATE_COMP, attr_bits);
+ if (attr->zero_comp)
+ MIO_NAME (ab_attribute) (AB_ZERO_COMP, attr_bits);
mio_rparen ();
@@ -1788,6 +1791,9 @@ mio_symbol_attribute (symbol_attribute *attr)
case AB_PRIVATE_COMP:
attr->private_comp = 1;
break;
+ case AB_ZERO_COMP:
+ attr->zero_comp = 1;
+ break;
}
}
}