Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules

2019-03-21 Thread Thomas Schwinge
Hi!

On Thu, 28 Feb 2019 18:02:32 +0100, Thomas Schwinge  
wrote:
> On Fri, 02 Jan 2015 12:28:10 +0100, Tobias Burnus  wrote:
> > [...]
> > 
> > I additionally propagated the dg-compile-aux-modules support to caf.dg 
> 
> That got committed in r219143:
> 
> > --- a/gcc/testsuite/gfortran.dg/coarray/caf.exp
> > +++ b/gcc/testsuite/gfortran.dg/coarray/caf.exp
> > @@ -43,6 +43,21 @@ global DG_TORTURE_OPTIONS torture_with_loops
> >  torture-init
> >  set-torture-options $DG_TORTURE_OPTIONS
> >  
> > +global gfortran_test_path
> > +global gfortran_aux_module_flags
> > +set gfortran_test_path $srcdir/$subdir
> > +set gfortran_aux_module_flags $DEFAULT_FFLAGS
> > +proc dg-compile-aux-modules { args } {
> > +global gfortran_test_path
> > +global gfortran_aux_module_flags
> > +if { [llength $args] != 2 } {
> > +   error "dg-set-target-env-var: needs one argument"
> > +   return
> > +}
> > +dg-test $gfortran_test_path/[lindex $args 1] "" 
> > $gfortran_aux_module_flags
> > +# cleanup-modules isn't intentionally invoked here.
> > +}
> 
> I just noticed that this copy is missing Jakub's r215293 changes that he
> had applied a few months *earlier* to the master copy of
> 'dg-compile-aux-modules', in 'gcc/testsuite/gfortran.dg/dg.exp', see
> attached, and/or
> .
> I can't easily test it with the affected DejaGnu version 1.4.4 (which is
> still the minimum version required now), but it tests fine with DejaGnu
> 1.5, and seems straight-forward, so I propose I commit "as obvious" these
> changes to the 'gcc/testsuite/gfortran.dg/coarray/caf.exp' copy, too?
> (It's exactly these changes missing to make the two copies identical.)

For testing GCC with a custom DejaGnu installation, you apparently just
have to put its installation directory into 'PATH'.

Testing with DejaGnu 1.4.4 (specifically, the 'dejagnu-1.4.4-release' Git
tag), one runs into:

cannot trap SIGSEGV
while executing
"trap "send_error \"got a \[trap -name\] signal, $str \\n\"; log_and_exit;" 
$signal"
("foreach" body line 4)
invoked from within
"foreach sig "{SIGTERM {terminated}}  {SIGINT  {interrupted by user}}  
{SIGQUIT {interrupted by user}}  {SIGSEGV {segmentation violation}}" {
set sign..."
invoked from within
"if ![exp_debug] {
foreach sig "{SIGTERM {terminated}} \
 {SIGINT  {interrupted by user}} \
 {SIGQUIT {interrupted by user}..."
(file "[...]/share/dejagnu/runtest.exp" line 1503)

This is an incompatibility with "recent" versions of 'expect'; see
, for example, and this is resolved by
DejaGnu commit 504776814fa56295c4cff40d78a1be446f851a7c.


With that resolved, no problems found -- that is, confirming that 15
years old DejaGnu version 1.4.4 still works fine for GCC testing (in my
configuration).


I convinced myself that my proposed changes are the right thing to do,
and committed "[testsuite, Fortran] Apply DejaGnu 1.4.4 work-around also
to 'gfortran.dg/coarray/caf.exp:dg-compile-aux-modules'" to trunk in
r269848, to gcc-8-branch in r269849, and to gcc-7-branch in r269850, see
attached.


> The other copy, created later, in
> 'gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp' already
> does exactly match the master copy.
> 
> 
> And then, of course, we really should unify all 'dg-compile-aux-modules'
> copies into one shared file.  (But it's not completely straight-forward,
> because of the handling of 'gfortran_test_path', and
> 'gfortran_aux_module_flags'.)


Grüße
 Thomas


>From e78648a61e4e5fc60d400c2d2c89254aee4c0715 Mon Sep 17 00:00:00 2001
From: tschwinge 
Date: Thu, 21 Mar 2019 19:16:29 +
Subject: [PATCH] [testsuite, Fortran] Apply DejaGnu 1.4.4 work-around also to
 'gfortran.dg/coarray/caf.exp:dg-compile-aux-modules'

See trunk r215293.  This unifies all 'dg-compile-aux-modules' instances.

	gcc/testsuite/
	PR fortran/56408
	* gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Workaround
	missing nexted dg-test call support in dejaGNU 1.4.4.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@269848 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/testsuite/ChangeLog   |  4 
 gcc/testsuite/gfortran.dg/coarray/caf.exp | 12 +++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 914ba7237033..40446965212e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,9 @@
 2019-03-21  Thomas Schwinge  
 
+	PR fortran/56408
+	* gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Workaround
+	missing nexted dg-test call support in dejaGNU 1.4.4.
+
 	PR fortran/29383
 	* gfortran.dg/ieee/ieee.exp (DEFAULT_FFLAGS): Set the same as in
 	other '*.exp' files.
diff --git a/gcc/testsuite/gfortran.dg/coarray/caf.exp b/gcc/testsuite/gfortran.dg/coarray/caf.exp
index 4c6dba1dc22b..e3204c34779b 

Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules

2019-02-28 Thread Thomas Schwinge
Hi!

On Fri, 02 Jan 2015 12:28:10 +0100, Tobias Burnus  wrote:
> [...]
> 
> I additionally propagated the dg-compile-aux-modules support to caf.dg 

That got committed in r219143:

> --- a/gcc/testsuite/gfortran.dg/coarray/caf.exp
> +++ b/gcc/testsuite/gfortran.dg/coarray/caf.exp
> @@ -43,6 +43,21 @@ global DG_TORTURE_OPTIONS torture_with_loops
>  torture-init
>  set-torture-options $DG_TORTURE_OPTIONS
>  
> +global gfortran_test_path
> +global gfortran_aux_module_flags
> +set gfortran_test_path $srcdir/$subdir
> +set gfortran_aux_module_flags $DEFAULT_FFLAGS
> +proc dg-compile-aux-modules { args } {
> +global gfortran_test_path
> +global gfortran_aux_module_flags
> +if { [llength $args] != 2 } {
> + error "dg-set-target-env-var: needs one argument"
> + return
> +}
> +dg-test $gfortran_test_path/[lindex $args 1] "" 
> $gfortran_aux_module_flags
> +# cleanup-modules isn't intentionally invoked here.
> +}

I just noticed that this copy is missing Jakub's r215293 changes that he
had applied a few months *earlier* to the master copy of
'dg-compile-aux-modules', in 'gcc/testsuite/gfortran.dg/dg.exp', see
attached, and/or
.
I can't easily test it with the affected DejaGnu version 1.4.4 (which is
still the minimum version required now), but it tests fine with DejaGnu
1.5, and seems straight-forward, so I propose I commit "as obvious" these
changes to the 'gcc/testsuite/gfortran.dg/coarray/caf.exp' copy, too?
(It's exactly these changes missing to make the two copies identical.)


The other copy, created later, in
'gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp' already
does exactly match the master copy.


And then, of course, we really should unify all 'dg-compile-aux-modules'
copies into one shared file.  (But it's not completely straight-forward,
because of the handling of 'gfortran_test_path', and
'gfortran_aux_module_flags'.)


Grüße
 Thomas


From 6278a9a2afb7d4d730c585f93d2bd435ed63f963 Mon Sep 17 00:00:00 2001
From: jakub 
Date: Tue, 16 Sep 2014 09:35:00 +
Subject: [PATCH] 	PR fortran/56408 	* gfortran.dg/dg.exp
 (dg-compile-aux-modules): Workaround 	missing nexted dg-test call support in
 dejaGNU 1.4.4.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215293 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/testsuite/ChangeLog  |  6 ++
 gcc/testsuite/gfortran.dg/dg.exp | 12 +++-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fdb706a8d8dd..4d3c96beee2c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2014-09-16  Jakub Jelinek  
+
+	PR fortran/56408
+	* gfortran.dg/dg.exp (dg-compile-aux-modules): Workaround
+	missing nexted dg-test call support in dejaGNU 1.4.4.
+
 2014-09-15  Andi Kleen  
 
 	* gcc.dg/pg-override.c: New test.
diff --git a/gcc/testsuite/gfortran.dg/dg.exp b/gcc/testsuite/gfortran.dg/dg.exp
index e8c39231db00..6bd69e6c88d0 100644
--- a/gcc/testsuite/gfortran.dg/dg.exp
+++ b/gcc/testsuite/gfortran.dg/dg.exp
@@ -39,8 +39,18 @@ proc dg-compile-aux-modules { args } {
 	error "dg-set-target-env-var: needs one argument"
 	return
 }
+
+set level [info level]
+if { [info procs dg-save-unknown] != [list] } {
+	rename dg-save-unknown dg-save-unknown-level-$level
+}
+
 dg-test $gfortran_test_path/[lindex $args 1] "" $gfortran_aux_module_flags
-# cleanup-modules isn't intentionally invoked here.
+# cleanup-modules is intentionally not invoked here.
+
+if { [info procs dg-save-unknown-level-$level] != [list] } {
+	rename dg-save-unknown-level-$level dg-save-unknown
+}
 }
 
 # Main loop.
