public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/66681] New: Wrong result in assigning this_image() to a complex coarray
@ 2015-06-26 14:14 damian at sourceryinstitute dot org
  2015-09-07  5:24 ` [Bug fortran/66681] " pault at gcc dot gnu.org
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: damian at sourceryinstitute dot org @ 2015-06-26 14:14 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 66681
           Summary: Wrong result in assigning this_image() to a complex
                    coarray
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: damian at sourceryinstitute dot org
  Target Milestone: ---

The following problem disappears if the variable declaration is for an integer
or real or if it contains the allocatable attribute and a subsequent allocation
happens:

localhost:gnu rouson$ cat assign_this_image_to_complex.f90 
complex a[*]
a = this_image()
print *,this_image(),a 
end
localhost:gnu rouson$ gfortran assign_this_image_to_complex.f90
-fcoarray=single
localhost:gnu rouson$ ./a.out
           1 (  0.00000000    ,  0.00000000    )
localhost:gnu rouson$ mpif90 assign_this_image_to_complex.f90 -fcoarray=lib -L
/opt/opencoarrays/gnu/6.0.0/lib -lcaf_mpi
localhost:gnu rouson$ mpirun -np 1 ./a.out
           1 (  0.00000000    , -4.65661287E-10)
localhost:gnu rouson$ gfortran --version
GNU Fortran (MacPorts gcc6 6-20150614_0) 6.0.0 20150614 (experimental)
Copyright (C) 2015 Free Software Foundation, Inc.

GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Fortran
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING

localhost:gnu rouson$ mpif90 --version
GNU Fortran (MacPorts gcc6 6-20150614_0) 6.0.0 20150614 (experimental)
Copyright (C) 2015 Free Software Foundation, Inc.

GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Fortran
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug fortran/66681] Wrong result in assigning this_image() to a complex coarray
  2015-06-26 14:14 [Bug fortran/66681] New: Wrong result in assigning this_image() to a complex coarray damian at sourceryinstitute dot org
@ 2015-09-07  5:24 ` pault at gcc dot gnu.org
  2015-09-07  9:31 ` dominiq at lps dot ens.fr
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pault at gcc dot gnu.org @ 2015-09-07  5:24 UTC (permalink / raw)
  To: gcc-bugs

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

Paul Thomas <pault at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pault at gcc dot gnu.org

--- Comment #1 from Paul Thomas <pault at gcc dot gnu.org> ---
(In reply to Damian Rouson from comment #0)
> The following problem disappears if the variable declaration is for an
> integer or real or if it contains the allocatable attribute and a subsequent
> allocation happens:
> 
> localhost:gnu rouson$ cat assign_this_image_to_complex.f90 
> complex a[*]
> a = this_image()
> print *,this_image(),a 
> end
> localhost:gnu rouson$ gfortran assign_this_image_to_complex.f90
> -fcoarray=single
> localhost:gnu rouson$ ./a.out
>            1 (  0.00000000    ,  0.00000000    )
> localhost:gnu rouson$ mpif90 assign_this_image_to_complex.f90 -fcoarray=lib
> -L /opt/opencoarrays/gnu/6.0.0/lib -lcaf_mpi
> localhost:gnu rouson$ mpirun -np 1 ./a.out
>            1 (  0.00000000    , -4.65661287E-10)
> localhost:gnu rouson$ gfortran --version
> GNU Fortran (MacPorts gcc6 6-20150614_0) 6.0.0 20150614 (experimental)
> Copyright (C) 2015 Free Software Foundation, Inc.
> 
> GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
> You may redistribute copies of GNU Fortran
> under the terms of the GNU General Public License.
> For more information about these matters, see the file named COPYING
> 
> localhost:gnu rouson$ mpif90 --version
> GNU Fortran (MacPorts gcc6 6-20150614_0) 6.0.0 20150614 (experimental)
> Copyright (C) 2015 Free Software Foundation, Inc.
> 
> GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
> You may redistribute copies of GNU Fortran
> under the terms of the GNU General Public License.
> For more information about these matters, see the file named COPYING

This also fails:
  complex a[*]
  integer i
  i = 1
  a = cmplx(real(i),0.0)
  print *,i,a
end

whereas making a an array works:
  complex a(1)[*]
  integer i
  i = 1
  a = cmplx(real(i),0.0)
  print *,i,a
end

The SAVE_EXPR pointed out by Steve is a sure symptom that the type conversion
is not working. I am blowed if I see why at the moment.

Cheers

Paul


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug fortran/66681] Wrong result in assigning this_image() to a complex coarray
  2015-06-26 14:14 [Bug fortran/66681] New: Wrong result in assigning this_image() to a complex coarray damian at sourceryinstitute dot org
  2015-09-07  5:24 ` [Bug fortran/66681] " pault at gcc dot gnu.org
