diff mbox

[Fortran] PR 59023: [4.9 regression] ICE in gfc_search_interface with BIND(C)

Message ID CAKwh3qg7nFzQwzxKyTsO_PW=tnw7G3_XVUL6GpQaMnxkLFF+Fg@mail.gmail.com
State New
Headers show

Commit Message

Janus Weil Dec. 31, 2013, 10:14 a.m. UTC
Hi all,

... and the reg-bashing continues: Here is a small patch to fix a
bind(c) problem. It essentially prevents 'resolve_global_procedure' to
be applied to bind(c) procedures.

Regtested on x86_64-unknown-linux-gnu. Ok for trunk?

Cheers,
Janus



2013-12-31  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/59023
    * resolve.c (resolve_global_procedure): Don't apply to c-binding
    procedures.
    (gfc_verify_binding_labels): Remove duplicate line.

2013-12-31  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/59023
    * gfortran.dg/bind_c_procs_2.f90: New.

Comments

Janus Weil Jan. 3, 2014, 9:29 a.m. UTC | #1
In addition this patch fixes PR 59662.

Also: Ping!

Cheers,
Janus



2013/12/31 Janus Weil <janus@gcc.gnu.org>:
> Hi all,
>
> ... and the reg-bashing continues: Here is a small patch to fix a
> bind(c) problem. It essentially prevents 'resolve_global_procedure' to
> be applied to bind(c) procedures.
>
> Regtested on x86_64-unknown-linux-gnu. Ok for trunk?
>
> Cheers,
> Janus
>
>
>
> 2013-12-31  Janus Weil  <janus@gcc.gnu.org>
>
>     PR fortran/59023
>     * resolve.c (resolve_global_procedure): Don't apply to c-binding
>     procedures.
>     (gfc_verify_binding_labels): Remove duplicate line.
>
> 2013-12-31  Janus Weil  <janus@gcc.gnu.org>
>
>     PR fortran/59023
>     * gfortran.dg/bind_c_procs_2.f90: New.
Paul Richard Thomas Jan. 6, 2014, 10:46 a.m. UTC | #2
Dear Janus, dear all,

Happy New Year!

The patch is OK for trunk.

Thanks a lot.

Paul

On 3 January 2014 10:29, Janus Weil <janus@gcc.gnu.org> wrote:
> In addition this patch fixes PR 59662.
>
> Also: Ping!
>
> Cheers,
> Janus
>
>
>
> 2013/12/31 Janus Weil <janus@gcc.gnu.org>:
>> Hi all,
>>
>> ... and the reg-bashing continues: Here is a small patch to fix a
>> bind(c) problem. It essentially prevents 'resolve_global_procedure' to
>> be applied to bind(c) procedures.
>>
>> Regtested on x86_64-unknown-linux-gnu. Ok for trunk?
>>
>> Cheers,
>> Janus
>>
>>
>>
>> 2013-12-31  Janus Weil  <janus@gcc.gnu.org>
>>
>>     PR fortran/59023
>>     * resolve.c (resolve_global_procedure): Don't apply to c-binding
>>     procedures.
>>     (gfc_verify_binding_labels): Remove duplicate line.
>>
>> 2013-12-31  Janus Weil  <janus@gcc.gnu.org>
>>
>>     PR fortran/59023
>>     * gfortran.dg/bind_c_procs_2.f90: New.
Janus Weil Jan. 6, 2014, 8:27 p.m. UTC | #3
Hi Paul,

> Happy New Year!

same to you!


> The patch is OK for trunk.

Thanks, committed as r206355, reducing the regression count by two in
one go. Unfortunately it's still at what is probably an all-time high
for gfortran (~40).

I'm about to post another regfix soon (for PR 59589), and I'd love to
see others join me and Mikael in the regbashing game ... ;)

Cheers,
Janus



> On 3 January 2014 10:29, Janus Weil <janus@gcc.gnu.org> wrote:
>> In addition this patch fixes PR 59662.
>>
>> Also: Ping!
>>
>> Cheers,
>> Janus
>>
>>
>>
>> 2013/12/31 Janus Weil <janus@gcc.gnu.org>:
>>> Hi all,
>>>
>>> ... and the reg-bashing continues: Here is a small patch to fix a
>>> bind(c) problem. It essentially prevents 'resolve_global_procedure' to
>>> be applied to bind(c) procedures.
>>>
>>> Regtested on x86_64-unknown-linux-gnu. Ok for trunk?
>>>
>>> Cheers,
>>> Janus
>>>
>>>
>>>
>>> 2013-12-31  Janus Weil  <janus@gcc.gnu.org>
>>>
>>>     PR fortran/59023
>>>     * resolve.c (resolve_global_procedure): Don't apply to c-binding
>>>     procedures.
>>>     (gfc_verify_binding_labels): Remove duplicate line.
>>>
>>> 2013-12-31  Janus Weil  <janus@gcc.gnu.org>
>>>
>>>     PR fortran/59023
>>>     * gfortran.dg/bind_c_procs_2.f90: New.
>
>
>
> --
> The knack of flying is learning how to throw yourself at the ground and miss.
>        --Hitchhikers Guide to the Galaxy
diff mbox

Patch

Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c	(revision 206252)
+++ gcc/fortran/resolve.c	(working copy)
@@ -2351,6 +2351,7 @@  resolve_global_procedure (gfc_symbol *sym, locus *
   if ((sym->attr.if_source == IFSRC_UNKNOWN
        || sym->attr.if_source == IFSRC_IFBODY)
       && gsym->type != GSYM_UNKNOWN
+      && !gsym->binding_label
       && gsym->ns
       && gsym->ns->resolved != -1
       && gsym->ns->proc_name
@@ -10163,7 +10164,6 @@  gfc_verify_binding_labels (gfc_symbol *sym)
       gsym->where = sym->declared_at;
       gsym->sym_name = sym->name;
       gsym->binding_label = sym->binding_label;
-      gsym->binding_label = sym->binding_label;
       gsym->ns = sym->ns;
       gsym->mod_name = module;
       if (sym->attr.function)