-- 
2.17.1



signature.asc
Description: PGP signature


[Patch, Fortran] Fix previous patch (was: Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules)

2015-01-04 Thread Tobias Burnus
Attached is a regtested patch, which fixes the issue. Additionally, the 
variable visibility (TREE_PUBLIC) is now depending on the private 
attribute (copied from the module var generation) and I mark the tree as 
DECL_NONALIASED. The former I also did for proc-pointers, which is an 
unrelated patch.


Build and regtested on x86-64-gnu-linux.
OK for the trunk?


Dominique d'Humières wrote:

Compilation with the new patch fails with
../../work/gcc/fortran/trans-decl.c: In function 'void 
gfc_build_qualified_array(tree, gfc_symbol*)':
../../work/gcc/fortran/trans-decl.c:855:25: error: 'cur_module' was not 
declared in this scope
 gfc_module_add_decl (cur_module, token);


Which shows that w/o compiling and testing, one (usually) cannot write 
patches. Solution is to move the declaration up in the file. However, it 
turned out that that's not sufficient: the pushdecl is required.


Tobias


Le 3 janv. 2015 à 23:30, Tobias Burnus bur...@net-b.de a écrit :

Dominique d'Humières wrote:

 From a quick test, with the patch I still see the error with -m32

It helps if one actually adds the decl. The following (still untested) should 
help. I also marked the token as nonaliasing (it really should!) and added for 
proc pointers the tree-public optimization.

