public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/24545] New: gfortran bug regarding interface block with named END INTERFACE statements
@ 2005-10-26 16:54 paul dot vandelst at ssec dot wisc dot edu
2005-10-26 17:05 ` [Bug fortran/24545] " kargl at gcc dot gnu dot org
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: paul dot vandelst at ssec dot wisc dot edu @ 2005-10-26 16:54 UTC (permalink / raw)
To: gcc-bugs
Hello,
The code example listed at the end of this email fails to compile with gfortran
4.1.0 20051025 (experimental). Compiling like so:
gfortran -c gfortran_test.f90
produces the error message:
In file gfortran_test.f90:16
END INTERFACE OPERATOR (.EqualTo.)
1
Error: Expecting 'END INTERFACE OPERATOR (.compare_float.)' at (1)
This problem with recognizing the end interface statement flows on and produces
a whole slew of (spurious) error messages on valid code.
If I change the source code line
END INTERFACE OPERATOR (.EqualTo.)
to simply
END INTERFACE
the code compiles just fine. However, I believe that using the syntax of
END INTERFACE OPERATOR (.EqualTo.)
is standard Fortran95.
Thanks,
paulv
------<<cut here for gfortran_test.f90>>------
MODULE Compare_Float_Numbers
IMPLICIT NONE
PRIVATE
PUBLIC :: Compare_Float
PUBLIC :: OPERATOR (.EqualTo.)
INTERFACE Compare_Float
MODULE PROCEDURE Compare_Float_Single
MODULE PROCEDURE Compare_Float_Double
END INTERFACE Compare_Float
INTERFACE OPERATOR (.EqualTo.)
MODULE PROCEDURE Is_Equal_To_Single
MODULE PROCEDURE Is_Equal_To_Double
END INTERFACE OPERATOR (.EqualTo.)
INTEGER, PARAMETER :: Single = SELECTED_REAL_KIND(6) ! Single precision
INTEGER, PARAMETER :: Double = SELECTED_REAL_KIND(15) ! Double precision
CONTAINS
! -- Is Equal To
ELEMENTAL FUNCTION Is_Equal_To_Single( x, y ) RESULT( Equal_To )
REAL( Single ), INTENT( IN ) :: x, y
LOGICAL :: Equal_To
Equal_To = ABS( x - y ) < SPACING( MAX(ABS(x),ABS(y)) )
END FUNCTION Is_Equal_To_Single
ELEMENTAL FUNCTION Is_Equal_To_Double( x, y ) RESULT( Equal_To )
REAL( Double ), INTENT( IN ) :: x, y
LOGICAL :: Equal_To
Equal_To = ABS( x - y ) < SPACING( MAX(ABS(x),ABS(y)) )
END FUNCTION Is_Equal_To_Double
! -- General floating point comparison
ELEMENTAL FUNCTION Compare_Float_Single( x, y, ulp ) RESULT( Compare )
REAL( Single ), INTENT( IN ) :: x
REAL( Single ), INTENT( IN ) :: y
INTEGER, OPTIONAL, INTENT( IN ) :: ulp
LOGICAL :: Compare
REAL( Single ) :: Rel
Rel = 1.0_Single
IF ( PRESENT( ulp ) ) THEN
Rel = REAL( ABS(ulp), Single )
END IF
Compare = ABS( x - y ) < ( Rel * SPACING( MAX(ABS(x),ABS(y)) ) )
END FUNCTION Compare_Float_Single
ELEMENTAL FUNCTION Compare_Float_Double( x, y, ulp ) RESULT( Compare )
REAL( Double ), INTENT( IN ) :: x
REAL( Double ), INTENT( IN ) :: y
INTEGER, OPTIONAL, INTENT( IN ) :: ulp
LOGICAL :: Compare
REAL( Double ) :: Rel
Rel = 1.0_Double
IF ( PRESENT( ulp ) ) THEN
Rel = REAL( ABS(ulp), Double )
END IF
Compare = ABS( x - y ) < ( Rel * SPACING( MAX(ABS(x),ABS(y)) ) )
END FUNCTION Compare_Float_Double
END MODULE Compare_Float_Numbers
------<<cut here for gfortran_test.f90>>------
--
Summary: gfortran bug regarding interface block with named END
INTERFACE statements
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: paul dot vandelst at ssec dot wisc dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24545
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/24545] gfortran bug regarding interface block with named END INTERFACE statements
2005-10-26 16:54 [Bug fortran/24545] New: gfortran bug regarding interface block with named END INTERFACE statements paul dot vandelst at ssec dot wisc dot edu
@ 2005-10-26 17:05 ` kargl at gcc dot gnu dot org
2005-10-26 18:54 ` steven at gcc dot gnu dot org
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: kargl at gcc dot gnu dot org @ 2005-10-26 17:05 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from kargl at gcc dot gnu dot org 2005-10-26 17:05 -------
Here's a reduced code that shows the problem. Gfortran is
not handling the END INTERFACE OPERATOR (.EqualTo.) correctly.
This confuses the heck out of the error recovery code.
MODULE Compare_Float_Numbers
IMPLICIT NONE
INTERFACE Compare_Float
MODULE PROCEDURE Compare_Float_Single
END INTERFACE Compare_Float
INTERFACE OPERATOR (.EqualTo.)
MODULE PROCEDURE Is_Equal_To_Single
END INTERFACE OPERATOR (.EqualTo.)
CONTAINS
FUNCTION Is_Equal_To_Single(x, y) RESULT(Equal_To)
REAL(4), INTENT(IN) :: x, y
LOGICAL :: Equal_To
Equal_To = .true.
END FUNCTION Is_Equal_To_Single
FUNCTION Compare_Float_Single(x, y) RESULT(Compare)
REAL(4), INTENT(IN) :: x, y
LOGICAL :: Compare
Compare = .true.
END FUNCTION Compare_Float_Single
END MODULE Compare_Float_Numbers
--
kargl at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kargl at gcc dot gnu dot org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2005-10-26 17:05:50
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24545
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/24545] gfortran bug regarding interface block with named END INTERFACE statements
2005-10-26 16:54 [Bug fortran/24545] New: gfortran bug regarding interface block with named END INTERFACE statements paul dot vandelst at ssec dot wisc dot edu
2005-10-26 17:05 ` [Bug fortran/24545] " kargl at gcc dot gnu dot org
@ 2005-10-26 18:54 ` steven at gcc dot gnu dot org
2005-10-28 20:06 ` kargl at gcc dot gnu dot org
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-10-26 18:54 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from steven at gcc dot gnu dot org 2005-10-26 18:54 -------
Perhaps this cures it.
Index: interface.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/fortran/interface.c,v
retrieving revision 1.21
diff -u -3 -p -r1.21 interface.c
--- interface.c 21 Oct 2005 18:50:52 -0000 1.21
+++ interface.c 26 Oct 2005 18:53:39 -0000
@@ -295,7 +295,7 @@ gfc_match_end_interface (void)
/* Comparing the symbol node names is OK because only use-associated
symbols can be renamed. */
if (type != current_interface.type
- || strcmp (current_interface.sym->name, name) != 0)
+ || strcmp (current_interface.uop->name, name) != 0)
{
gfc_error ("Expecting 'END INTERFACE OPERATOR (.%s.)' at %C",
current_interface.sym->name);
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24545
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/24545] gfortran bug regarding interface block with named END INTERFACE statements
2005-10-26 16:54 [Bug fortran/24545] New: gfortran bug regarding interface block with named END INTERFACE statements paul dot vandelst at ssec dot wisc dot edu
2005-10-26 17:05 ` [Bug fortran/24545] " kargl at gcc dot gnu dot org
2005-10-26 18:54 ` steven at gcc dot gnu dot org
@ 2005-10-28 20:06 ` kargl at gcc dot gnu dot org
2005-10-28 20:07 ` sgk at troutmask dot apl dot washington dot edu
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: kargl at gcc dot gnu dot org @ 2005-10-28 20:06 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from kargl at gcc dot gnu dot org 2005-10-28 20:06 -------
Subject: Bug 24545
Author: kargl
Date: Fri Oct 28 20:05:56 2005
New Revision: 105953
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=105953
Log:
PR fortran/24545
* interface.c (gfc_match_end_interface): Fix typo in INTERFACE_USER_OP case.
Added:
trunk/gcc/testsuite/gfortran.dg/interface_2.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/interface.c
trunk/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24545
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/24545] gfortran bug regarding interface block with named END INTERFACE statements
2005-10-26 16:54 [Bug fortran/24545] New: gfortran bug regarding interface block with named END INTERFACE statements paul dot vandelst at ssec dot wisc dot edu
` (2 preceding siblings ...)
2005-10-28 20:06 ` kargl at gcc dot gnu dot org
@ 2005-10-28 20:07 ` sgk at troutmask dot apl dot washington dot edu
2005-10-28 20:57 ` kargl at gcc dot gnu dot org
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: sgk at troutmask dot apl dot washington dot edu @ 2005-10-28 20:07 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from sgk at troutmask dot apl dot washington dot edu 2005-10-28 20:07 -------
Subject: Re: gfortran bug regarding interface block with named END INTERFACE
statements
On Wed, Oct 26, 2005 at 06:54:10PM -0000, steven at gcc dot gnu dot org wrote:
>
> Index: interface.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/fortran/interface.c,v
> retrieving revision 1.21
> diff -u -3 -p -r1.21 interface.c
> --- interface.c 21 Oct 2005 18:50:52 -0000 1.21
> +++ interface.c 26 Oct 2005 18:53:39 -0000
> @@ -295,7 +295,7 @@ gfc_match_end_interface (void)
> /* Comparing the symbol node names is OK because only use-associated
> symbols can be renamed. */
> if (type != current_interface.type
> - || strcmp (current_interface.sym->name, name) != 0)
> + || strcmp (current_interface.uop->name, name) != 0)
> {
> gfc_error ("Expecting 'END INTERFACE OPERATOR (.%s.)' at %C",
> current_interface.sym->name);
>
Bootstrapped and regression tested on amd64-*-freebsd.
I've committed the patch.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24545
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/24545] gfortran bug regarding interface block with named END INTERFACE statements
2005-10-26 16:54 [Bug fortran/24545] New: gfortran bug regarding interface block with named END INTERFACE statements paul dot vandelst at ssec dot wisc dot edu
` (3 preceding siblings ...)
2005-10-28 20:07 ` sgk at troutmask dot apl dot washington dot edu
@ 2005-10-28 20:57 ` kargl at gcc dot gnu dot org
2005-10-28 20:58 ` kargl at gcc dot gnu dot org
2005-10-28 21:02 ` pinskia at gcc dot gnu dot org
6 siblings, 0 replies; 8+ messages in thread
From: kargl at gcc dot gnu dot org @ 2005-10-28 20:57 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from kargl at gcc dot gnu dot org 2005-10-28 20:57 -------
Subject: Bug 24545
Author: kargl
Date: Fri Oct 28 20:57:17 2005
New Revision: 105962
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=105962
Log:
PR fortran/24545
* interface.c (gfc_match_end_interface): Fix typo in INTERFACE_USER_OP case.
Added:
branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/interface_2.f90
Modified:
branches/gcc-4_0-branch/gcc/fortran/ChangeLog
branches/gcc-4_0-branch/gcc/fortran/interface.c
branches/gcc-4_0-branch/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24545
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/24545] gfortran bug regarding interface block with named END INTERFACE statements
2005-10-26 16:54 [Bug fortran/24545] New: gfortran bug regarding interface block with named END INTERFACE statements paul dot vandelst at ssec dot wisc dot edu
` (4 preceding siblings ...)
2005-10-28 20:57 ` kargl at gcc dot gnu dot org
@ 2005-10-28 20:58 ` kargl at gcc dot gnu dot org
2005-10-28 21:02 ` pinskia at gcc dot gnu dot org
6 siblings, 0 replies; 8+ messages in thread
From: kargl at gcc dot gnu dot org @ 2005-10-28 20:58 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from kargl at gcc dot gnu dot org 2005-10-28 20:58 -------
Fixed.
--
kargl at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
Target Milestone|--- |4.1.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24545
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/24545] gfortran bug regarding interface block with named END INTERFACE statements
2005-10-26 16:54 [Bug fortran/24545] New: gfortran bug regarding interface block with named END INTERFACE statements paul dot vandelst at ssec dot wisc dot edu
` (5 preceding siblings ...)
2005-10-28 20:58 ` kargl at gcc dot gnu dot org
@ 2005-10-28 21:02 ` pinskia at gcc dot gnu dot org
6 siblings, 0 replies; 8+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-10-28 21:02 UTC (permalink / raw)
To: gcc-bugs
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.1.0 |4.0.3
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24545
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2005-10-28 21:02 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-10-26 16:54 [Bug fortran/24545] New: gfortran bug regarding interface block with named END INTERFACE statements paul dot vandelst at ssec dot wisc dot edu
2005-10-26 17:05 ` [Bug fortran/24545] " kargl at gcc dot gnu dot org
2005-10-26 18:54 ` steven at gcc dot gnu dot org
2005-10-28 20:06 ` kargl at gcc dot gnu dot org
2005-10-28 20:07 ` sgk at troutmask dot apl dot washington dot edu
2005-10-28 20:57 ` kargl at gcc dot gnu dot org
2005-10-28 20:58 ` kargl at gcc dot gnu dot org
2005-10-28 21:02 ` pinskia 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).