OSDN Git Service

* gcc.c-torture/unsorted/dump-noaddr.x (dump_compare): Use --dumpbase
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / lib / dg-pch.exp
index ac8bafc..5320880 100644 (file)
@@ -1,8 +1,8 @@
-#   Copyright (C) 2003 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2007, 2008 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
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
 # (at your option) any later version.
 # 
 # This program is distributed in the hope that it will be useful,
@@ -11,8 +11,8 @@
 # GNU General Public License for more details.
 # 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
 
 load_lib copy-file.exp
 
@@ -26,9 +26,9 @@ proc dg-pch { subdir test options suffix } {
     set nshort "$subdir/[file tail $test]"
     set bname "[file rootname [file tail $nshort]]"
 
-    catch { file delete "$bname$suffix.gch" }
-    catch { file delete "$bname.s" }
-    catch { file delete "$bname.s-gch" }
+    catch { file_on_host delete "$bname$suffix.gch" }
+    catch { file_on_host delete "$bname.s" }
+    catch { file_on_host delete "$bname.s-gch" }
 
     # We don't try to use the loop-optimizing options, since they are highly
     # unlikely to make any difference to PCH.
@@ -37,41 +37,52 @@ proc dg-pch { subdir test options suffix } {
 
        # For the header files, the default is to precompile.
        set dg-do-what-default precompile
-       catch { file delete "$bname$suffix" }
+       catch { file_on_host delete "$bname$suffix" }
        gcc_copy_files "[file rootname $test]${suffix}s" "$bname$suffix"
        dg-test -keep-output "./$bname$suffix" $flags ""
 
        # For the rest, the default is to compile to .s.
        set dg-do-what-default compile
 
-       if { [ file exists "$bname$suffix.gch" ] } {
+       set have_errs [llength [grep $test "{\[ \t\]\+dg-error\[ \t\]\+.*\[ \t\]\+}"]]
+
+       if { [ file_on_host exists "$bname$suffix.gch" ] } {
            # Ensure that the PCH file is used, not the original header.
-           file delete "$bname$suffix"
+           file_on_host delete "$bname$suffix"
 
-           dg-test -keep-output $test $flags "-I."
-           file delete "$bname$suffix.gch"
-           if { [ file exists "$bname.s" ] } {
-               file rename "$bname.s" "$bname.s-gch"
-               gcc_copy_files "[file rootname $test]${suffix}s" "$bname$suffix"
-               dg-test -keep-output $test $flags "-I."
-               set tmp [ diff "$bname.s" "$bname.s-gch" ]
-               if { $tmp == 0 } {
-                   untested "$nshort $flags assembly comparison"
-               } elseif { $tmp == 1 } {
-                   pass "$nshort $flags assembly comparison"
+           dg-test -keep-output $test "$flags -I." ""
+           file_on_host delete "$bname$suffix.gch"
+           if { !$have_errs } {
+               if { [ file_on_host exists "$bname.s" ] } {
+                   remote_upload host "$bname.s" "$bname.s-gch"
+                   remote_download host "$bname.s-gch"
+                   gcc_copy_files "[file rootname $test]${suffix}s" "$bname$suffix"
+                   dg-test -keep-output $test $flags "-I."
+                   remote_upload host "$bname.s"
+                   set tmp [ diff "$bname.s" "$bname.s-gch" ]
+                   if { $tmp == 0 } {
+                       verbose -log "assembly file '$bname.s', '$bname.s-gch' comparison error"
+                       fail "$nshort $flags assembly comparison"
+                   } elseif { $tmp == 1 } {
+                       pass "$nshort $flags assembly comparison"
+                   } else {
+                       fail "$nshort $flags assembly comparison"
+                   }
+                   file_on_host delete "$bname$suffix"
+                   file_on_host delete "$bname.s"
+                   file_on_host delete "$bname.s-gch"
                } else {
-                   fail "$nshort $flags assembly comparison"
+                   verbose -log "assembly file '$bname.s' missing"
+                   fail "$nshort $flags assembly comparison"
                }
-               file delete "$bname$suffix"
-               file delete "$bname.s"
-               file delete "$bname.s-gch"
-           } else {
-               untested "$nshort $flags assembly comparison"
            }
-
        } else {
-           untested "$nshort $flags"
-           untested "$nshort $flags assembly comparison"
+           verbose -log "pch file '$bname$suffix.gch' missing"
+           fail "$nshort $flags"
+           if { !$have_errs } {
+               verbose -log "assembly file '$bname.s' missing" 1
+               fail "$nshort $flags assembly comparison"
+           }
        }
     }
 }