public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/52022] New: [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument
@ 2012-01-27 17:54 burnus at gcc dot gnu.org
2012-01-27 18:05 ` [Bug fortran/52022] " burnus at gcc dot gnu.org
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-01-27 17:54 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52022
Bug #: 52022
Summary: [4.5/4.6/4.7 Regression] Wrong-code with procedures
passed as actual argument
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: burnus@gcc.gnu.org
Reported by patnel97269 at http://gcc.gnu.org/ml/fortran/2012-01/msg00232.html
The following program - a stripped-down version of the original version -
compiles and successfully runs with GCC 4.3 and 4.4. It prints:
2.0000000000000000 4.0000000000000000
Using GCC 4.5, 4.6 and 4.7, one gets instead a SEGFAULT.
In 4.4, the passed argument is:
sol (cost1);
while 4.5/4.6/4.7 pass the argument:
sol (&cost1);
which does not make much sense.
There might be internally some confusion between procedures dummies (pass
address of procedure to be called) and procedures pointers (pass address of the
callee such that it can be assigned to).
module m
contains
function cost1(x) result(y)
double precision,dimension(:) :: x
double precision,dimension(:),allocatable :: y
allocate(y(2))
y=2d0*x
end function cost1
end module m
program test
use m
implicit none
call sol(cost1)
contains
subroutine sol(cost3)
interface
function cost3(p) result(y)
double precision,dimension(:) :: p
double precision,dimension(:),allocatable :: y
end function cost3
end interface
print *,cost3([1d0,2d0])
end subroutine
end program test
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/52022] [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument
2012-01-27 17:54 [Bug fortran/52022] New: [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument burnus at gcc dot gnu.org
@ 2012-01-27 18:05 ` burnus at gcc dot gnu.org
2012-01-27 20:43 ` burnus at gcc dot gnu.org
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-01-27 18:05 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52022
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |burnus at gcc dot gnu.org
Target Milestone|--- |4.5.4
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-01-27 17:24:42 UTC ---
The issue is seemingly a side effect of supporting proc-pointer returning
functions (a GCC 4.5 features).
This does not interact well with passing nonprocedure-pointer functions, that
return allocatables, as can be seen from the following chunk in trans-expr.c's
gfc_conv_procedure_call:
if (fsym && e->expr_type != EXPR_NULL
&& ((fsym->attr.pointer
&& fsym->attr.flavor != FL_PROCEDURE)
|| (fsym->attr.proc_pointer
&& !(e->expr_type == EXPR_VARIABLE
&& e->symtree->n.sym->attr.dummy))
|| (fsym->attr.proc_pointer
&& e->expr_type == EXPR_VARIABLE
&& gfc_is_proc_ptr_comp (e, NULL))
|| fsym->attr.allocatable))
Untested patch: Do the same as we already do for pointers.
--- trans-expr.c (revision 183625)
+++ trans-expr.c (working copy)
@@ -3664,3 +3664,4 @@ gfc_conv_procedure_call (gfc_se * se, gf
&& gfc_is_proc_ptr_comp (e, NULL))
- || fsym->attr.allocatable))
+ || (fsym->attr.allocatable
+ && fsym->attr.flavor != FL_PROCEDURE)))
{
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/52022] [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument
2012-01-27 17:54 [Bug fortran/52022] New: [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument burnus at gcc dot gnu.org
2012-01-27 18:05 ` [Bug fortran/52022] " burnus at gcc dot gnu.org
@ 2012-01-27 20:43 ` burnus at gcc dot gnu.org
2012-01-27 21:07 ` jakub at gcc dot gnu.org
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-01-27 20:43 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52022
--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-01-27 20:12:00 UTC ---
Author: burnus
Date: Fri Jan 27 20:11:51 2012
New Revision: 183643
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183643
Log:
2012-01-27 Tobias Burnus <burnus@net-b.de>
PR fortran/52022
* trans-expr.c (gfc_conv_procedure_call): Fix passing
of functions, which return allocatables.
2012-01-27 Tobias Burnus <burnus@net-b.de>
PR fortran/52022
* gfortran.dg/dummy_procedure_7.f90: New.
Added:
trunk/gcc/testsuite/gfortran.dg/dummy_procedure_7.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-expr.c
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/52022] [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument
2012-01-27 17:54 [Bug fortran/52022] New: [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument burnus at gcc dot gnu.org
2012-01-27 18:05 ` [Bug fortran/52022] " burnus at gcc dot gnu.org
2012-01-27 20:43 ` burnus at gcc dot gnu.org
@ 2012-01-27 21:07 ` jakub at gcc dot gnu.org
2012-01-28 11:00 ` burnus at gcc dot gnu.org
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2012-01-27 21:07 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52022
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P4
CC| |jakub at gcc dot gnu.org
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/52022] [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument
2012-01-27 17:54 [Bug fortran/52022] New: [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument burnus at gcc dot gnu.org
` (2 preceding siblings ...)
2012-01-27 21:07 ` jakub at gcc dot gnu.org
@ 2012-01-28 11:00 ` burnus at gcc dot gnu.org
2012-01-28 11:41 ` burnus at gcc dot gnu.org
2012-01-28 11:55 ` burnus at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-01-28 11:00 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52022
--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-01-28 10:00:20 UTC ---
Author: burnus
Date: Sat Jan 28 10:00:13 2012
New Revision: 183665
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183665
Log:
2012-01-28 Tobias Burnus <burnus@net-b.de>
PR fortran/52022
* trans-expr.c (gfc_conv_procedure_call): Fix passing
of functions, which return allocatables.
2012-01-28 Tobias Burnus <burnus@net-b.de>
PR fortran/52022
* gfortran.dg/dummy_procedure_7.f90: New.
Added:
branches/gcc-4_6-branch/gcc/testsuite/gfortran.dg/dummy_procedure_7.f90
Modified:
branches/gcc-4_6-branch/gcc/fortran/ChangeLog
branches/gcc-4_6-branch/gcc/fortran/trans-expr.c
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/52022] [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument
2012-01-27 17:54 [Bug fortran/52022] New: [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument burnus at gcc dot gnu.org
` (3 preceding siblings ...)
2012-01-28 11:00 ` burnus at gcc dot gnu.org
@ 2012-01-28 11:41 ` burnus at gcc dot gnu.org
2012-01-28 11:55 ` burnus at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-01-28 11:41 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52022
--- Comment #4 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-01-28 10:59:22 UTC ---
Author: burnus
Date: Sat Jan 28 10:59:18 2012
New Revision: 183666
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183666
Log:
2012-01-28 Tobias Burnus <burnus@net-b.de>
PR fortran/52022
* trans-expr.c (gfc_conv_procedure_call): Fix passing
of functions, which return allocatables.
2012-01-28 Tobias Burnus <burnus@net-b.de>
PR fortran/52022
* gfortran.dg/dummy_procedure_7.f90: New.
Added:
branches/gcc-4_5-branch/gcc/testsuite/gfortran.dg/dummy_procedure_7.f90
Modified:
branches/gcc-4_5-branch/gcc/fortran/ChangeLog
branches/gcc-4_5-branch/gcc/fortran/trans-expr.c
branches/gcc-4_5-branch/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/52022] [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument
2012-01-27 17:54 [Bug fortran/52022] New: [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument burnus at gcc dot gnu.org
` (4 preceding siblings ...)
2012-01-28 11:41 ` burnus at gcc dot gnu.org
@ 2012-01-28 11:55 ` burnus at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-01-28 11:55 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52022
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |FIXED
--- Comment #5 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-01-28 11:27:46 UTC ---
FIXED on the trunk (4.7) and the 4.5 and 4.6 branches.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-01-28 11:28 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-27 17:54 [Bug fortran/52022] New: [4.5/4.6/4.7 Regression] Wrong-code with procedures passed as actual argument burnus at gcc dot gnu.org
2012-01-27 18:05 ` [Bug fortran/52022] " burnus at gcc dot gnu.org
2012-01-27 20:43 ` burnus at gcc dot gnu.org
2012-01-27 21:07 ` jakub at gcc dot gnu.org
2012-01-28 11:00 ` burnus at gcc dot gnu.org
2012-01-28 11:41 ` burnus at gcc dot gnu.org
2012-01-28 11:55 ` burnus at gcc dot gnu.org
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).