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).