This patch removes all the XPASS noise from pph.exp runs by pruning the output from the base compiles (thanks Ian for the pointer). It add some comments as well.
Lawrence, I noticed that we do not seem to need -I. -fno-dwarf2-cfi-asm anymore. So, I removed them. I'm not sure I remember exactly why you had added them, but since removing them produces no changes to the results, I just took them out. No need for filtering out results anymore; make check should produce no extraneous XPASS output anymore. Tested on x86_64. Committed to branch. Diego. * lib/dg-pph.exp (dg-pph-pos): Do not compile base cases with dg-test. Use g++-dg-test and g++-dg-prune to build base cases. diff --git a/gcc/testsuite/lib/dg-pph.exp b/gcc/testsuite/lib/dg-pph.exp index 08c01da..3573fba 100644 --- a/gcc/testsuite/lib/dg-pph.exp +++ b/gcc/testsuite/lib/dg-pph.exp @@ -19,6 +19,7 @@ load_lib copy-file.exp +# Generate a PPH image from a header file. proc dg-pph-hdr { subdir test options mapflag suffix } { global runtests dg-do-what-default @@ -40,6 +41,8 @@ proc dg-pph-hdr { subdir test options mapflag suffix } { } } +# Run a negative PPH test. These tests are expected to produce an error +# as they represent files that are not compatible with PPH. proc dg-pph-neg { subdir test options mapflag suffix } { global runtests dg-do-what-default @@ -61,6 +64,11 @@ proc dg-pph-neg { subdir test options mapflag suffix } { } } +# Run a positive PPH test (a test expected to work with PPH). Tests not +# marked 'dg-do run' or 'dg-do link' are compiled twice. The first time +# with PPH disabled, the second time with PPH enabled. The assembly +# output from both compiles is then compared. The test succeeds if both +# assembly outputs are identical. proc dg-pph-pos { subdir test options mapflag suffix } { global runtests dg-do-what-default @@ -70,14 +78,11 @@ proc dg-pph-pos { subdir test options mapflag suffix } { return } + set dg-do-what-default compile set nshort "$subdir/[file tail $test]" set bname "[file rootname [file tail $nshort]]" verbose -log "\nTesting $nshort, $options" - # Compile the file the first time for a base case. - set dg-do-what-default compile - dg-test -keep-output $test "$options -I. -fno-dwarf2-cfi-asm" "" - # Determine whether this is an assembly comparison test set is_exec [llength [grep $test "dg-do run"]] set is_link [llength [grep $test "dg-do link"]] @@ -88,11 +93,31 @@ proc dg-pph-pos { subdir test options mapflag suffix } { } if { $is_asm } { + # Compile the file the first time for a base case. + global target_triplet + + # First, gather additional options specified by the test. + set all_dg_options [dg-get-options $test] + set other_options "" + foreach dg_option $all_dg_options { + set cmd [lindex $dg_option 0] + if { [string match "dg-options" $cmd] } { + set other_options "$other_options [lindex $dg_option 2]" + } + } + + # Now, compile the file but prune the result to avoid considering + # it part of the testsuite. We just want to compile it to provide + # a base assembly output to compare against. + set comp_output [g++-dg-test $test compile "$options $other_options"] + set comp_output [g++-dg-prune $target_triplet $comp_output] + # Wanted assembly, so quit if it did not compile successfully. if { ![file_on_host exists "$bname.s"] } { fail "$nshort $options (regular assembly missing)" return } + # Rename the .s file into .s-pph to compare it after the second build. remote_upload host "$bname.s" "$bname.s-pph" remote_download host "$bname.s-pph" @@ -101,8 +126,8 @@ proc dg-pph-pos { subdir test options mapflag suffix } { verbose -log "" - # Compile a second time using the pph files. - dg-test -keep-output $test "$options $mapflag -I. -fno-dwarf2-cfi-asm" "" + # Compile a second time using the PPH files. + dg-test -keep-output $test "$options $mapflag" "" if { !$is_asm } { # No assembly means we cannot compare them, @@ -131,6 +156,7 @@ proc dg-pph-pos { subdir test options mapflag suffix } { # In most tests, they should be identical. # Tests involving overload injection and such will have different assembly. set adiff [catch {exec diff "$bname.s-pph" "$bname.s+pph"} diff_result] + # The sources mark when they expect the comparison to differ. # When marked with xdiff, the difference is a problem. # When marked with xwant, the difference is what we want. -- This patch is available for review at http://codereview.appspot.com/4967063