Bug 16404 - should reject invalid code with -pedantic -std=f95 ? (x8)
Summary: should reject invalid code with -pedantic -std=f95 ? (x8)
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.0.0
: P2 normal
Target Milestone: 4.1.0
Assignee: Not yet assigned to anyone
URL:
Keywords: accepts-invalid, diagnostic
Depends on: 18870
Blocks:
  Show dependency treegraph
 
Reported: 2004-07-07 09:33 UTC by Joost VandeVondele
Modified: 2005-10-01 15:58 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2005-06-18 21:52:18


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Joost VandeVondele 2004-07-07 09:33:03 UTC
following programs should be rejected as invalid, either as a default, or
certainly with the above options

gcc version 3.5.0 20040628 (experimental)

! test 1
 DO I=1,5
    I=1
 ENDDO
 DO I=1,5
    READ(5,*) I
 ENDDO
 END

! test 2
 COMMON /BLOCKA/ A,B,C
 COMMON /BLOCKB/ D,E,F
 EQUIVALENCE(B,E)
END

! test 3
  REAL :: A
  REAL, TARGET :: B
  EQUIVALENCE(A,B)
END

! test 4
 write(6,*) ,2
 END

! test 5
PROGRAM
END

! test 6
MODULE TEST
  PRIVATE
  TYPE info_type
   INTEGER :: value
  END TYPE info_type
  TYPE all_type
    TYPE(info_type) :: info
  END TYPE
  PUBLIC :: all_type
END MODULE
END

! test 7
RETURN
END

! test 8
  TYPE data_type
    TYPE(data_type), POINTER :: next=>NULL()
    INTEGER :: i=0
  END TYPE data_type
  TYPE (data_type) :: A
  write(6,*) A
  END
Comment 1 GCC Commits 2004-07-11 13:35:37 UTC
Subject: Bug 16404

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	tobi@gcc.gnu.org	2004-07-11 13:35:33

Modified files:
	gcc/fortran    : ChangeLog io.c 

Log message:
	PR fortran/16404
	* io.c (match_io): Flag 'WRITE(...), ...' as extension.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.119&r2=1.120
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/io.c.diff?cvsroot=gcc&r1=1.11&r2=1.12

Comment 2 Tobias Schlüter 2004-07-11 13:49:33 UTC
I can't find anything in the standard which renders test 6 illegal. I think the
code is equivalent to:
! test 6
MODULE TEST
  TYPE, PRIVATE :: info_type
   private
   INTEGER :: value
  END TYPE info_type
  TYPE, PUBLIC :: all_type
    private
    TYPE(info_type) :: info
  END TYPE
END MODULE
which is legal AFAICT, and accepted by gfortran.
Comment 3 Tobias Schlüter 2004-07-11 13:54:36 UTC
Number 4 is fixed by the commit, a patch for numbers 5 and 7 is in the making:
http://gcc.gnu.org/ml/gcc-patches/2004-07/msg01148.html
Comment 4 GCC Commits 2004-07-11 14:16:35 UTC
Subject: Bug 16404

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	tobi@gcc.gnu.org	2004-07-11 14:16:32

Modified files:
	gcc/fortran    : ChangeLog match.c 

Log message:
	PR fortran/16404
	* match.c (gfc_match_program): A program name is obligatory.
	(gfc_match_return): RETURN in main program is an extension.
	(gfc_match_block_data): A space is required before a block data
	name.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.120&r2=1.121
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/match.c.diff?cvsroot=gcc&r1=1.17&r2=1.18

Comment 5 Tobias Schlüter 2004-07-11 14:17:04 UTC
Numbers 5 and 7 are fixed.
Comment 6 Giovanni Bajo 2004-07-11 23:22:19 UTC
Joost,

thank you for the report. Just a small suggestion: next time, please file a 
different PR for each different testcase. It makes it easier for us to track 
everything. Thanks.

Tobi, I'm reassigning this bug to you since you are working on it.

Giovanni
Comment 7 Tobias Schlüter 2004-07-11 23:40:10 UTC
I'm sorry, you're right. Number 6 is indeed invalid: I didn't see it when
looking cursorily, because the syntactic rules and the constraints in the (draft
F95) standard have a peculiar order, but the first constraint after R427 says:
"If a component of a derived type is of a ttype declared to be private, either
the derived type definition must contain the PRIVATE stement, or the derived
type must be private."
Comment 8 Tobias Schlüter 2004-07-13 21:48:15 UTC
Patch for No 1 is here http://gcc.gnu.org/ml/fortran/2004-07/msg00163.html

