do_iterator: Split loop, markup all lines for which an error locus is printed.

* gfortran.dg/do_iterator: Split loop, markup all lines for
which an error locus is printed.
* gfortran.dg/pr17708.f90: Markup all lines for which an error
locus is printed.
* gfortran.dg/select_4.f90: Likewise.
* lib/gfortran-dg.exp (gfortran-dg-test): Handle gfortran error
locuses in the various permutations.

From-SVN: r95329
This commit is contained in:
Tobias Schlüter 2005-02-21 14:03:06 +01:00 committed by Tobias Schlüter
parent 4a22dcdd52
commit da7fdff6e1
5 changed files with 57 additions and 16 deletions

View File

@ -1,3 +1,13 @@
2005-02-20 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
* gfortran.dg/do_iterator: Split loop, markup all lines for
which an error locus is printed.
* gfortran.dg/pr17708.f90: Markup all lines for which an error
locus is printed.
* gfortran.dg/select_4.f90: Likewise.
* lib/gfortran-dg.exp (gfortran-dg-test): Handle gfortran error
locuses in the various permutations.
2005-02-20 Dorit Naishlos <dorit@il.ibm.com>
PR tree-optimization/19951

View File

@ -1,8 +1,12 @@
! { dg-do compile }
! various checks which verify that we don't change do-iterators
DO I=1,5
I=1 ! { dg-error "cannot be redefined" "changing do-iterator 1" }
DO I=1,5 ! { dg-error "cannot be redefined" "changing do-iterator 1" }
I=1 ! { dg-error "cannot be redefined" "changing do-iterator 1" }
END DO
DO I=1,5 ! { dg-error "cannot be redefined" "changing do-iterator 2" }
READ(5,*) I ! { dg-error "cannot be redefined" "changing do-iterator 2" }
END DO
DO I=1,5 ! { dg-error "cannot be redefined" "changing do-iterator 3" }
READ(5,*,iostat=i) j ! { dg-error "cannot be redefined" "changing do-iterator 3" }
ENDDO
END

View File

@ -2,8 +2,8 @@
program test
j = 0
do 10 i=1,3
if(i == 2) goto 10 ! { dg-warning "" "" }
if(i == 2) goto 10 ! { dg-warning "jumps to END" }
j = j+1
10 enddo
10 enddo ! { dg-warning "jumps to END" }
if (j/=2) call abort
end

View File

@ -4,15 +4,15 @@
program select_5
integer i
select case(i)
case (20:30)
case (25:) ! { dg-error "overlaps with CASE" "" }
case (20:30) ! { dg-error "overlaps with CASE" }
case (25:) ! { dg-error "overlaps with CASE" }
end select
select case(i)
case (30)
case (25:) ! { dg-error "overlaps with CASE" "" }
case (30) ! { dg-error "overlaps with CASE" }
case (25:) ! { dg-error "overlaps with CASE" }
end select
select case(i)
case (20:30)
case (25) ! { dg-error "overlaps with CASE" "" }
case (20:30) ! { dg-error "overlaps with CASE" }
case (25) ! { dg-error "overlaps with CASE" }
end select
end program select_5

View File

@ -1,4 +1,4 @@
# Copyright (C) 2004 Free Software Foundation, Inc.
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -25,11 +25,38 @@ proc gfortran-dg-test { prog do_what extra_tool_flags } {
set comp_output [lindex $result 0]
set output_file [lindex $result 1]
# Put the error message on the same line as the line number
# FIXME: Add a colon after line number
# Remove the line of source code with the error and
# the number pointing to error
regsub -all "\n\n\[^\n\]*\n *\[0-9\]*\n" $comp_output ": " comp_output
# gfortran error messages look like this:
# In file [name]:[line]
#
# some code
# 1
# Error: Some error at (1) and (2)
# or
# In file [name]:[line]
#
# some code
# 1
# In file [name]:[line2]
#
# some other code
# 2
# Error: Some error at (1) and (2)
# or
# In file [name]:[line]
#
# some code and some more code
# 1 2
# Error: Some error at (1) and (2)
#
# We collapse these to look like:
# [name]:[line]: Error: Some error at (1) and (2)
# or
# [name]:[line]: Error: Some error at (1) and (2)
# [name]:[line2]: Error: Some error at (1) and (2)
# We proceed in two steps: first we deal with the form with two
# different locus lines, then with the form with only one locus line.
regsub -all " In file (\[^\n\]*)\n\n\[^\n\]*\n\[^\n\]*\n In file (\[^\n\]*)\n\n\[^\n\]*\n\[^\n\]*\n(\[^\n\]*)\n" $comp_output "\\1: \\3\n\\2: \\3\n" comp_output
regsub -all " In file (\[^\n\]*)\n\n\[^\n\]*\n\[^\n\]*\n(\[^\n\]*)\n" $comp_output "\\1: \\2\n" comp_output
return [list $comp_output $output_file]
}