Tobias
foo.diff




2015-01-02  Tobias Burnus  bur...@net-b.de

* trans-decl.c (gfc_build_qualified_array): Fix coarray tokens
for module coarrays with -fcoarray=lib.
	(get_proc_pointer_decl): As module variable, make only public
	when not marked as private.

	* gfortran.dg/coarray/codimension_2b.f90: New file.
	* gfortran.dg/coarray/codimension_2.f90: Add it to dg-extra-sources.
	* gfortran.dg/coarray/codimension_2.f90: Call its subroutine.

diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 9ef6bfc..dfc0f23 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -87,6 +87,8 @@ static gfc_namespace *module_namespace;
 /* The currently processed procedure symbol.  */
 static gfc_symbol* current_procedure_symbol = NULL;
 
+/* The currently processed module.  */
+static struct module_htab_entry *cur_module;
 
 /* With -fcoarray=lib: For generating the registering call
of static coarrays.  */
@@ -830,15 +832,33 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym)
 			IDENTIFIER_POINTER (gfc_sym_mangled_identifier (sym;
 	  token = build_decl (DECL_SOURCE_LOCATION (decl), VAR_DECL, token_name,
 			  token_type);
-	  TREE_PUBLIC (token) = 1;
+	  if (sym-attr.use_assoc)
+	DECL_EXTERNAL (token) = 1;
+	  else
+	TREE_STATIC (token) = 1;
+
+	  if (sym-attr.use_assoc || sym-attr.access != ACCESS_PRIVATE ||
+	  sym-attr.public_used)
+	TREE_PUBLIC (token) = 1;
 	}
   else
-	token = gfc_create_var_np (token_type, caf_token);
+	{
+	  token = gfc_create_var_np (token_type, caf_token);
+	  TREE_STATIC (token) = 1;
+	}
 
   GFC_TYPE_ARRAY_CAF_TOKEN (type) = token;
   DECL_ARTIFICIAL (token) = 1;
-  TREE_STATIC (token) = 1;
-  gfc_add_decl_to_function (token);
+  DECL_NONALIASED (token) = 1;
+
+  if (sym-module  !sym-attr.use_assoc)
+	{
+	  pushdecl (token);
+	  DECL_CONTEXT (token) = sym-ns-proc_name-backend_decl;
+	  gfc_module_add_decl (cur_module, token);
+	}
+  else
+	gfc_add_decl_to_function (token);
 }
 
   for (dim = 0; dim  GFC_TYPE_ARRAY_RANK (type); dim++)
