aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-common.c
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2016-07-31 01:51:37 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2016-07-31 01:51:37 +0000
commit93cb9a5aa147c94d18c708fa67e6fcb546dd7391 (patch)
tree1bd2d1bb99c6fd9044ff58b2c1250dde11ce8bcb /gcc/fortran/trans-common.c
parent01afb976deb6122c3c4832d4ad04276f8816c97f (diff)
downloadgcc-93cb9a5aa147c94d18c708fa67e6fcb546dd7391.zip
gcc-93cb9a5aa147c94d18c708fa67e6fcb546dd7391.tar.gz
gcc-93cb9a5aa147c94d18c708fa67e6fcb546dd7391.tar.bz2
re PR fortran/41922 (Diagnostic: No location shown for overlappingly initialized EQUIVALENCEd character vars)
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/41922 * target-memory.c (expr_to_char): Pass in locus and use it in error messages. (gfc_merge_initializers): Ditto. * target-memory.h: Update prototype for gfc_merge_initializers (). * trans-common.c (get_init_field): Use the correct locus. 2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/41922 * gfortran.dg/equiv_constraint_5.f90: Adjust the error message. * gfortran.dg/equiv_constraint_7.f90: Ditto. * gfortran.dg/pr41922.f90: New test. From-SVN: r238915
Diffstat (limited to 'gcc/fortran/trans-common.c')
-rw-r--r--gcc/fortran/trans-common.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c
index 4fdccc9..20ec69e 100644
--- a/gcc/fortran/trans-common.c
+++ b/gcc/fortran/trans-common.c
@@ -532,10 +532,15 @@ get_init_field (segment_info *head, tree union_type, tree *field_init,
memset (chk, '\0', (size_t)length);
for (s = head; s; s = s->next)
if (s->sym->value)
- gfc_merge_initializers (s->sym->ts, s->sym->value,
+ {
+ locus *loc = NULL;
+ if (s->sym->ns->equiv && s->sym->ns->equiv->eq)
+ loc = &s->sym->ns->equiv->eq->expr->where;
+ gfc_merge_initializers (s->sym->ts, s->sym->value, loc,
&data[s->offset],
&chk[s->offset],
(size_t)s->length);
+ }
for (i = 0; i < length; i++)
CONSTRUCTOR_APPEND_ELT (v, NULL, build_int_cst (type, data[i]));