This patch adds an expected checksum for the tests expecting an asm diff. This way if we were expecting an asm diff, still get one, but a different one, we know (before this patch we would ignore this, generating an XFAIL as usual, as the status of "having an asm diff" itself hadn't changed).
I had to change from using the TCL grep to the bash grep (through an exec call) as I now need the actual output of the grep call, not only the return value (it also turns out the return value for TCL grep and bash grep are different; hence the change in the if statements on the adiff variable) Gab 2011-07-15 Gabriel Charette <gch...@google.com> * g++.dg/pph/c1builtin-integral.cc: Add expected diff checksum. * g++.dg/pph/c1eabi1.cc: Add expected diff checksum. * g++.dg/pph/p4eabi1.cc: Add expected diff checksum. * lib/dg-pph.exp (dg-pph-pos): Expect checksums for pph asm xdiff. diff --git a/gcc/testsuite/g++.dg/pph/c1builtin-integral.cc b/gcc/testsuite/g++.dg/pph/c1builtin-integral.cc index c2fceec..6887b11 100644 --- a/gcc/testsuite/g++.dg/pph/c1builtin-integral.cc +++ b/gcc/testsuite/g++.dg/pph/c1builtin-integral.cc @@ -1,2 +1,2 @@ -// pph asm xdiff +// pph asm xdiff 52758 #include "c0builtin-integral.h" diff --git a/gcc/testsuite/g++.dg/pph/c1eabi1.cc b/gcc/testsuite/g++.dg/pph/c1eabi1.cc index b127f98..3321870 100644 --- a/gcc/testsuite/g++.dg/pph/c1eabi1.cc +++ b/gcc/testsuite/g++.dg/pph/c1eabi1.cc @@ -1,5 +1,5 @@ // { dg-options "-w -fpermissive" } -// pph asm xdiff +// pph asm xdiff 36206 #include "c0eabi1.h" diff --git a/gcc/testsuite/g++.dg/pph/p4eabi1.cc b/gcc/testsuite/g++.dg/pph/p4eabi1.cc index 4247f49..2f0715f 100644 --- a/gcc/testsuite/g++.dg/pph/p4eabi1.cc +++ b/gcc/testsuite/g++.dg/pph/p4eabi1.cc @@ -1,5 +1,5 @@ // { dg-options "-w -fpermissive" } -// pph asm xdiff +// pph asm xdiff 15662 #include "p4eabi1.h" diff --git a/gcc/testsuite/lib/dg-pph.exp b/gcc/testsuite/lib/dg-pph.exp index b706f27..1d7deed 100644 --- a/gcc/testsuite/lib/dg-pph.exp +++ b/gcc/testsuite/lib/dg-pph.exp @@ -128,12 +128,11 @@ proc dg-pph-pos { subdir test options mapflag suffix } { verbose -log "" # Compare the two assembly files. They should be identical. - set adiff [diff "$bname.s-pph" "$bname.s+pph"] + set adiff [catch {exec diff "$bname.s-pph" "$bname.s+pph"} diff_result] # The sources mark when they expect the comparison to differ. - set xdiff [llength [grep $test "pph asm xdiff"]] + set xdiff_entry [grep $test "pph asm xdiff( )*\[0-9\]*"] + set xdiff [llength $xdiff_entry] if { $adiff == 0 } { - fail "$nshort $options comparison failure" - } elseif { $adiff == 1 } { if { $xdiff } { xpass "$nshort $options (assembly comparison)" } else { @@ -141,11 +140,20 @@ proc dg-pph-pos { subdir test options mapflag suffix } { } file_on_host delete "$bname.s-pph" file_on_host delete "$bname.s+pph" - } else { + } elseif { $adiff == 1 } { + verbose -log "Diff obtained:\n$diff_result" if { $xdiff } { - xfail "$nshort $options (assembly comparison)" + set expectedSum [exec tr -d \} << [exec cut -f 4 -d\ << $xdiff_entry]] + set actualSum [exec cut -f 1 -d\ << [exec sum << $diff_result]] + if { $expectedSum == $actualSum } { + xfail "$nshort $options (assembly comparison)" + } else { + fail "$nshort $options (assembly comparison, sums differ: expected $expectedSum, actual $actualSum)" + } } else { fail "$nshort $options (assembly comparison)" } + } else { + fail "$nshort $options comparison failure" } } -- This patch is available for review at http://codereview.appspot.com/4744043