@@ -1664,7 +1684,9 @@ get_proc_pointer_decl (gfc_symbol *sym)
   else if (sym-module  sym-ns-proc_name-attr.flavor == FL_MODULE)
 {
   /* This is the declaration of a module variable.  */
-  TREE_PUBLIC (decl) = 1;
+  if (sym-ns-proc_name-attr.flavor == FL_MODULE
+	   (sym-attr.access != ACCESS_PRIVATE || sym-attr.public_used))
+	TREE_PUBLIC (decl) = 1;
   TREE_STATIC (decl) = 1;
 }
 
@@ -4326,8 +4348,6 @@ gfc_module_add_decl (struct module_htab_entry *entry, tree decl)
 *slot = decl;
 }
 
-static struct module_htab_entry *cur_module;
-
 
 /* Generate debugging symbols for namelists. This function must come after
generate_local_decl to ensure that the variables in the namelist are
diff --git a/gcc/testsuite/gfortran.dg/coarray/codimension_2.f90 b/gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
index b211f9b..45d3374 100644
--- a/gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
+++ b/gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
@@ -1,5 +1,5 @@
 ! { dg-do link }
-! { dg-additional-sources codimension_2a.f90 }
+! { dg-additional-sources codimension_2a.f90 codimension_2b.f90 }
 !
 ! To be used with codimension_2a.f90
 ! Check that the coarray declared in the module is accessible
diff --git a/gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90 b/gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90
index 8eb472c..3dec4aa 100644
--- a/gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90
+++ b/gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90
@@ -11,6 +11,7 @@
 program testmod
   use global_coarrays
   implicit none
+  external ttest
   
   integer :: 

Re: [Patch, Fortran] Fix previous patch (was: Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules)

2015-01-04 Thread Dominique d'Humières
Dear Tobias,

I have done a clean bootstrap with your patch and run

make -k check-gfortran RUNTESTFLAGS=caf.exp --target_board=unix'{-m32,-m64}’ 

without regression.

Thanks,

Dominique

 Le 4 janv. 2015 à 19:57, Tobias Burnus bur...@net-b.de a écrit :
 
 Attached is a regtested patch, which fixes the issue. Additionally, the 
 variable visibility (TREE_PUBLIC) is now depending on the private attribute 
 (copied from the module var generation) and I mark the tree as 
 DECL_NONALIASED. The former I also did for proc-pointers, which is an 
 unrelated patch.
 
 Build and regtested on x86-64-gnu-linux.
 OK for the trunk?
 



Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules

2015-01-03 Thread Dominique d'Humières
From a quick test, with the patch I still see the error with -m32

/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//cc8Yz3Jr.s:18:non-relocatable 
subtraction expression, __F.caf_token__global_coarrays_MOD_b minus L1$pb
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//cc8Yz3Jr.s:18:symbol: 
__F.caf_token__global_coarrays_MOD_b can't be undefined in a subtraction 
expression

but also the test fails at link time with -m64

[Book15] f90/bug% gfc 
/opt/gcc/work/gcc/testsuite/gfortran.dg/coarray/codimension_2.f90 
/opt/gcc/work/gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90 
-fcoarray=lib -O2 -lcaf_single
Undefined symbols for architecture x86_64:
  __F.caf_token__global_coarrays_MOD_b, referenced from:
  __caf_init.0 in ccljvUii.o
  _MAIN__ in ccmqTPwK.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

Dominique

 Le 3 janv. 2015 à 21:50, Tobias Burnus bur...@net-b.de a écrit :
 
 Dominique Dhumieres wrote:
 The test gfortran.dg/coarray/codimension_2.f90 fails on 
 x86_64-apple-darwin14 with -m32
 (see https://gcc.gnu.org/ml/gcc-testresults/2015-01/msg00185.html). The 
 error is
 [...]
 
 Yes, there seems to be something wrong. The module has:
 
 U _F.caf_token__global_coarrays_MOD_b
  B __global_coarrays_MOD_b
 
 where the token should not be Undefined but B. On the other hand, the 
 USEr of the module has:
 
  B _F.caf_token__global_coarrays_MOD_b
 U __global_coarrays_MOD_b
 
 but it should have a U – with two users one even would get: multiple 
 definition of `_F.caf_token__global_coarrays_MOD_b'.
 
 
 Untested patch attached.
 
 Tobias
 foo.diff



Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules

2015-01-03 Thread Tobias Burnus

Dominique Dhumieres wrote:

The test gfortran.dg/coarray/codimension_2.f90 fails on x86_64-apple-darwin14 
with -m32
(see https://gcc.gnu.org/ml/gcc-testresults/2015-01/msg00185.html). The error is
[...]


Yes, there seems to be something wrong. The module has:

 U _F.caf_token__global_coarrays_MOD_b
 B __global_coarrays_MOD_b

where the token should not be Undefined but B. On the other hand, 
the USEr of the module has:


 B _F.caf_token__global_coarrays_MOD_b
 U __global_coarrays_MOD_b

but it should have a U – with two users one even would get: multiple 
definition of `_F.caf_token__global_coarrays_MOD_b'.



Untested patch attached.

Tobias
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 9ef6bfc..84a8a6e 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -830,14 +830,23 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym)
 			IDENTIFIER_POINTER (gfc_sym_mangled_identifier (sym;
 	  token = build_decl (DECL_SOURCE_LOCATION (decl), VAR_DECL, token_name,
 			  token_type);
-	  TREE_PUBLIC (token) = 1;
+	  if (sym-attr.use_assoc)
+	DECL_EXTERNAL (token) = 1;
+	  else
+	TREE_STATIC (token) = 1;
+
+	  if (sym-attr.use_assoc || sym-attr.access != ACCESS_PRIVATE ||
+	  sym-attr.public_used)
+	TREE_PUBLIC (token) = 1;
 	}
   else
-	token = gfc_create_var_np (token_type, caf_token);
+	{
+	  token = gfc_create_var_np (token_type, caf_token);
+	  TREE_STATIC (token) = 1;
+	}
 
   GFC_TYPE_ARRAY_CAF_TOKEN (type) = token;
   DECL_ARTIFICIAL (token) = 1;
-  TREE_STATIC (token) = 1;
   gfc_add_decl_to_function (token);
 }
 


Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules

2015-01-03 Thread Dominique Dhumieres
Happy New Year to all.

The test gfortran.dg/coarray/codimension_2.f90 fails on x86_64-apple-darwin14 
with -m32
(see https://gcc.gnu.org/ml/gcc-testresults/2015-01/msg00185.html). The error is

gfc /opt/gcc/work/gcc/testsuite/gfortran.dg/coarray/codimension_2.f90 
/opt/gcc/work/gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90 
-fcoarray=lib -O2 -lcaf_single -m32
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccPcznrm.s:18:non-relocatable 
subtraction expression, __F.caf_token__global_coarrays_MOD_b minus L1$pb
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccPcznrm.s:18:symbol: 
__F.caf_token__global_coarrays_MOD_b can't be undefined in a subtraction 
expression

Dominique


Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules

2015-01-03 Thread Tobias Burnus

Dominique d'Humières wrote:

 From a quick test, with the patch I still see the error with -m32


It helps if one actually adds the decl. The following (still untested) 
should help. I also marked the token as nonaliasing (it really should!) 
and added for proc pointers the tree-public optimization.


Tobias
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 9ef6bfc..976db2b 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -830,15 +830,32 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym)
 			IDENTIFIER_POINTER (gfc_sym_mangled_identifier (sym;
 	  token = build_decl (DECL_SOURCE_LOCATION (decl), VAR_DECL, token_name,
 			  token_type);
-	  TREE_PUBLIC (token) = 1;
+	  if (sym-attr.use_assoc)
+	DECL_EXTERNAL (token) = 1;
+	  else
+	TREE_STATIC (token) = 1;
+
+	  if (sym-attr.use_assoc || sym-attr.access != ACCESS_PRIVATE ||
+	  sym-attr.public_used)
+	TREE_PUBLIC (token) = 1;
 	}
   else
-	token = gfc_create_var_np (token_type, caf_token);
+	{
+	  token = gfc_create_var_np (token_type, caf_token);
+	  TREE_STATIC (token) = 1;
+	}
 
   GFC_TYPE_ARRAY_CAF_TOKEN (type) = token;
   DECL_ARTIFICIAL (token) = 1;
-  TREE_STATIC (token) = 1;
-  gfc_add_decl_to_function (token);
+  DECL_NONALIASED (token) = 1;
+
+  if (sym-module  !sym-attr.use_assoc)
+	{
+	  DECL_CONTEXT (token) = sym-ns-proc_name-backend_decl;
+	  gfc_module_add_decl (cur_module, token);
+	}
+  else
+	gfc_add_decl_to_function (token);
 }
 
   for (dim = 0; dim  GFC_TYPE_ARRAY_RANK (type); dim++)
@@ -1664,7 +1681,9 @@ get_proc_pointer_decl (gfc_symbol *sym)
   else if (sym-module  sym-ns-proc_name-attr.flavor == FL_MODULE)
 {
   /* This is the declaration of a module variable.  */
