This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: Cleanup up PCH tests


This patch removes shameful code duplication between the C and C++ PCH
tests.

Tested on i686-pc-linux-gnu by runnign the tests before and after
making this change.

Applied on the mainline.

--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com

2003-06-04  Mark Mitchell  <mark@codesourcery.com>

	* lib/dg-pch.exp: New file.
	* g++.dg/pch/pch.exp: Use dg-pch.exp.
	* gcc.dg/pch/pch.exp: Likewise.

Index: lib/dg-pch.exp
===================================================================
RCS file: lib/dg-pch.exp
diff -N lib/dg-pch.exp
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- lib/dg-pch.exp	4 Jun 2003 15:31:05 -0000
***************
*** 0 ****
--- 1,75 ----
+ #   Copyright (C) 2003 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
+ # (at your option) any later version.
+ # 
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+ 
+ proc dg-pch { subdir test options suffix } {
+     global runtests dg-do-what-default
+ 
+     # If we're only testing specific files and this isn't one of them, skip it.
+     if ![runtest_file_p $runtests $test] {
+ 	continue
+     }
+     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" }
+ 
+     # We don't try to use the loop-optimizing options, since they are highly
+     # unlikely to make any difference to PCH.
+     foreach flags $options {
+ 	verbose "Testing $nshort, $flags" 1
+ 
+ 	# For the header files, the default is to precompile.
+ 	set dg-do-what-default precompile
+ 	catch { file delete "$bname$suffix" }
+ 	file copy "[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" ] } {
+ 	    # Ensure that the PCH file is used, not the original header.
+ 	    file 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"
+ 		file copy "[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"
+ 		} else {
+ 		    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"
+ 	}
+     }
+ }
Index: gcc.dg/pch/pch.exp
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/pch/pch.exp,v
retrieving revision 1.7
diff -c -5 -p -r1.7 pch.exp
*** gcc.dg/pch/pch.exp	9 Apr 2003 22:47:36 -0000	1.7
--- gcc.dg/pch/pch.exp	4 Jun 2003 15:31:05 -0000
***************
*** 17,94 ****
  # GCC testsuite for precompiled header interaction,
  # that uses the `dg.exp' driver.
  
  # Load support procs.
  load_lib gcc-dg.exp
  
  # Initialize `dg'.
  dg-init
  
  set old_dg_do_what_default "${dg-do-what-default}"
  
  # Main loop.
  foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
!     global runtests torture_without_loops dg-do-what-default
! 
!     # If we're only testing specific files and this isn't one of them, skip it.
!     if ![runtest_file_p $runtests $test] {
! 	continue
!     }
!     set nshort "$subdir/[file tail $test]"
!     set bname "[file rootname [file tail $test]]"
! 
!     catch { file delete "$bname.h.gch" }
!     catch { file delete "$bname.s" }
!     catch { file 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.  However, we do want to
      # add -O0 -g, since users who want PCH usually want debugging and quick
      # compiles.
!     set pch_torture [concat [list {-O0 -g}] $torture_without_loops]
!     foreach flags $pch_torture {
! 	verbose "Testing $nshort, $flags" 1
! 
! 	# For the header files, the default is to precompile.
! 	set dg-do-what-default precompile
! 	catch { file delete "$bname.h" }
! 	file copy "[file rootname $test].hs" "$bname.h"
! 	dg-test -keep-output "$bname.h" $flags ""
! 
! 	# For the rest, the default is to compile to .s.
! 	set dg-do-what-default compile
! 
! 	if { [ file exists "$bname.h.gch" ] } {
! 	    # Ensure that the PCH file is used, not the original header.
! 	    file delete "$bname.h"
! 
! 	    dg-test -keep-output $test $flags "-I."
! 	    file delete "$bname.h.gch"
! 	    if { [ file exists "$bname.s" ] } {
! 		file rename "$bname.s" "$bname.s-gch"
! 		file copy "[file rootname $test].hs" "$bname.h"
! 		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"
! 		} else {
! 		    fail "$nshort $flags assembly comparison"
! 		}
! 		file delete "$bname.h"
! 		file delete "$bname.s"
! 		file delete "$bname.s-gch"
! 	    } else {
! 		untested "$nshort $flags assembly comparison"
! 	    }
! 
! 	} else {
! 	    untested "$nshort $flags"
! 	    untested "$nshort $flags assembly comparison"
! 	}
!     }
  }
  
  set dg-do-what-default "$old_dg_do_what_default"
  
  # All done.
