[Bug fortran/87397] New: Clobbering intent(out) variables caused regression in OpenCoarrays testsuite

jb at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Sep 23 19:24:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87397

            Bug ID: 87397
           Summary: Clobbering intent(out) variables caused regression in
                    OpenCoarrays testsuite
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jb at gcc dot gnu.org
  Target Milestone: ---

The recent patch to clobber intent(out) variables before a call appears to
cause a regression in one of the OpenCoarrays testcases.

I try to build OpenCoarrays with

mkdir build
cd build
FC=~/.local/bin/gfortran cmake -DCMAKE_INSTALL_PREFIX=~/.local
-DCMAKE_PREFIX_PATH=~/src/gfortran/trunk/install/  ..
❯ make                                                                         
                                                                               
                                            [  1%] Built target
opencoarrays_mod                                                               
                                                                               
                        [  4%] Built target caf_mpi                            
                                                                               
                                                                    [  7%]
Built target caf_mpi_static                                                     
[  8%] Generating hello_multiverse                                              
[  8%] Built target build_hello_multiverse                                      
[  9%] Generating coarray_distributed_transpose            
/home/janne/src/gfortran/OpenCoarrays/src/tests/integration/dist_transpose/coarray_distributed_transpose.F90:97:0: 

97 | program coarray_distributed_transpose         
   |                                        
internal compiler error: in lookup_field_for_decl, at tree-nested.c:277
0xd2570d lookup_field_for_decl                         
        ../../trunk-git/gcc/tree-nested.c:277
0xd28766 convert_local_reference_stmt                                           
        ../../trunk-git/gcc/tree-nested.c:2282       
0x9b7f66 walk_gimple_stmt(gimple_stmt_iterator*, tree_node*
(*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**,
int*, void*), walk_stmt_info*)
        ../../trunk-git/gcc/gimple-walk.c:568         
0x9b81a0 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*,
bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*),
walk_stmt_info*)         
        ../../trunk-git/gcc/gimple-walk.c:51       
0x9b80d1 walk_gimple_stmt(gimple_stmt_iterator*, tree_node*
(*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**,
int*, void*), walk_stmt_info*)
        ../../trunk-git/gcc/gimple-walk.c:631                                   
0x9b81a0 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*,
bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*),
walk_stmt_info*)         
        ../../trunk-git/gcc/gimple-walk.c:51     
0x9b8061 walk_gimple_stmt(gimple_stmt_iterator*, tree_node*
(*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**,
int*, void*), walk_stmt_info*)
        ../../trunk-git/gcc/gimple-walk.c:595                                   
0x9b81a0 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*,
bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*),
walk_stmt_info*)
        ../../trunk-git/gcc/gimple-walk.c:51           
0x9b80d1 walk_gimple_stmt(gimple_stmt_iterator*, tree_node*
(*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**,
int*, void*), walk_stmt_info*)                                 
        ../../trunk-git/gcc/gimple-walk.c:631                                   
0x9b81a0 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*,
bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*),
walk_stmt_info*)                                           
        ../../trunk-git/gcc/gimple-walk.c:51                                    
0x9b8061 walk_gimple_stmt(gimple_stmt_iterator*, tree_node*
(*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**,
int*, void*), walk_stmt_info*)
        ../../trunk-git/gcc/gimple-walk.c:595                                   
0x9b81a0 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*,
bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*),
walk_stmt_info*)
        ../../trunk-git/gcc/gimple-walk.c:51                                    
0xd22258 walk_body                                                              
        ../../trunk-git/gcc/tree-nested.c:702        
0xd222d5 walk_function                                       
        ../../trunk-git/gcc/tree-nested.c:713
0xd222d5 walk_all_functions                            
        ../../trunk-git/gcc/tree-nested.c:778
0xd2c086 lower_nested_functions(tree_node*)              
        ../../trunk-git/gcc/tree-nested.c:3413  
0x810b00 cgraph_node::analyze()             
        ../../trunk-git/gcc/cgraphunit.c:675                                    
0x813f29 analyze_functions                                                      
        ../../trunk-git/gcc/cgraphunit.c:1122                                   
0x815002 symbol_table::finalize_compilation_unit()                              
        ../../trunk-git/gcc/cgraphunit.c:2760




Reverting the PR 41453 clobbering patch (and the follow-up patch to fix PR
87395) allows it to continue from there.

(it might of course also be a bug in the testcase, I haven't looked into it. In
general I think this idea of clobbering intent(out) variables is good.)


More information about the Gcc-bugs mailing list