@ 2015-09-07  9:31 ` dominiq at lps dot ens.fr
  2015-09-07  9:44 ` pault at gcc dot gnu.org
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: dominiq at lps dot ens.fr @ 2015-09-07  9:31 UTC (permalink / raw)
  To: gcc-bugs

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

Dominique d'Humieres <dominiq at lps dot ens.fr> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-09-07
     Ever confirmed|0                           |1

--- Comment #2 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
Confirmed for trunk (6.0). I get an ICE for the test in comment 0 and the first
one in comment 1 with 4.9:

pr66681_1.f90:4:0: internal compiler error: in gimplify_expr, at
gimplify.c:8538

Compiling these tests with 5.2 and -fcoarray=single I get

           1 (  0.00000000    ,  0.00000000    )

Could you confirm that it is a [6 Regression]?


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug fortran/66681] Wrong result in assigning this_image() to a complex coarray
  2015-06-26 14:14 [Bug fortran/66681] New: Wrong result in assigning this_image() to a complex coarray damian at sourceryinstitute dot org
  2015-09-07  5:24 ` [Bug fortran/66681] " pault at gcc dot gnu.org
  2015-09-07  9:31 ` dominiq at lps dot ens.fr
@ 2015-09-07  9:44 ` pault at gcc dot gnu.org
  2015-09-07  9:50 ` dominiq at lps dot ens.fr
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pault at gcc dot gnu.org @ 2015-09-07  9:44 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Paul Thomas <pault at gcc dot gnu.org> ---
(In reply to Dominique d'Humieres from comment #2)
> Confirmed for trunk (6.0). I get an ICE for the test in comment 0 and the
> first one in comment 1 with 4.9:
> 
> pr66681_1.f90:4:0: internal compiler error: in gimplify_expr, at
> gimplify.c:8538
> 
> Compiling these tests with 5.2 and -fcoarray=single I get
> 
>            1 (  0.00000000    ,  0.00000000    )
> 
> Could you confirm that it is a [6 Regression]?

Looks to me, from your result, that it is present in 5.2 :-)

Paul


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug fortran/66681] Wrong result in assigning this_image() to a complex coarray
  2015-06-26 14:14 [Bug fortran/66681] New: Wrong result in assigning this_image() to a complex coarray damian at sourceryinstitute dot org
                   ` (2 preceding siblings ...)
  2015-09-07  9:44 ` pault at gcc dot gnu.org
@ 2015-09-07  9:50 ` dominiq at lps dot ens.fr
  2015-09-07 12:58 ` pault at gcc dot gnu.org
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: dominiq at lps dot ens.fr @ 2015-09-07  9:50 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
> Looks to me, from your result, that it is present in 5.2 :-)

(  0.00000000    ,  0.00000000    ) instead of (  1.00000000    ,  0.00000000  
 )?-(


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug fortran/66681] Wrong result in assigning this_image() to a complex coarray
  2015-06-26 14:14 [Bug fortran/66681] New: Wrong result in assigning this_image() to a complex coarray damian at sourceryinstitute dot org
                   ` (3 preceding siblings ...)
  2015-09-07  9:50 ` dominiq at lps dot ens.fr
@ 2015-09-07 12:58 ` pault at gcc dot gnu.org
  2015-10-24  9:14 ` dominiq at lps dot ens.fr
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pault at gcc dot gnu.org @ 2015-09-07 12:58 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Paul Thomas <pault at gcc dot gnu.org> ---
This cures the problem in all its guises:

