https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67900
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)
> The Ice appeared between revisions r199034 (2013-05-17):
>
> pr67900.f90:4.33:
>
> function f_real(x)
> 1
> pr67900.f90:9.36:
>
> function f_integer(x)
> 2
> Error: Binding label 'x' at (1) collides with global entity 'x' at (2)
>
> and r199221 (2013-05-17, ICE). Likely one of the revisions r199118, r199119,
> or r199120 (pr48858 and pr55465). I did not follow the convoluted arguments,
> but the code may be invalid: see the audit trail of the two PRs. Good Luck!
>
> Backtrace
>
> * thread #1: tid = 0x44d1226, 0x00007fff90ac7bb0
> libsystem_platform.dylib`_platform_strcmp + 176, queue =
> 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
> frame #0: 0x00007fff90ac7bb0 libsystem_platform.dylib`_platform_strcmp +
> 176
> libsystem_platform.dylib`_platform_strcmp:
> -> 0x7fff90ac7bb0 <+176>: movdqa (%rdi,%rcx), %xmm0
> 0x7fff90ac7bb5 <+181>: movdqu (%rsi,%rcx), %xmm1
> 0x7fff90ac7bba <+186>: pcmpeqb %xmm1, %xmm0
> 0x7fff90ac7bbe <+190>: pcmpeqb %xmm2, %xmm1
> (lldb) bt
> * thread #1: tid = 0x44d1226, 0x00007fff90ac7bb0
> libsystem_platform.dylib`_platform_strcmp + 176, queue =
> 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
> * frame #0: 0x00007fff90ac7bb0 libsystem_platform.dylib`_platform_strcmp +
> 176
> frame #1: 0x0000000100094f17 f951`(sym=0x0000000141f09680)(gfc_symbol *)
> + 599 at resolve.c:10783
> frame #2: 0x00000001000bedac
> f951`::do_traverse_symtree(st=<unavailable>, st_func=<unavailable>,
> sym_func=(f951`(null)(gfc_symbol *) at resolve.c:10735))(gfc_symtree *),
> void (*)(gfc_symbol *)) + 236 at symbol.c:3703
> frame #3: 0x00000001000a7f54 f951`::resolve_types(ns=<unavailable>) +
> 1028 at resolve.c:15336
> frame #4: 0x00000001000a3458 f951`gfc_resolve(ns=0x0000000142015400) +
> 56 at resolve.c:15416
> frame #5: 0x00000001000a662f
> f951`::resolve_symbol(sym=0x0000000141f09550) + 8479 at resolve.c:13362
> frame #6: 0x00000001000bedac
> f951`::do_traverse_symtree(st=<unavailable>, st_func=<unavailable>,
> sym_func=(f951`::resolve_symbol(gfc_symbol *) at
> resolve.c:13482))(gfc_symtree *), void (*)(gfc_symbol *)) + 236 at
> symbol.c:3703
> frame #7: 0x00000001000a7d15 f951`::resolve_types(ns=0x0000000144800000)
> + 453 at resolve.c:15306
> frame #8: 0x00000001000a3458 f951`gfc_resolve(ns=0x0000000144800000) +
> 56 at resolve.c:15416
> frame #9: 0x000000010008c03b f951`gfc_parse_file() [inlined]
> resolve_all_program_units(gfc_global_ns_list=0x0000000144800000) + 71 at
> parse.c:5485
> frame #10: 0x000000010008bff4 f951`gfc_parse_file() + 1044
> frame #11: 0x00000001000d19b6 f951`::gfc_be_parse_file() + 54 at
> f95-lang.c:209
> frame #12: 0x000000010091e89a f951`::compile_file() + 58 at toplev.c:483
> frame #13: 0x0000000100cfddbc f951`toplev::main(int, char**) + 1151 at
> toplev.c:1973
> frame #14: 0x0000000100cfd93d f951`toplev::main(this=<unavailable>,
> argc=2, argv=0x00007fff5fbff350) + 717
> frame #15: 0x0000000100cff779 f951`main(argc=2, argv=0x00007fff5fbff350)
> + 41 at main.c:39
Patch
Index: resolve.c
===================================================================
--- resolve.c (revision 228206)
+++ resolve.c (working copy)
@@ -10702,7 +10702,7 @@ gfc_verify_binding_labels (gfc_symbol *s
sym->binding_label = NULL;
}
- else if (sym->attr.flavor == FL_VARIABLE
+ else if (sym->attr.flavor == FL_VARIABLE && module
&& (strcmp (module, gsym->mod_name) != 0
|| strcmp (sym->name, gsym->sym_name) != 0))
{