This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/67758] [GCC 6 regression] ICE on invalid use of COMMON
- From: "kargl at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 29 Sep 2015 19:56:16 +0000
- Subject: [Bug fortran/67758] [GCC 6 regression] ICE on invalid use of COMMON
- Auto-submitted: auto-generated
- References: <bug-67758-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67758
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kargl at gcc dot gnu.org
--- Comment #2 from kargl at gcc dot gnu.org ---
(In reply to Dominique d'Humieres from comment #1)
> WORKSFORME!
>
> pr67758.f90:1:26:
>
> COMMON /FMCOM / X(80 000 000)
> 1
> Error: Expected another dimension in array declaration at (1)
> pr67758.f90:3:24:
>
> COMMON /FMCOM / XX(80 000 000)
> 1
> Error: PROCEDURE attribute conflicts with COMMON attribute in 'xx' at (1)
>
> with r227016 (2015-08-19) and all the revisions I have tested (I have added
> an END statement). Could you please post the output of 'gfortran -v'?
troutmask:sgk[204] gfc6 -c r5.f
f951: internal compiler error: Segmentation fault
no stack trace because unwind library not available
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
troutmask:sgk[205] gfc5 -c r5.f
r5.f:3:24:
COMMON /FMCOM / XX(80 000 000)
1
Error: PROCEDURE attribute conflicts with COMMON attribute in 'xx' at (1)
f951: Error: Unexpected end of file in 'r5.f'
troutmask:sgk[206] gfc49 -c r5.f
r5.f:3.24:
COMMON /FMCOM / XX(80 000 000)
1
Error: PROCEDURE attribute conflicts with COMMON attribute in 'xx' at (1)
Error: Unexpected end of file in 'r5.f'
Looks like a regression in symbol.c.
(gdb) p p->common_block->head->common_next
$9 = (gfc_symbol *) 0x0
(gdb) list
3205 else
3206 {
3207 gfc_symbol *cparent, *csym;
3208
3209 cparent = p->common_block->head;
3210 csym = cparent->common_next;
3211
3212 while (csym != p)
3213 {
3214 cparent = csym;
3215 csym = csym->common_next;
3216 }
3217
3218 gcc_assert(cparent->common_next == p);
3219 cparent->common_next = csym->common_next;
3220 }
3221 }