Index: /home/pault/svn/trunk/gcc/fortran/trans-expr.c
===================================================================
*** /home/pault/svn/trunk/gcc/fortran/trans-expr.c      (revision 227118)
--- /home/pault/svn/trunk/gcc/fortran/trans-expr.c      (working copy)
*************** gfc_trans_scalar_assign (gfc_se * lse, g
*** 8236,8241 ****
--- 8236,8244 ----
        gfc_add_block_to_block (&block, &lse->pre);
        gfc_add_block_to_block (&block, &rse->pre);

+       if (TREE_CODE (lse->expr) == SAVE_EXPR)
+       lse->expr = TREE_OPERAND (lse->expr, 0);
+ 
        gfc_add_modify (&block, lse->expr,
                      fold_convert (TREE_TYPE (lse->expr), rse->expr));
      }

(It is regtesting right now but looks OK)

I will do that business as long a somebody explains to me why one might ever
want to store the value returned by this_image() as a complex :-)

Paul


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug fortran/66681] Wrong result in assigning this_image() to a complex coarray
  2015-06-26 14:14 [Bug fortran/66681] New: Wrong result in assigning this_image() to a complex coarray damian at sourceryinstitute dot org
                   ` (4 preceding siblings ...)
  2015-09-07 12:58 ` pault at gcc dot gnu.org
@ 2015-10-24  9:14 ` dominiq at lps dot ens.fr
  2015-10-24 12:36 ` pault at gcc dot gnu.org
  2015-10-24 13:06 ` dominiq at lps dot ens.fr
  7 siblings, 0 replies; 9+ messages in thread
From: dominiq at lps dot ens.fr @ 2015-10-24  9:14 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
A patch has been submitted at
https://gcc.gnu.org/ml/fortran/2015-09/msg00024.html.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug fortran/66681] Wrong result in assigning this_image() to a complex coarray
  2015-06-26 14:14 [Bug fortran/66681] New: Wrong result in assigning this_image() to a complex coarray damian at sourceryinstitute dot org
                   ` (5 preceding siblings ...)
  2015-10-24  9:14 ` dominiq at lps dot ens.fr
@ 2015-10-24 12:36 ` pault at gcc dot gnu.org
  2015-10-24 13:06 ` dominiq at lps dot ens.fr
  7 siblings, 0 replies; 9+ messages in thread
From: pault at gcc dot gnu.org @ 2015-10-24 12:36 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Paul Thomas <pault at gcc dot gnu.org> ---
(In reply to Dominique d'Humieres from comment #6)
> A patch has been submitted at
> https://gcc.gnu.org/ml/fortran/2015-09/msg00024.html.

Hi Dominique,

If you follow the correspondence, it ended with questions from me that were
never answered.

Paul


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug fortran/66681] Wrong result in assigning this_image() to a complex coarray
  2015-06-26 14:14 [Bug fortran/66681] New: Wrong result in assigning this_image() to a complex coarray damian at sourceryinstitute dot org
                   ` (6 preceding siblings ...)
  2015-10-24 12:36 ` pault at gcc dot gnu.org
@ 2015-10-24 13:06 ` dominiq at lps dot ens.fr
  7 siblings, 0 replies; 9+ messages in thread
From: dominiq at lps dot ens.fr @ 2015-10-24 13:06 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #8 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
> Hi Dominique,
>
> If you follow the correspondence, it ended with questions from me that
> were never answered.
>
> Paul

Indeed I have read https://gcc.gnu.org/ml/fortran/2015-09/msg00071.html! I have
the patch in my tree since some time and I prefer to have a pointer to it in
bugzilla rather than digging the fortran archives.

The problem is that Tobias reacts only if you close the PR as fixed.


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-10-24 13:06 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-26 14:14 [Bug fortran/66681] New: Wrong result in assigning this_image() to a complex coarray damian at sourceryinstitute dot org
2015-09-07  5:24 ` [Bug fortran/66681] " pault at gcc dot gnu.org
2015-09-07  9:31 ` dominiq at lps dot ens.fr
2015-09-07  9:44 ` pault at gcc dot gnu.org
2015-09-07  9:50 ` dominiq at lps dot ens.fr
2015-09-07 12:58 ` pault at gcc dot gnu.org
2015-10-24  9:14 ` dominiq at lps dot ens.fr
2015-10-24 12:36 ` pault at gcc dot gnu.org
2015-10-24 13:06 ` dominiq at lps dot ens.fr

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).