public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function
@ 2007-04-11 18:38 burnus at gcc dot gnu dot org
2007-04-11 18:57 ` [Bug fortran/31540] " burnus at gcc dot gnu dot org
` (8 more replies)
0 siblings, 9 replies; 10+ messages in thread
From: burnus at gcc dot gnu dot org @ 2007-04-11 18:38 UTC (permalink / raw)
To: gcc-bugs
As reported by Mike Kumbera in
http://gcc.gnu.org/ml/fortran/2007-04/msg00116.html
gfortran 4.2 and 4.3 chokes on:
external pfname
character ((136)) pfname
with the the error message:
Automatic character length function 'pfname' at (1) must have an explicit
interface
Using "character(136) pfname" works.
This works with gfortran 4.1.2 and g77 and with all other compilers tested.
Example by Mike Kumbera:
----------------------------
subroutine pfb()
implicit none
external pfname
! Fails on gfortran 4.3 & 4.2 with
! Error: Automatic character length function 'pfname' at (1) must have an
explicit interface
character ((136)) pfname
! character ((129+7)) pfname
! Works for both 4.2 and 4.3
! character (136) pfname
return
end
--
Summary: [Regression 4.2, 4.3] character((constant expression))
for external function
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: burnus at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31540
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/31540] [Regression 4.2, 4.3] character((constant expression)) for external function
2007-04-11 18:38 [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function burnus at gcc dot gnu dot org
@ 2007-04-11 18:57 ` burnus at gcc dot gnu dot org
2007-04-11 19:33 ` pault at gcc dot gnu dot org
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: burnus at gcc dot gnu dot org @ 2007-04-11 18:57 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from burnus at gcc dot gnu dot org 2007-04-11 19:56 -------
In resolve.c's resolve_fl_procedure there is:
if( ... && cl->length->expr_type != EXPR_CONSTANT)
thus the question is:
Why is "(137)" not an EXPR_CONSTANT
--
burnus at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Known to fail| |4.2.0 4.3.0
Known to work| |4.1.2
Last reconfirmed|0000-00-00 00:00:00 |2007-04-11 19:56:48
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31540
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/31540] [Regression 4.2, 4.3] character((constant expression)) for external function
2007-04-11 18:38 [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function burnus at gcc dot gnu dot org
2007-04-11 18:57 ` [Bug fortran/31540] " burnus at gcc dot gnu dot org
@ 2007-04-11 19:33 ` pault at gcc dot gnu dot org
2007-05-06 8:34 ` pault at gcc dot gnu dot org
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2007-04-11 19:33 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from pault at gcc dot gnu dot org 2007-04-11 20:33 -------
(In reply to comment #1)
> Why is "(137)" not an EXPR_CONSTANT
>
Because it is an EXPR_OP. The operator in question is OP_PARENTHESES. This
fixes the problem:
Index: gcc/fortran/resolve.c
===================================================================
*** gcc/fortran/resolve.c (revision 123398)
--- gcc/fortran/resolve.c (working copy)
*************** resolve_fl_procedure (gfc_symbol *sym, i
*** 5756,5761 ****
--- 5756,5765 ----
if (sym->ts.type == BT_CHARACTER)
{
gfc_charlen *cl = sym->ts.cl;
+
+ if (resolve_charlen (cl) == FAILURE)
+ return FAILURE;
+
if (!cl || !cl->length || cl->length->expr_type != EXPR_CONSTANT)
{
if (sym->attr.proc == PROC_ST_FUNCTION)
I have not regtested nor developed a testcase and cannot do so until the
weekend.
Paul
--
pault at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |pault at gcc dot gnu dot org
|dot org |
Status|NEW |ASSIGNED
Last reconfirmed|2007-04-11 19:56:48 |2007-04-11 20:33:46
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31540
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/31540] [Regression 4.2, 4.3] character((constant expression)) for external function
2007-04-11 18:38 [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function burnus at gcc dot gnu dot org
2007-04-11 18:57 ` [Bug fortran/31540] " burnus at gcc dot gnu dot org
2007-04-11 19:33 ` pault at gcc dot gnu dot org
@ 2007-05-06 8:34 ` pault at gcc dot gnu dot org
2007-05-06 11:35 ` patchapp at dberlin dot org
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2007-05-06 8:34 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from pault at gcc dot gnu dot org 2007-05-06 09:34 -------
(In reply to comment #2)
> I have not regtested nor developed a testcase and cannot do so until the
> weekend.
Sorry about the delay to the "weekend". It did not regtest - I have just
popped a new version in to cook.
Paul
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31540
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/31540] [Regression 4.2, 4.3] character((constant expression)) for external function
2007-04-11 18:38 [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function burnus at gcc dot gnu dot org
` (2 preceding siblings ...)
2007-05-06 8:34 ` pault at gcc dot gnu dot org
@ 2007-05-06 11:35 ` patchapp at dberlin dot org
2007-05-06 15:12 ` pault at gcc dot gnu dot org
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: patchapp at dberlin dot org @ 2007-05-06 11:35 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from patchapp at dberlin dot org 2007-05-06 12:35 -------
Subject: Bug number PR31540
A patch for this bug has been added to the patch tracker.
The mailing list url for the patch is
http://gcc.gnu.org/ml/gcc-patches/2007-05/msg00328.html
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31540
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/31540] [Regression 4.2, 4.3] character((constant expression)) for external function
2007-04-11 18:38 [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function burnus at gcc dot gnu dot org
` (3 preceding siblings ...)
2007-05-06 11:35 ` patchapp at dberlin dot org
@ 2007-05-06 15:12 ` pault at gcc dot gnu dot org
2007-05-06 15:13 ` pault at gcc dot gnu dot org
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2007-05-06 15:12 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from pault at gcc dot gnu dot org 2007-05-06 16:12 -------
Subject: Bug 31540
Author: pault
Date: Sun May 6 15:12:01 2007
New Revision: 124475
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=124475
Log:
2007-05-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31540
* resolve.c (resolve_fl_procedure): Resolve constant character
lengths.
2007-05-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31540
* gfortran.dg/char_result_4.f90: New test.
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/resolve.c
trunk/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31540
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/31540] [Regression 4.2, 4.3] character((constant expression)) for external function
2007-04-11 18:38 [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function burnus at gcc dot gnu dot org
` (4 preceding siblings ...)
2007-05-06 15:12 ` pault at gcc dot gnu dot org
@ 2007-05-06 15:13 ` pault at gcc dot gnu dot org
2007-05-22 14:16 ` [Bug fortran/31540] [Regression 4.2 only] " burnus at gcc dot gnu dot org
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2007-05-06 15:13 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from pault at gcc dot gnu dot org 2007-05-06 16:13 -------
Subject: Bug 31540
Author: pault
Date: Sun May 6 15:13:11 2007
New Revision: 124476
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=124476
Log:
2007-05-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31540
* resolve.c (resolve_fl_procedure): Resolve constant character
lengths.
2007-05-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31540
* gfortran.dg/char_result_4.f90: New test.
Added:
trunk/gcc/testsuite/gfortran.dg/char_length_4.f90
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31540
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/31540] [Regression 4.2 only] character((constant expression)) for external function
2007-04-11 18:38 [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function burnus at gcc dot gnu dot org
` (5 preceding siblings ...)
2007-05-06 15:13 ` pault at gcc dot gnu dot org
@ 2007-05-22 14:16 ` burnus at gcc dot gnu dot org
2007-05-31 18:51 ` pault at gcc dot gnu dot org
2007-05-31 18:52 ` pault at gcc dot gnu dot org
8 siblings, 0 replies; 10+ messages in thread
From: burnus at gcc dot gnu dot org @ 2007-05-22 14:16 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from burnus at gcc dot gnu dot org 2007-05-22 15:16 -------
If you think it should be backported to 4.2 (regression, serious bug), you now
may backport it. Otherwise, you can close this PR.
Mark Mitchell: "GCC 4.2 branch open for regression fixes"
http://gcc.gnu.org/ml/gcc-patches/2007-05/msg01018.html
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31540
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/31540] [Regression 4.2 only] character((constant expression)) for external function
2007-04-11 18:38 [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function burnus at gcc dot gnu dot org
` (6 preceding siblings ...)
2007-05-22 14:16 ` [Bug fortran/31540] [Regression 4.2 only] " burnus at gcc dot gnu dot org
@ 2007-05-31 18:51 ` pault at gcc dot gnu dot org
2007-05-31 18:52 ` pault at gcc dot gnu dot org
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2007-05-31 18:51 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from pault at gcc dot gnu dot org 2007-05-31 18:51 -------
Subject: Bug 31540
Author: pault
Date: Thu May 31 18:50:56 2007
New Revision: 125235
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=125235
Log:
2007-05-31 Paul Thomas <pault@gcc.gnu.org>
backport from trunk
PR fortran/31483
* trans-expr.c (gfc_conv_function_call): Give a dummy
procedure the correct type if it has alternate returns.
PR fortran/31540
* resolve.c (resolve_fl_procedure): Resolve constant character
lengths.
PR fortran/31867
PR fortran/31994
* trans-array.c (gfc_conv_expr_descriptor): Obtain the stored
offset for non-descriptor, source arrays and correct for stride
not equal to one before writing to field of output descriptor.
2007-05-31 Paul Thomas <pault@gcc.gnu.org>
backport from trunk
PR fortran/31483
* gfortran.dg/altreturn_5.f90: New test.
PR fortran/31540
* gfortran.dg/char_result_5.f90: New test.
PR fortran/31867
* gfortran.dg/char_length_5.f90: New test.
PR fortran/31994
* gfortran.dg/array_reference_1.f90: New test.
Added:
branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/altreturn_5.f90
branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/array_reference_1.f90
branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/char_length_5.f90
branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/char_result_13.f90
Modified:
branches/gcc-4_2-branch/gcc/fortran/ChangeLog
branches/gcc-4_2-branch/gcc/fortran/resolve.c
branches/gcc-4_2-branch/gcc/fortran/trans-array.c
branches/gcc-4_2-branch/gcc/fortran/trans-expr.c
branches/gcc-4_2-branch/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31540
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/31540] [Regression 4.2 only] character((constant expression)) for external function
2007-04-11 18:38 [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function burnus at gcc dot gnu dot org
` (7 preceding siblings ...)
2007-05-31 18:51 ` pault at gcc dot gnu dot org
@ 2007-05-31 18:52 ` pault at gcc dot gnu dot org
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2007-05-31 18:52 UTC (permalink / raw)
To: gcc-bugs
------- Comment #9 from pault at gcc dot gnu dot org 2007-05-31 18:52 -------
Fixed
Paul
--
pault at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31540
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2007-05-31 18:52 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-04-11 18:38 [Bug fortran/31540] New: [Regression 4.2, 4.3] character((constant expression)) for external function burnus at gcc dot gnu dot org
2007-04-11 18:57 ` [Bug fortran/31540] " burnus at gcc dot gnu dot org
2007-04-11 19:33 ` pault at gcc dot gnu dot org
2007-05-06 8:34 ` pault at gcc dot gnu dot org
2007-05-06 11:35 ` patchapp at dberlin dot org
2007-05-06 15:12 ` pault at gcc dot gnu dot org
2007-05-06 15:13 ` pault at gcc dot gnu dot org
2007-05-22 14:16 ` [Bug fortran/31540] [Regression 4.2 only] " burnus at gcc dot gnu dot org
2007-05-31 18:51 ` pault at gcc dot gnu dot org
2007-05-31 18:52 ` pault at gcc dot gnu dot 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).