Patchwork [Fortran] PR 51987 - Fix setting of f2k_derived - and thus fix CLASS-based TBP

login
register
mail settings
Submitter Tobias Burnus
Date Jan. 25, 2012, 8:27 p.m.
Message ID <4F2065C7.6020100@net-b.de>
Download mbox | patch
Permalink /patch/137857/
State New
Headers show

Comments

Tobias Burnus - Jan. 25, 2012, 8:27 p.m.
Dear all, dear Paul,

Dominique pointed out that the patch does not fully work and that one 
gets an ICE:
   internal compiler error: in gfc_release_symbol, at fortran/symbol.c:2531

For some odd reason, it didn't occur for my build, which had some 
unrelated patch applied. I have not understood why it worked with the 
unrelated patch. However, I do understand why it fails.

But with valgrind, I see it in all my builds. Fixed by the following 
patch. (Fixes the patch, valgrind shows now error and the test case 
still works.)

I will commit it as "obvious" after it regtesting it.

Sorry for the breakage.

Tobias

PS: I do now do the same as for "if (fclass = NULL)"; while I do not 
quite understand why it works with "gfc_get_namespace (NULL, 0)", it does.
Steve Kargl - Jan. 25, 2012, 9:05 p.m.
On Wed, Jan 25, 2012 at 09:27:51PM +0100, Tobias Burnus wrote:
> Dear all, dear Paul,
> 
> Dominique pointed out that the patch does not fully work and that one 
> gets an ICE:
>   internal compiler error: in gfc_release_symbol, at fortran/symbol.c:2531
> 
> For some odd reason, it didn't occur for my build, which had some 
> unrelated patch applied. I have not understood why it worked with the 
> unrelated patch. However, I do understand why it fails.
> 
> But with valgrind, I see it in all my builds. Fixed by the following 
> patch. (Fixes the patch, valgrind shows now error and the test case 
> still works.)
> 
> I will commit it as "obvious" after it regtesting it.
> 

JFYI, the patch fixes the ICE.
Tobias Burnus - Jan. 25, 2012, 10:30 p.m.
Steve Kargl wrote:
> On Wed, Jan 25, 2012 at 09:27:51PM +0100, Tobias Burnus wrote:
>> I will commit it as "obvious" after it regtesting it.
> JFYI, the patch fixes the ICE.

Yes, it does - and it also regtested. I committed it as Rev. 183541.

Tobias

Patch

Index: class.c
===================================================================
--- class.c     (Revision 183533)
+++ class.c     (Arbeitskopie)
@@ -422,7 +422,7 @@  gfc_build_class_symbol (gfc_typespec *ts, symbol_a
        c->attr.pointer = 1;
      }
    else if (!fclass->f2k_derived)
-    fclass->f2k_derived = fclass->components->ts.u.derived->f2k_derived;
+    fclass->f2k_derived = gfc_get_namespace (NULL, 0);

    /* Since the extension field is 8 bit wide, we can only have
       up to 255 extension levels.  */