Joost, if you're planning to submit such bugs in the future, it would be helpful
if you pointed why you think those cases are illegal. It would have saved me
some time, at least when investigating number 6; and in number 8 it's not
apparent to me which part of the standard is violated, so I will to have search
through it, work which you certainly have done already. Even your compiler's
error message could be helpful in that regard.

Thanks.
Comment 9 Joost VandeVondele 2004-07-14 07:52:58 UTC
(In reply to comment #8)
> Even your compiler's error message could be helpful in that regard.

I don't have the standard reference, but in case 8 the problem is IO of a 
derived type that has a POINTER component. E.g. g95:

In file mytest.f90:6

  write(6,*) A
             1
Error: Data transfer element at (1) cannot have POINTER components


Comment 10 GCC Commits 2004-07-16 00:39:44 UTC
Subject: Bug 16404

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	tobi@gcc.gnu.org	2004-07-16 00:39:40

Modified files:
	gcc/fortran    : ChangeLog io.c match.c parse.c parse.h 

Log message:
	PR fortran/16404
	(parts ported from g95)
	* parse.h (gfc_state_data): New field do_variable.
	(gfc_check_do_variable): Add prototype.
	* parse.c (push_state): Initialize field 'do_variable'.
	(gfc_check_do_variable): New function.
	(parse_do_block): Remember do iterator variable.
	(parse_file): Initialize field 'do_variable'.
	* match.c (gfc_match_assignment, gfc_match_do,
	gfc_match_allocate, gfc_match_nullify, gfc_match_deallocate):
	Add previously missing checks.
	(gfc_match_return): Reformat error message.
	* io.c (match_out_tag): New function.
	(match_open_element, match_close_element,
	match_file_element, match_dt_element): Call match_out_tag
	instead of match_vtag where appropriate.
	(match_io_iterator, match_io_element): Add missing check.
	(match_io): Reformat error message.
	(match_inquire_element): Call match_out_tag where appropriate.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.130&r2=1.131
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/io.c.diff?cvsroot=gcc&r1=1.12&r2=1.13
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/match.c.diff?cvsroot=gcc&r1=1.18&r2=1.19
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/parse.c.diff?cvsroot=gcc&r1=1.13&r2=1.14
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/parse.h.diff?cvsroot=gcc&r1=1.3&r2=1.4

Comment 11 Tobias Schlüter 2004-07-16 00:41:21 UTC
Number 1 is fixed.
Comment 12 GCC Commits 2004-07-16 00:57:45 UTC
Subject: Bug 16404

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	tobi@gcc.gnu.org	2004-07-16 00:57:43

Modified files:
	gcc/fortran    : ChangeLog parse.c 
	gcc/testsuite  : ChangeLog 
Added files:
	gcc/testsuite/gfortran.dg: do_iterator.f90 

Log message:
	fortran/
	* parse.c (gfc_check_do_variable): Fix error locus.
	
	testsuite/
	PR fortran/16404
	* gfortran.dg/do_iterator.f90: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.131&r2=1.132
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/parse.c.diff?cvsroot=gcc&r1=1.14&r2=1.15
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.4009&r2=1.4010
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/do_iterator.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1

Comment 13 Tobias Schlüter 2004-09-01 14:36:12 UTC
Patch for number 8 here: http://gcc.gnu.org/ml/fortran/2004-08/msg00348.html
Comment 14 GCC Commits 2004-09-01 21:07:43 UTC
Subject: Bug 16404

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	tobi@gcc.gnu.org	2004-09-01 21:07:39

Modified files:
	gcc/fortran    : ChangeLog resolve.c 
	gcc/testsuite  : ChangeLog 
	gcc/testsuite/gfortran.dg: der_io_1.f90 

Log message:
	fortran/
	PR fortran/16400
	PR fortran/16404
	(port from g95)
	* resolve.c (resolve_transfer): New function.
	(resolve_code): Call resolve_transfer in case of EXEC_TRANSFER.
	
	testsuite/
	PR fortran/16404
	* gfortran.dg/der_io_1.f90: XFAIL illegal testcase.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.195&r2=1.196
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/resolve.c.diff?cvsroot=gcc&r1=1.16&r2=1.17
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.4228&r2=1.4229
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/der_io_1.f90.diff?cvsroot=gcc&r1=1.2&r2=1.3

Comment 15 Tobias Schlüter 2005-03-13 00:04:57 UTC
No 2 is PR18870.  It also remains No 6.
Comment 16 Francois-Xavier Coudert 2005-06-18 21:52:18 UTC
Since number 2 is already reported, we only have 3 and 6 left:

! test 3
  REAL :: A
  REAL, TARGET :: B
  EQUIVALENCE(A,B)
END

! test 6
! If component of public derived type 'all_type' of type is declared to be
! private, derived type definition must contain PRIVATE statement.
MODULE TEST
  PRIVATE
  TYPE info_type
   INTEGER :: value
  END TYPE info_type
  TYPE all_type
    TYPE(info_type) :: info
  END TYPE
  PUBLIC :: all_type
END MODULE
END
Comment 17 Paul Thomas 2005-09-07 16:09:34 UTC
(In reply to comment #16)
> Since number 2 is already reported, we only have 3 and 6 left:

I have a patch for 3 and will try to sort out 6 (+pr21986) as soon as I have a
moment.
Comment 18 Paul Thomas 2005-09-26 19:28:51 UTC
> I have a patch for 3 and will try to sort out 6 (+pr21986) as soon as I have a
> moment.

Both sorted in 

http://gcc.gnu.org/ml/fortran/2005-09/msg00438.html

Paul T
Comment 19 GCC Commits 2005-10-01 07:39:37 UTC
Subject: Bug 16404

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	pault@gcc.gnu.org	2005-10-01 07:39:08

Modified files:
	gcc/fortran    : ChangeLog gfortran.h match.c resolve.c symbol.c 
	gcc/testsuite  : ChangeLog 
	gcc/testsuite/gfortran.dg/g77: 980628-2.f 980628-3.f 980628-9.f 
	                               980628-10.f 
Added files:
	gcc/testsuite/gfortran.dg: equiv_constraint_1.f90 
	                           equiv_constraint_2.f90 
	                           equiv_constraint_3.f90 
	                           equiv_constraint_4.f90 
	                           equiv_constraint_5.f90 
	                           equiv_constraint_6.f90 
	                           equiv_constraint_7.f90 
	                           equiv_constraint_8.f90 
	                           private_type_1.f90 private_type_2.f90 

Log message:
	2005-10-01  Paul Thomas  <pault@gcc.gnu.org>
	
	PR fortran/16404
	PR fortran/20835
	PR fortran/20890
	PR fortran/20899
	PR fortran/20900
	PR fortran/20901
	PR fortran/20902
	* gfortran.h: Prototype for gfc_add_in_equivalence.
	* match.c (gfc_match_equivalence): Make a structure component
	an explicit,rather than a syntax, error in an equivalence
	group.  Call gfc_add_in_equivalence to add the constraints
	imposed in check_conflict.
	* resolve.c (resolve_symbol): Add constraints: No public
	structures with private-type components and no public
	procedures with private-type dummy arguments.
	(resolve_equivalence_derived): Add constraint that prevents
	a structure equivalence member from having a default
	initializer.
	(sequence_type): New static function to determine whether an
	object is default numeric, default character, non-default
	or mixed sequence. Add corresponding enum typespec.
	(resolve_equivalence): Add constraints to equivalence groups
	or their members: No more than one initialized member and
	that different types are not equivalenced for std=f95.  All
	the simple constraints have been moved to check_conflict.
	* symbol.c (check_conflict): Simple equivalence constraints
	added, including those removed from resolve_symbol.
	(gfc_add_in_equivalence): New function to interface calls
	match_equivalence to check_conflict.
	
	2005-10-01  Paul Thomas  <pault@gcc.gnu.org>
	
	PR fortran/16404
	PR fortran/20835
	PR fortran/20890
	PR fortran/20899
	PR fortran/20900
	PR fortran/20901
	PR fortran/20902
	gfortran.dg/equiv_constraint_1.f90: New test.
	gfortran.dg/equiv_constraint_2.f90: New test.
	gfortran.dg/equiv_constraint_3.f90: New test.
	gfortran.dg/equiv_constraint_4.f90: New test.
	gfortran.dg/equiv_constraint_5.f90: New test.
	gfortran.dg/equiv_constraint_6.f90: New test.
	gfortran.dg/equiv_constraint_7.f90: New test.
	gfortran.dg/equiv_constraint_8.f90: New test.
	gfortran.dg/private_type_1.f90: New test.
	gfortran.dg/private_type_2.f90: New test.
	gfortran.dg/g77/980628-2.f, 980628-3.f, 980628-9.f,
	980628-10.f: Assert std=gnu to permit mixing of
	types in equivalence statements.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.572&r2=1.573
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.h.diff?cvsroot=gcc&r1=1.87&r2=1.88
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/match.c.diff?cvsroot=gcc&r1=1.45&r2=1.46
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/resolve.c.diff?cvsroot=gcc&r1=1.56&r2=1.57
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/symbol.c.diff?cvsroot=gcc&r1=1.35&r2=1.36
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.6119&r2=1.6120
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_1.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_2.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_3.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_4.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_5.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_6.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_7.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_8.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/private_type_1.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/private_type_2.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/g77/980628-2.f.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/g77/980628-3.f.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/g77/980628-9.f.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/g77/980628-10.f.diff?cvsroot=gcc&r1=1.1&r2=1.2

Comment 20 Andrew Pinski 2005-10-01 15:58:00 UTC
Fixed now.
Comment 21 GCC Commits 2005-10-12 05:43:17 UTC
Subject: Bug 16404

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-4_0-branch
Changes by:	pault@gcc.gnu.org	2005-10-12 05:43:08

Modified files:
	gcc/fortran    : ChangeLog gfortran.h match.c resolve.c symbol.c 
	gcc/testsuite  : ChangeLog 
	gcc/testsuite/gfortran.dg/g77: 980628-2.f 980628-3.f 980628-9.f 
	                               980628-10.f 
Added files:
	gcc/testsuite/gfortran.dg: equiv_constraint_1.f90 
	                           equiv_constraint_2.f90 
	                           equiv_constraint_3.f90 
	                           equiv_constraint_4.f90 
	                           equiv_constraint_5.f90 
	                           equiv_constraint_6.f90 
	                           equiv_constraint_7.f90 
	                           equiv_constraint_8.f90 
	                           private_type_1.f90 private_type_2.f90 
	                           private_type_3.f90 

Log message:
	2005-10-12  Paul Thomas  <pault@gcc.gnu.org>
	
	PR fortran/16404
	PR fortran/20835
	PR fortran/20890
	PR fortran/20899
	PR fortran/20900
	PR fortran/20901
	PR fortran/20902
	PR fortran/24207
	* gfortran.h: Prototype for gfc_add_in_equivalence.
	* match.c (gfc_match_equivalence): Make a structure component
	an explicit,rather than a syntax, error in an equivalence
	group.  Call gfc_add_in_equivalence to add the constraints
	imposed in check_conflict.
	* resolve.c (resolve_symbol): Add constraints: No public
	structures with private-type components and no public
	procedures with private-type dummy arguments. Exclude use and
	host associated symbols from the test for private objects in
	a public namelist.
	(resolve_equivalence_derived): Add constraint that prevents
	a structure equivalence member from having a default
	initializer.
	(sequence_type): New static function to determine whether an
	object is default numeric, default character, non-default
	or mixed sequence. Add corresponding enum typespec.
	(resolve_equivalence): Add constraints to equivalence groups
	or their members: No more than one initialized member and
	that different types are not equivalenced for std=f95.  All
	the simple constraints have been moved to check_conflict.
	* symbol.c (check_conflict): Simple equivalence constraints
	added, including those removed from resolve_symbol.
	(gfc_add_in_equivalence): New function to interface calls
	match_equivalence to check_conflict.
	
	2005-10-12  Paul Thomas  <pault@gcc.gnu.org>
	
	PR fortran/16404
	PR fortran/20835
	PR fortran/20890
	PR fortran/20899
	PR fortran/20900
	PR fortran/20901
	PR fortran/20902
	PR fortran/24207
	gfortran.dg/equiv_constraint_1.f90: New test.
	gfortran.dg/equiv_constraint_2.f90: New test.
	gfortran.dg/equiv_constraint_3.f90: New test.
	gfortran.dg/equiv_constraint_4.f90: New test.
	gfortran.dg/equiv_constraint_5.f90: New test.
	gfortran.dg/equiv_constraint_6.f90: New test.
	gfortran.dg/equiv_constraint_7.f90: New test.
	gfortran.dg/equiv_constraint_8.f90: New test.
	gfortran.dg/private_type_1.f90: New test.
	gfortran.dg/private_type_2.f90: New test.
	gfortran.dg/private_type_3.f90: New test.
	gfortran.dg/g77/980628-2.f, 980628-3.f, 980628-9.f,
	980628-10.f: Assert std=gnu to permit mixing of
	types in equivalence statements.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.335.2.127&r2=1.335.2.128
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.58.2.17&r2=1.58.2.18
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/match.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.31.8.12&r2=1.31.8.13
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/resolve.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.34.2.17&r2=1.34.2.18
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/symbol.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.26.2.4&r2=1.26.2.5
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.447&r2=1.5084.2.448
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_1.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_2.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_3.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_4.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_5.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_6.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_7.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/equiv_constraint_8.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/private_type_1.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/private_type_2.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/private_type_3.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/g77/980628-2.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.1&r2=1.1.46.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/g77/980628-3.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.1&r2=1.1.46.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/g77/980628-9.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.1&r2=1.1.46.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/g77/980628-10.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.1&r2=1.1.46.1