{
gfc_common_head *p;
const char * name;
- const char * lname;
int flags;
const char *label;
struct written_common *w;
/* We will write out the binding label, or the name if no label given. */
name = st->n.common->name;
-
- /* Use the symtree(local)name to check if the common has been written. */
- lname = st->name;
p = st->n.common;
label = p->is_bind_c ? p->binding_label : p->name;
w = written_commons;
while (w)
{
- int c = strcmp (lname, w->name);
+ int c = strcmp (name, w->name);
c = (c != 0 ? c : strcmp (label, w->label));
if (c == 0)
write_me = false;
/* Record that we have written this common. */
w = XCNEW (struct written_common);
- w->name = lname;
+ w->name = p->name;
w->label = label;
gfc_insert_bbt (&written_commons, w, compare_written_commons);
}
+++ /dev/null
-! { dg-do run }\r
-!\r
-! PR fortran/38657, in which the mixture of PRIVATE and\r
-! COMMON in TEST4, would mess up the association with\r
-! TESTCHAR in TEST2.\r
-!\r
-! Contributed by Paul Thomas <pault@gcc.gnu.org>\r
-! From a report in clf by Chris Bradley.\r
-!\r
-MODULE TEST4\r
- PRIVATE\r
- CHARACTER(LEN=80) :: T1 = &\r
- "Mary had a little lamb, Its fleece was white as snow;"\r
- CHARACTER(LEN=80) :: T2 = &\r
- "And everywhere that Mary went, The lamb was sure to go."\r
- CHARACTER(LEN=80) :: TESTCHAR\r
- COMMON /TESTCOMMON1/ TESTCHAR\r
- PUBLIC T1, T2, FOOBAR\r
-CONTAINS\r
- subroutine FOOBAR (CHECK)\r
- CHARACTER(LEN=80) :: CHECK\r
- IF (TESTCHAR .NE. CHECK) CALL ABORT\r
- end subroutine\r
-END MODULE TEST4\r
-\r
-MODULE TEST3\r
- CHARACTER(LEN=80) :: TESTCHAR\r
- COMMON /TESTCOMMON1/ TESTCHAR\r
-END MODULE TEST3\r
-\r
-MODULE TEST2\r
- use TEST4\r
- USE TEST3, chr => testchar\r
- PRIVATE\r
- CHARACTER(LEN=80) :: TESTCHAR\r
- COMMON /TESTCOMMON1/ TESTCHAR\r
- PUBLIC TESTCHAR, FOO, BAR, CHR, T1, T2, FOOBAR
-contains
- subroutine FOO
- TESTCHAR = T1
- end subroutine
- subroutine BAR (CHECK)\r
- CHARACTER(LEN=80) :: CHECK
- IF (TESTCHAR .NE. CHECK) CALL ABORT\r
- IF (CHR .NE. CHECK) CALL ABORT\r
- end subroutine
-END MODULE TEST2\r
-\r
-PROGRAM TEST1\r
- USE TEST2
- call FOO
- call BAR (T1)
- TESTCHAR = T2
- call BAR (T2)
- CALL FOOBAR (T2)\r
-END PROGRAM TEST1\r
-! { dg-final { cleanup-modules "TEST2 TEST3 TEST4" } }\r