-  TREE_PUBLIC (decl) = 1;
+  if (sym-ns-proc_name-attr.flavor == FL_MODULE
+	   (sym-attr.access != ACCESS_PRIVATE || sym-attr.public_used))
+	TREE_PUBLIC (decl) = 1;
   TREE_STATIC (decl) = 1;
 }
 


Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules

2015-01-03 Thread Dominique d'Humières
Compilation with the new patch fails with

../../work/gcc/fortran/trans-decl.c: In function 'void 
gfc_build_qualified_array(tree, gfc_symbol*)':
../../work/gcc/fortran/trans-decl.c:855:25: error: 'cur_module' was not 
declared in this scope
gfc_module_add_decl (cur_module, token);

Dominique

 Le 3 janv. 2015 à 23:30, Tobias Burnus bur...@net-b.de a écrit :
 
 Dominique d'Humières wrote:
 From a quick test, with the patch I still see the error with -m32
 
 It helps if one actually adds the decl. The following (still untested) should 
 help. I also marked the token as nonaliasing (it really should!) and added 
 for proc pointers the tree-public optimization.
 
 Tobias
 foo.diff



Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules

2015-01-02 Thread FX
 As found by Alessandro: Statically allocated coarrays in declared in the 
 specification part of a module didn't work (link-time failure). The reason 
 was that the associated coarray token was wrongly mangled and not a public 
 tree.
 
 I additionally propagated the dg-compile-aux-modules support to caf.dg 
 (currently unused).

OK. It’s probably best to commit the two parts as separate commits, though.

FX

Re: [Patch, Fortran + Testsuite] Fix coarray handling in modules

2015-01-02 Thread Mike Stump
On Jan 2, 2015, at 3:28 AM, Tobias Burnus bur...@net-b.de wrote:
 As found by Alessandro: Statically allocated coarrays in declared in the 
 specification part of a module didn't work (link-time failure). The reason 
 was that the associated coarray token was wrongly mangled and not a public 
 tree.
 
 I additionally propagated the dg-compile-aux-modules support to caf.dg 
 (currently unused).

 OK for the trunk?

So, I usually let the fortran people review and comment on things like this.  
They do a great job and seems pretty straight forward.

I looked at it and didn’t see anything that was objectionable to me.  Seems 
usual and customary.