aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-common.c
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2020-05-24 21:35:04 +0200
committerHarald Anlauf <anlauf@gmx.de>2020-05-24 21:35:04 +0200
commitd176184d98a00ab379ae5959aed1908a79995e6b (patch)
tree558141f6f0a891be9183cc5d32a352b6db5b772e /gcc/fortran/trans-common.c
parent392bc7d21306d29f560c754ca13d9e206ec6854b (diff)
downloadgcc-d176184d98a00ab379ae5959aed1908a79995e6b.zip
gcc-d176184d98a00ab379ae5959aed1908a79995e6b.tar.gz
gcc-d176184d98a00ab379ae5959aed1908a79995e6b.tar.bz2
PR fortran/95106 - truncation of long symbol names with EQUIVALENCE
For long module names, the generated name-mangled symbol was truncated, leading to bogus warnings about COMMON block mismatches. Provide sufficiently large temporaries. gcc/fortran/ 2020-05-24 Harald Anlauf <anlauf@gmx.de> PR fortran/95106 * trans-common.c (gfc_sym_mangled_common_id): Enlarge temporaries for name-mangling. gcc/testsuite/ 2020-05-24 Harald Anlauf <anlauf@gmx.de> PR fortran/95106 * gfortran.dg/equiv_11.f90: New test.
Diffstat (limited to 'gcc/fortran/trans-common.c')
-rw-r--r--gcc/fortran/trans-common.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c
index bf163bc..3775a8b 100644
--- a/gcc/fortran/trans-common.c
+++ b/gcc/fortran/trans-common.c
@@ -242,8 +242,9 @@ static tree
gfc_sym_mangled_common_id (gfc_common_head *com)
{
int has_underscore;
- char mangled_name[GFC_MAX_MANGLED_SYMBOL_LEN + 1];
- char name[GFC_MAX_SYMBOL_LEN + 1];
+ /* Provide sufficient space to hold "symbol.eq.1234567890__". */
+ char mangled_name[GFC_MAX_MANGLED_SYMBOL_LEN + 1 + 16];
+ char name[GFC_MAX_SYMBOL_LEN + 1 + 16];
/* Get the name out of the common block pointer. */
strcpy (name, com->name);