[Patch, Fortran, 4.5] Procedure Pointer Components

Janus Weil janus@gcc.gnu.org
Wed Jan 28 21:51:00 GMT 2009


Hi all,

in August/September of last year I started working on a patch for
procedure pointer components, which has suffered some bitrotting since
then. I just updated it, so that it applies cleanly to the current
trunk. Although it's not quite finished yet, I'm posting it here for
reference, so that it doesn't get lost and can serve as a baseline for
further investigations.

In it's current form, it fails on the attached testcase with the
following backtrace:

#0  get_frame_type (info=0x0) at /home/jweil/gcc44/trunk/gcc/tree-nested.c:202
#1  0x0840aadf in get_chain_decl (info=0x8a739a8) at
/home/jweil/gcc44/trunk/gcc/tree-nested.c:308
#2  0x0840bd62 in get_nonlocal_debug_decl (info=0x8a739a8,
decl=0xb7d37108) at /home/jweil/gcc44/trunk/gcc/tree-nested.c:804
#3  0x0840f343 in convert_nonlocal_reference_op (tp=0xb7ca35d4,
walk_subtrees=0xbfffe828, data=0xbfffe994) at
/home/jweil/gcc44/trunk/gcc/tree-nested.c:872
#4  0x085522eb in walk_tree_1 (tp=0xb7ca35d4, func=0x840f290
<convert_nonlocal_reference_op>, data=0xbfffe994, pset=0x0, lh=0) at
/home/jweil/gcc44/trunk/gcc/tree.c:8630
#5  0x0829eb88 in walk_gimple_op (stmt=0xb7ca35a0,
callback_op=0x840f290 <convert_nonlocal_reference_op>, wi=0xbfffe994)
at /home/jweil/gcc44/trunk/gcc/gimple.c:1404
#6  0x0829f575 in walk_gimple_stmt (gsi=0xbfffe8e0,
callback_stmt=0x8410320 <convert_nonlocal_reference_stmt>,
callback_op=0x840f290 <convert_nonlocal_reference_op>, wi=0xbfffe994)
at /home/jweil/gcc44/trunk/gcc/gimple.c:1679
#7  0x0829f76c in walk_gimple_seq (seq=0xb7d263e4,
callback_stmt=0x8410320 <convert_nonlocal_reference_stmt>,
callback_op=0x840f290 <convert_nonlocal_reference_op>, wi=0xbfffe994)
at /home/jweil/gcc44/trunk/gcc/gimple.c:1276
#8  0x0829f6d9 in walk_gimple_stmt (gsi=0xbfffe960,
callback_stmt=0x8410320 <convert_nonlocal_reference_stmt>,
callback_op=0x840f290 <convert_nonlocal_reference_op>, wi=0xbfffe994)
at /home/jweil/gcc44/trunk/gcc/gimple.c:1688
#9  0x0829f76c in walk_gimple_seq (seq=0xb7d2645c,
callback_stmt=0x8410320 <convert_nonlocal_reference_stmt>,
callback_op=0x840f290 <convert_nonlocal_reference_op>, wi=0xbfffe994)
at /home/jweil/gcc44/trunk/gcc/gimple.c:1276
#10 0x0840a3c0 in walk_body (callback_stmt=0x8410320
<convert_nonlocal_reference_stmt>, callback_op=0, info=0xb7d37108,
seq=0xb7d2645c) at /home/jweil/gcc44/trunk/gcc/tree-nested.c:550
#11 0x0840c339 in walk_all_functions (callback_stmt=0x8410320
<convert_nonlocal_reference_stmt>, callback_op=0x840f290
<convert_nonlocal_reference_op>, root=0x8a739a8) at
/home/jweil/gcc44/trunk/gcc/tree-nested.c:560
#12 0x0840d885 in lower_nested_functions (fndecl=0xb7d2ef00) at
/home/jweil/gcc44/trunk/gcc/tree-nested.c:2165
#13 0x085aafe8 in cgraph_finalize_function (decl=0xb7d2ef00, nested=0
'\0') at /home/jweil/gcc44/trunk/gcc/cgraphunit.c:515
#14 0x080f7198 in gfc_generate_function_code (ns=0x8aa8a98) at
/home/jweil/gcc44/trunk/gcc/fortran/trans-decl.c:3977
#15 0x080a8d1d in gfc_parse_file () at
/home/jweil/gcc44/trunk/gcc/fortran/parse.c:3856
#16 0x080d878d in gfc_be_parse_file (set_yydebug=0) at
/home/jweil/gcc44/trunk/gcc/fortran/f95-lang.c:236
#17 0x083bf68e in toplev_main (argc=2, argv=0xbfffedc4) at
/home/jweil/gcc44/trunk/gcc/toplev.c:970
#18 0x08124952 in main (argc=2097184, argv=0x0) at
/home/jweil/gcc44/trunk/gcc/main.c:35

triggered by the PPC assignment in line 10 of the testcase. Anyone who
is willing to help me in finding the cause of this ICE is highly
welcome.

In addition to this, I have two more procptr patches in the pipeline
for 4.5, which I would like to commit before the PPC patch (in this
order):

(1) Procedure pointer assignment checking (PR38290), see
http://gcc.gnu.org/ml/fortran/2008-12/msg00191.html

(2) Proc-pointer function results (PR36704), see
http://gcc.gnu.org/ml/fortran/2009-01/msg00248.html

While the first one is pretty complete and just needs to be approved,
the second one still has some minor issues, but may (?) be committed
in its current form, leaving the remaining issues for a follow-up
patch. May the reviewers decide.

I'd appreciate very much a review of any of these three patches.
Cheers,
Janus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: procptr_comp_143732.diff
Type: text/x-patch
Size: 32779 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20090128/bfd037f0/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test1.f90
Type: application/octet-stream
Size: 287 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20090128/bfd037f0/attachment.obj>


More information about the Fortran mailing list