OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [lib/] [gfortran-dg.exp] - Blame information for rev 306

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 306 jeremybenn
#   Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
2
 
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 3 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with GCC; see the file COPYING3.  If not see
15
# .
16
 
17
load_lib gcc-dg.exp
18
load_lib torture-options.exp
19
 
20
# Define gfortran callbacks for dg.exp.
21
 
22
proc gfortran-dg-test { prog do_what extra_tool_flags } {
23
    set result \
24
        [gcc-dg-test-1 gfortran_target_compile $prog $do_what $extra_tool_flags]
25
 
26
    set comp_output [lindex $result 0]
27
    set output_file [lindex $result 1]
28
 
29
    # gfortran error messages look like this:
30
    #     [name]:[locus]:
31
    #
32
    #        some code
33
    #              1
34
    #     Error: Some error at (1)
35
    # or
36
    #     [name]:[locus]:
37
    #
38
    #       some code
39
    #              1
40
    #     [name]:[locus2]:
41
    #
42
    #       some other code
43
    #         2
44
    #     Error: Some error at (1) and (2)
45
    # or
46
    #     [name]:[locus]:
47
    #
48
    #       some code and some more code
49
    #              1       2
50
    #     Error: Some error at (1) and (2)
51
    #
52
    # Where [locus] is either [line] or [line].[columns] .
53
    #
54
    # We collapse these to look like:
55
    #  [name]:[line]: Error: Some error at (1) and (2)
56
    # or
57
    #  [name]:[line]: Error: Some error at (1) and (2)
58
    #  [name]:[line2]: Error: Some error at (1) and (2)
59
    # We proceed in two steps: first we deal with the form with two
60
    # different locus lines, then with the form with only one locus line.
61
    #
62
    # Note that these regexps only make sense in the combinations used below.
63
    # Note also that is imperative that we first deal with the form with
64
    # two loci.
65
    set locus_regexp "(\[^\n\]*):(\[0-9\]*)\[^\n\]*:\n\n\[^\n\]*\n\[^\n\]*\n"
66
    set diag_regexp "(\[^\n\]*)\n"
67
 
68
    set two_loci "$locus_regexp$locus_regexp$diag_regexp"
69
    set single_locus "$locus_regexp$diag_regexp"
70
    regsub -all $two_loci $comp_output "\\1:\\2: \\5\n\\3:\\4: \\5\n" comp_output
71
    regsub -all $single_locus $comp_output "\\1:\\2: \\3\n" comp_output
72
 
73
    return [list $comp_output $output_file]
74
}
75
 
76
proc gfortran-dg-prune { system text } {
77
    return [gcc-dg-prune $system $text]
78
}
79
 
80
# Utility routines.
81
 
82
# Modified dg-runtest that can cycle through a list of optimization options
83
# as c-torture does.
84
proc gfortran-dg-runtest { testcases default-extra-flags } {
85
    global runtests
86
    global DG_TORTURE_OPTIONS torture_with_loops
87
 
88
    torture-init
89
    set-torture-options $DG_TORTURE_OPTIONS
90
 
91
    foreach test $testcases {
92
        # If we're only testing specific files and this isn't one of
93
        # them, skip it.
94
        if ![runtest_file_p $runtests $test] {
95
            continue
96
        }
97
 
98
        # look if this is dg-do-run test, in which case
99
        # we cycle through the option list, otherwise we don't
100
        if [expr [search_for $test "dg-do run"]] {
101
            set option_list $torture_with_loops
102
        } else {
103
            set option_list [list { -O } ]
104
        }
105
 
106
        set nshort [file tail [file dirname $test]]/[file tail $test]
107
 
108
        foreach flags $option_list {
109
            verbose "Testing $nshort, $flags" 1
110
            dg-test $test $flags ${default-extra-flags}
111
        }
112
    }
113
 
114
    torture-finish
115
}
116
 
117
proc gfortran-dg-debug-runtest { target_compile trivial opt_opts testcases } {
118
    global srcdir subdir DEBUG_TORTURE_OPTIONS
119
 
120
    if ![info exists DEBUG_TORTURE_OPTIONS] {
121
       set DEBUG_TORTURE_OPTIONS ""
122
       set type_list [list "-gstabs" "-gstabs+" "-gxcoff" "-gxcoff+" "-gcoff" "-gdwarf-2" ]
123
       foreach type $type_list {
124
           set comp_output [$target_compile \
125
                   "$srcdir/$subdir/$trivial" "trivial.S" assembly \
126
                   "additional_flags=$type"]
127
           if { [string match "exit status *" $comp_output] } {
128
               continue
129
           }
130
           if { [string match \
131
                       "* target system does not support the * debug format*" \
132
                       $comp_output]
133
           } {
134
               continue
135
           }
136
           remove-build-file "trivial.S"
137
           foreach level {1 "" 3} {
138
               if { ($type == "-gdwarf-2") && ($level != "") } {
139
                   lappend DEBUG_TORTURE_OPTIONS [list "${type}" "-g${level}"]
140
                   foreach opt $opt_opts {
141
                       lappend DEBUG_TORTURE_OPTIONS \
142
                               [list "${type}" "-g${level}" "$opt" ]
143
                   }
144
               } else {
145
                   lappend DEBUG_TORTURE_OPTIONS [list "${type}${level}"]
146
                   foreach opt $opt_opts {
147
                       lappend DEBUG_TORTURE_OPTIONS \
148
                               [list "${type}${level}" "$opt" ]
149
                   }
150
               }
151
           }
152
       }
153
    }
154
 
155
    verbose -log "Using options $DEBUG_TORTURE_OPTIONS"
156
 
157
    global runtests
158
 
159
    foreach test $testcases {
160
       # If we're only testing specific files and this isn't one of
161
       # them, skip it.
162
       if ![runtest_file_p $runtests $test] {
163
           continue
164
       }
165
 
166
       set nshort [file tail [file dirname $test]]/[file tail $test]
167
 
168
       foreach flags $DEBUG_TORTURE_OPTIONS {
169
           set doit 1
170
           # gcc-specific checking removed here
171
 
172
           if { $doit } {
173
               verbose -log "Testing $nshort, $flags" 1
174
               dg-test $test $flags ""
175
           }
176
       }
177
    }
178
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.