--- 17,42 ----
  # GCC testsuite for precompiled header interaction,
  # that uses the `dg.exp' driver.
  
  # Load support procs.
  load_lib gcc-dg.exp
+ load_lib dg-pch.exp
  
  # Initialize `dg'.
  dg-init
  
  set old_dg_do_what_default "${dg-do-what-default}"
  
  # Main loop.
  foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
!     global torture_without_loops
  
      # We don't try to use the loop-optimizing options, since they are highly
      # unlikely to make any difference to PCH.  However, we do want to
      # add -O0 -g, since users who want PCH usually want debugging and quick
      # compiles.
!     dg-pch $subdir $test [concat [list {-O0 -g}] $torture_without_loops] ".h"
  }
  
  set dg-do-what-default "$old_dg_do_what_default"
  
  # All done.
Index: g++.dg/pch/pch.exp
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/g++.dg/pch/pch.exp,v
retrieving revision 1.6
diff -c -5 -p -r1.6 pch.exp
*** g++.dg/pch/pch.exp	9 Apr 2003 23:33:06 -0000	1.6
--- g++.dg/pch/pch.exp	4 Jun 2003 15:31:05 -0000
***************
*** 17,91 ****
  # GCC testsuite for precompiled header interaction,
  # that uses the `dg.exp' driver.
  
  # Load support procs.
  load_lib "g++-dg.exp"
  
  # Initialize `dg'.
  dg-init
  
  set old_dg_do_what_default "${dg-do-what-default}"
  
  # Main loop.
  foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.C]] {
-     global runtests dg-do-what-default
- 
-     # If we're only testing specific files and this isn't one of them, skip it.
-     if ![runtest_file_p $runtests $test] {
- 	continue
-     }
-     set nshort "$subdir/[file tail $test]"
-     set bname "[file rootname [file tail $test]]"
- 
-     catch { file delete "$bname.H.gch" }
-     catch { file delete "$bname.s" }
-     catch { file 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.
!     foreach flags { "-g" "-O2 -g" "-O2" } {
! 	verbose "Testing $nshort, $flags" 1
! 
! 	# For the header files, the default is to precompile.
! 	set dg-do-what-default precompile
! 	catch { file delete "$bname.H" }
! 	file copy "[file rootname $test].Hs" "$bname.H"
! 	dg-test -keep-output "$bname.H" $flags ""
! 
! 	# For the rest, the default is to compile to .s.
! 	set dg-do-what-default compile
! 
! 	if { [ file exists "$bname.H.gch" ] } {
! 	    # Ensure that the PCH file is used, not the original header.
! 	    file delete "$bname.H"
! 
! 	    dg-test -keep-output $test $flags "-I."
! 	    file delete "$bname.H.gch"
! 	    if { [ file exists "$bname.s" ] } {
! 		file rename "$bname.s" "$bname.s-gch"
! 		file copy "[file rootname $test].Hs" "$bname.H"
! 		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"
! 		} else {
! 		    fail "$nshort $flags assembly comparison"
! 		}
! 		file delete "$bname.H"
! 		file delete "$bname.s"
! 		file delete "$bname.s-gch"
! 	    } else {
! 		untested "$nshort $flags assembly comparison"
! 	    }
! 
! 	} else {
! 	    untested "$nshort $flags"
! 	    untested "$nshort $flags assembly comparison"
! 	}
!     }
  }
  
  set dg-do-what-default "$old_dg_do_what_default"
  
  # All done.
--- 17,38 ----
  # GCC testsuite for precompiled header interaction,
  # that uses the `dg.exp' driver.
  
  # Load support procs.
  load_lib "g++-dg.exp"
+ load_lib dg-pch.exp
  
  # Initialize `dg'.
  dg-init
  
  set old_dg_do_what_default "${dg-do-what-default}"
  
  # Main loop.
  foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.C]] {
      # We don't try to use the loop-optimizing options, since they are highly
      # unlikely to make any difference to PCH.
!     dg-pch $subdir $test [list "-g" "-O2 -g" "-O2"] ".H"
  }
  
  set dg-do-what-default "$old_dg_do_what_default"
  
  # All done.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]