[pph] Clean up PPH tests (issue4572042)

Diego Novillo dnovillo@google.com
Mon Jun 6 14:21:00 GMT 2011


So, I'm getting this:

Running /home/dnovillo/pph/svn/src/gcc/testsuite/g++.dg/pph/pph.exp ...
XPASS: g++.dg/pph/c120060625-1.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/c1eabi1.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1autometh.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1functions.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1functions.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1special.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1special.cc  -fpph-map=pph.map -I.  (test for bogus
messages, line )
FAIL: g++.dg/pph/x1special.cc  -fpph-map=pph.map -I. (test for excess errors)
XPASS: g++.dg/pph/x1template.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1template.cc  -fpph-map=pph.map -I.  (test for
bogus messages, line )
FAIL: g++.dg/pph/x1template.cc  -fpph-map=pph.map -I. (test for excess errors)
XPASS: g++.dg/pph/x1tmplclass.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1tmplfunc.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1tmplfunc.cc  -fpph-map=pph.map -I.  (test for
bogus messages, line )
FAIL: g++.dg/pph/x1tmplfunc.cc  -fpph-map=pph.map -I. (test for excess errors)
XPASS: g++.dg/pph/x1typerefs.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1variables.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1variables.cc  -I.  (test for bogus messages, line )
XPASS: g++.dg/pph/x1variables.cc  -fpph-map=pph.map -I.  (test for
bogus messages, line )
XPASS: g++.dg/pph/x1variables.cc  -fpph-map=pph.map -I.  (test for
bogus messages, line )

                === g++ Summary ===

# of expected passes            176
# of unexpected failures        3
# of unexpected successes       17
# of expected failures          45

The three FAILs are expected then?  Those are the ones you mentioned
can't be easily XFAIL'd?


Diego.

On Sun, Jun 5, 2011 at 18:46, Lawrence Crowl <crowl@google.com> wrote:
> The purpose of this patch is to make PPH testing clean.
>
> Some tests have assembly comparison failures between regular compiles and PPH
> compiles.  When this miscompare is exected, we now mark the test with a
> comment "pph asm xdiff".  The driver lib/dg-pph.exp looks for this comment to
> report either FAIL or XFAIL.
>
> Test p1mean.cc enters infinite recursion.  Instead of disabling the test with
> a syntax error, we now run it under a dg-timeout.
>
> Test c1return-5.h was trying to grep assembly, but since we produce pre-parsed
> headers, not assembly, the test was in error.  We have moved the assembly
> check to c1return-5.cc where it belongs.
>
> All PPH tests expected to have PPH compilation failures are marked with
> // { dg-xfail-if "comment" { "*-*-*" } { "-fpph-map=pph.map" } }
> The regular compiles do not have the -fpph-map option, and hence are not
> expected to fail.  One test has a comment INFINITE; one test has a comment
> BOGUS; and the rest have a comment ICE.
>
> The driver lib/dg-pph.exp test control logic now stops a test when any
> compilation fails to produce assembly output.  If the test file contains the
> above directive, that compilation failure is expected and reported as such.
> Otherwise, it is reported as an unexpected failure.
>
> PPH is wrongly producing ICEs and errors.  We mark applicable messages with
> dg-bogus.  Because the line/column information is often wrong, we mark the
> with a line of "0", which avoids line comparisons.  We also prune output as
> needed.
>
> All tests are now either PASS or XFAIL, with the exception of unavoidable
> bogus XPASS messages for "test for bogus messages" and "test for excess
> errors".  These are unavoidable because they cannot be conditionalized based
> on compiler options, and they do not appear in regular compiles.
>
> If you run the output of
>
>    make check-c++ RUNTESTFLAGS=pph.exp
>
> through
>
>    sed -e '
>        /^XPASS: .*test for bogus messages/     d
>        /^XPASS: .*test for excess errors/      d
>
>        /^#/            p
>        /^ERROR: /      p
>        /^XFAIL: /      p
>        /^XPASS: /      p
>        /^FAIL: /       p
>
>        d
>    '
>
> you should get no individual tests listed.
>
>
> Index: gcc/testsuite/ChangeLog.pph
>
> 2011-06-05  Lawrence Crowl  <crowl@google.com>
>
>        * lib/dg-pph.exp (dg-pph-hdr): Add blank lines to logfile.
>        Format if statements and calls consistently.
>        (dg-pph-neg): Remove extraneous assembly files. Add blank
>        lines to logfile. Format if statements and calls consistently.
>        (dg-pph-pos): Stop test when a compilation fails. Recognize
>        expected failing compilations. Recognize expected assembly
>        miscompares. Parenthesize failure notes. Remove extraneous
>        assembly files. Add blank lines to logfile. Format if
>        statements and calls consistently.
>        * g++.dg/pph/c1simple.cc: Add comment "pph asm xdiff"
>        indicating expected assembly difference failure. Add line
>        spacing to test.
>        * g++.dg/pph/c1struct.cc: Likewise.
>        * g++.dg/pph/c1variables.cc: Likewise.
>        * g++.dg/pph/c2builtin1.cc: Likewise.
>        * g++.dg/pph/x1globalref.cc: Likewise.
>        * g++.dg/pph/x1hardlookup.cc: Likewise.
>        * g++.dg/pph/x1struct1.cc: Likewise.
>        * g++.dg/pph/x1struct2.cc: Likewise.
>        * g++.dg/pph/x2nontrivinit.cc: Likewise.
>        * c120060625-1.h: Add dg-xfail-if for -fpph-map. Add bogus
>        message for ICE. Prune output. Add line spacing to text.
>        * g++.dg/pph/c120060625-1.cc: Likewise.
>        * g++.dg/pph/c1eabi1.h: Likewise.
>        * g++.dg/pph/c1eabi1.cc: Likewise.
>        * g++.dg/pph/x1autometh.cc: Likewise.
>        * g++.dg/pph/x1functions.cc: Likewise.
>        * g++.dg/pph/x1special.cc: Likewise.
>        * g++.dg/pph/x1template.cc: Likewise.
>        * g++.dg/pph/x1tmplclass.cc: Likewise.
>        * g++.dg/pph/x1tmplfunc.cc: Likewise.
>        * g++.dg/pph/x1typerefs.cc: Likewise.
>        * g++.dg/pph/x1variables.cc: Likewise.
>        * g++.dg/pph/p1mean.cc: Change syntax error preventing infinite
>        recursion to a dg-timeout. Add dg-xfail-if for -fpph-map.
>        * g++.dg/pph/c1return-5.h: Remove dg-final as we do not generate
>        assembly on compiling headers. Change dg directive location.
>        * g++.dg/pph/c1return-5.cc: Add dg-final as we _do_ generate
>        assembly on compiling sources. Copy up dg-options from
>        c1return-5.h as well.
>
>
> Index: gcc/testsuite/lib/dg-pph.exp
> ===================================================================
> --- gcc/testsuite/lib/dg-pph.exp        (revision 174608)
> +++ gcc/testsuite/lib/dg-pph.exp        (working copy)
> @@ -24,13 +24,14 @@ proc dg-pph-hdr { subdir test options ma
>     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] {
> +    if { ![runtest_file_p $runtests $test] } {
>        return
>     }
>
>     set nshort "$subdir/[file tail $test]"
>     set bname "[file rootname [file tail $nshort]]"
> -    verbose "Testing $nshort, $options" 1
> +    verbose -log "\nTesting $nshort, $options"
> +
>     set dg-do-what-default preparse
>     dg-test -keep-output $test "$options $mapflag -I." ""
>
> @@ -41,16 +42,19 @@ proc dg-pph-neg { subdir test options ma
>     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] {
> +    if { ![runtest_file_p $runtests $test] } {
>        return
>     }
>
>     set nshort "$subdir/[file tail $test]"
>     set bname "[file rootname [file tail $nshort]]"
> -    verbose "Testing $nshort, $options" 1
> +    verbose -log "\nTesting $nshort, $options"
> +
>     set dg-do-what-default compile
>     dg-test -keep-output $test "$options $mapflag -I." ""
> -    file_on_host delete "$bname.s"
> +    if { ![file_on_host exists "$bname.s"] } {
> +       file_on_host delete "$bname.s"
> +    }
>  }
>
>  proc dg-pph-pos { subdir test options mapflag suffix } {
> @@ -58,64 +62,72 @@ proc dg-pph-pos { subdir test options ma
>     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] {
> +    if { ![runtest_file_p $runtests $test] } {
>        return
>     }
>
>     set nshort "$subdir/[file tail $test]"
>     set bname "[file rootname [file tail $nshort]]"
> -    verbose "Testing $nshort, $options" 1
> -    set dg-do-what-default compile
> +    verbose -log "\nTesting $nshort, $options"
>
> -    set have_errs [llength [grep $test "{\[ \t\]\+dg-error\[ \t\]\+.*\[ \t\]\+}"]]
>     # Compile the file the first time for a base case.
> +    set dg-do-what-default compile
>     dg-test -keep-output $test "$options -I." ""
>
> -    if { $have_errs } {
> -       verbose -log "regular compilation failed"
> -       fail "$nshort $options, regular compilation failed"
> -       return
> -    }
> -
> -    if { ! [ file_on_host exists "$bname.s" ] } {
> -       verbose -log "regular assembly file '$bname.s' missing"
> -       fail "$nshort $options, regular assembly missing"
> +    # Quit if it did not compile successfully.
> +    if { ![file_on_host exists "$bname.s"] } {
> +       # All regular compiles should pass.
> +       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"
> +    file_on_host delete "$bname.s"
> +
> +    verbose -log ""
>
>     # Compile a second time using the pph files.
>     dg-test -keep-output $test "$options $mapflag -I." ""
>
> -    if { $have_errs } {
> -       verbose -log "PPH compilation failed"
> -       fail "$nshort $options, PPH compilation failed"
> -       return
> -    }
> -
> -    if { ! [ file_on_host exists "$bname.s" ] } {
> -       verbose -log "PPH assembly file '$bname.s' missing"
> -       fail "$nshort $options, PPH assembly missing"
> +    # Quit if it did not compile successfully.
> +    if { ![file_on_host exists "$bname.s"] } {
> +       # Expect assembly to be missing when the compile is an expected fail.
> +       if { [llength [grep $test "dg-xfail-if.*-fpph-map"]] } {
> +           xfail "$nshort $options (pph assembly missing)"
> +       } else {
> +           fail "$nshort $options (pph assembly missing)"
> +       }
>        return
>     }
>
>     # Rename the .s file into .s+pph to compare it.
>     remote_upload host "$bname.s" "$bname.s+pph"
>     remote_download host "$bname.s+pph"
> +    file_on_host delete "$bname.s"
> +
> +    verbose -log ""
>
>     # Compare the two assembly files.  They should be identical.
> -    set tmp [ diff "$bname.s-pph" "$bname.s+pph" ]
> -    if { $tmp == 0 } {
> -       verbose -log "assembly file '$bname.s-pph', '$bname.s+pph' comparison error"
> -       fail "$nshort $options assembly comparison"
> -    } elseif { $tmp == 1 } {
> -       pass "$nshort $options assembly comparison"
> +    set adiff [diff "$bname.s-pph" "$bname.s+pph"]
> +    # The sources mark when they expect the comparison to differ.
> +    set xdiff [llength [grep $test "pph asm xdiff"]]
> +    if { $adiff == 0 } {
> +       fail "$nshort $options comparison failure"
> +    } elseif { $adiff == 1 } {
> +       if { $xdiff } {
> +           xpass "$nshort $options (assembly identical)"
> +       } else {
> +           pass "$nshort $options (assembly identical)"
> +       }
>        file_on_host delete "$bname.s-pph"
>        file_on_host delete "$bname.s+pph"
>     } else {
> -       fail "$nshort $options assembly comparison"
> +       if { $xdiff } {
> +           xfail "$nshort $options (assembly mismatch)"
> +       } else {
> +           fail "$nshort $options (assembly mismatch)"
> +       }
>     }
>  }
> Index: gcc/testsuite/g++.dg/pph/x1globalref.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1globalref.cc     (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1globalref.cc     (working copy)
> @@ -1,4 +1,7 @@
> +// pph asm xdiff
> +
>  #include "x1globalref.h"
> +
>  type x = 2;
>  type y = x;
>  type f() { return n+m+a[3]+x+y; }
> Index: gcc/testsuite/g++.dg/pph/c1eabi1.h
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/c1eabi1.h  (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/c1eabi1.h  (working copy)
> @@ -1,8 +1,12 @@
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "mathcalls.h:365:1: internal compiler error: Segmentation fault" "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included " }
> +// { dg-prune-output "                 from " }
> +// { dg-options "-w -fpermissive" }
> +
>  #ifndef __PPH_GUARD_H
>  #define __PPH_GUARD_H
> -/* { dg-options "-w -fpermissive" } */
> -/* { dg-xfail-if "ICEs the compiler during PPH read" { "*-*-*" } } */
> -/* { dg-prune-output "In file included.*" } */
> +
>  /* This file tests most of the non-C++ run-time helper functions
>    described in Section 4 of the "Run-Time ABI for the ARM
>    Architecture".  These are basic tests; they do not try to validate
> Index: gcc/testsuite/g++.dg/pph/c1struct.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/c1struct.cc        (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/c1struct.cc        (working copy)
> @@ -1,3 +1,6 @@
> +// pph asm xdiff
> +
>  #include "c1struct.h"
> +
>  thing var1;
>  thing var2 = { 3 };
> Index: gcc/testsuite/g++.dg/pph/x1typerefs.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1typerefs.cc      (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1typerefs.cc      (working copy)
> @@ -1,5 +1,11 @@
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "c1typerefs.h:11:18: internal compiler error: Segmentation fault" "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included from " }
> +
>  #include "x1typerefs.h"
> +
>  int derived::method() {
>     return field;
>  }
> +
>  vderived variable;
> Index: gcc/testsuite/g++.dg/pph/x1struct2.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1struct2.cc       (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1struct2.cc       (working copy)
> @@ -1,7 +1,11 @@
> +// pph asm xdiff
> +
>  #include "x1struct2.h"
> +
>  type D::method()
>  { static int x = 2;
>   return fld + mbr + gbl; }
> +
>  type D::mbr = 4;
>  typedef D D2;
>  D2 var1;
> Index: gcc/testsuite/g++.dg/pph/p1mean.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/p1mean.cc  (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/p1mean.cc  (working copy)
> @@ -1,10 +1,11 @@
> +// { dg-timeout 2 { target *-*-* } }
> +// { dg-xfail-if "INFINITE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +
>  #include <stdlib.h>
>  #include <stdio.h>
>  #include <math.h>
>  #include <string.h>
>
> -SYNTAX ERROR TO AVOID COMPILING THIS - IT CAUSES INFINITE RECURSION.
> -
>  static unsigned long long MAX_ITEMS = 10000;
>
>  static int
> Index: gcc/testsuite/g++.dg/pph/x1autometh.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1autometh.cc      (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1autometh.cc      (working copy)
> @@ -1,4 +1,9 @@
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "x1autometh.h:8:1: internal compiler error: Segmentation fault" "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included from " }
> +
>  #include "x1autometh.h"
> +
>  void function() {
>     base var1;
>     base var2( var1 );
> Index: gcc/testsuite/g++.dg/pph/x1tmplfunc.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1tmplfunc.cc      (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1tmplfunc.cc      (working copy)
> @@ -1,4 +1,9 @@
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "x1tmplfunc.h:12:30: internal compiler error: Segmentation fault" "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included from " }
> +
>  #include "x1tmplfunc.h"
> +
>  type val = 3;
>
>  template<>
> Index: gcc/testsuite/g++.dg/pph/c1return-5.h
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/c1return-5.h       (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/c1return-5.h       (working copy)
> @@ -1,7 +1,7 @@
> +// { dg-options "-mpreferred-stack-boundary=4" }
> +
>  #ifndef __PPH_GUARD_H
>  #define __PPH_GUARD_H
> -/* { dg-options "-mpreferred-stack-boundary=4" } */
> -/* { dg-final { scan-assembler-not "and\[lq\]?\[^\\n\]*-64,\[^\\n\]*sp" } } */
>
>  /* This compile only test is to detect an assertion failure in stack branch
>    development.  */
> Index: gcc/testsuite/g++.dg/pph/x1struct1.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1struct1.cc       (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1struct1.cc       (working copy)
> @@ -1,7 +1,11 @@
> +// pph asm xdiff
> +
>  #include "x1struct1.h"
> +
>  type D::method()
>  { static int x = 2;
>   return fld + mbr; }
> +
>  type D::mbr = 4;
>  typedef D D2;
>  D2 var1;
> Index: gcc/testsuite/g++.dg/pph/c120060625-1.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/c120060625-1.cc    (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/c120060625-1.cc    (working copy)
> @@ -1 +1,5 @@
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "c120060625-1.h:14:22: internal compiler error: invalid built-in macro .__FLT_MAX__." "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included from " }
> +
>  #include "c120060625-1.h"
> Index: gcc/testsuite/g++.dg/pph/x1special.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1special.cc       (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1special.cc       (working copy)
> @@ -1,4 +1,9 @@
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "x1special.h:19:6: internal compiler error: tree check: expected tree that contains 'decl minimal' structure, have 'overload' in context_for_name_lookup, at cp/search.c:570" "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included from " }
> +
>  #include "x1special.h"
> +
>  B b(1);
>
>  int H() {
> Index: gcc/testsuite/g++.dg/pph/c1variables.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/c1variables.cc     (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/c1variables.cc     (working copy)
> @@ -1,4 +1,7 @@
> +// pph asm xdiff
> +
>  #include "c1variables.h"
> +
>  int gbl_initial = 1;
>  const float gbl_init_const = 1.5;
>  const int gbl_manifest = 2;
> Index: gcc/testsuite/g++.dg/pph/x2nontrivinit.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x2nontrivinit.cc   (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x2nontrivinit.cc   (working copy)
> @@ -1 +1,3 @@
> +// pph asm xdiff
> +
>  #include "x2nontrivinit.h"
> Index: gcc/testsuite/g++.dg/pph/c1eabi1.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/c1eabi1.cc (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/c1eabi1.cc (working copy)
> @@ -1,4 +1,7 @@
> -/* { dg-options "-w -fpermissive" } */
> -/* { dg-xfail-if "ICEs the compiler during PPH read" { "*-*-*" } } */
> -/* { dg-prune-output "In file included.*" } */
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "mathcalls.h:365:1: internal compiler error: Segmentation fault" "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included from " }
> +// { dg-prune-output "                 from " }
> +// { dg-options "-w -fpermissive" }
> +
>  #include "c1eabi1.h"
> Index: gcc/testsuite/g++.dg/pph/c1simple.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/c1simple.cc        (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/c1simple.cc        (working copy)
> @@ -1,5 +1,9 @@
> +// pph asm xdiff
> +
>  /* comment */
> +
>  #include "c1simple2.h"
> +
>  int main()
>  {
>        return foo();
> Index: gcc/testsuite/g++.dg/pph/x1functions.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1functions.cc     (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1functions.cc     (working copy)
> @@ -1,5 +1,14 @@
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "'mbr_decl_inline' was not declared in this scope" "" { xfail *-*-* } 0 }
> +// { dg-bogus "c1functions.h:8:34: internal compiler error: Segmentation fault" "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included from " }
> +// { dg-prune-output "In member function " }
> +// { dg-prune-output "At global scope:" }
> +
>  #include "x1functions.h"
> +
>  int type::mbr_decl_then_def(int i)      // need body
>  { return mbr_decl_inline( i ); }
> +
>  int type::mbr_inl_then_def(int i)       // lazy body
>  { return mbr_decl_then_def( i ); }
> Index: gcc/testsuite/g++.dg/pph/x1template.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1template.cc      (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1template.cc      (working copy)
> @@ -1,9 +1,17 @@
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "x1template.h:18:13: internal compiler error: in resume_scope, at cp/name-lookup.c:1573" "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included from " }
> +
>  #include "x1template.h"
> +
>  namespace A {
>  int x = 3;
>  } // namespace A
> +
>  int y = 4;
> +
>  int D::method()
>  { return y; }
> +
>  int main()
>  { }
> Index: gcc/testsuite/g++.dg/pph/c120060625-1.h
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/c120060625-1.h     (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/c120060625-1.h     (working copy)
> @@ -1,5 +1,9 @@
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "c120060625-1.h:14:22: internal compiler error: invalid built-in macro .__FLT_MAX__." "" { xfail *-*-* } 0 }
> +
>  #ifndef __PPH_GUARD_H
>  #define __PPH_GUARD_H
> +
>  /* PR middle-end/28151 */
>  /* Testcase by Steven Bosscher <stevenb.gcc@gmail.com> */
>
> @@ -11,3 +15,4 @@ void foo (void)
>   b = __FLT_MAX__ + a;
>  }
>  #endif
> +
> Index: gcc/testsuite/g++.dg/pph/c1return-5.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/c1return-5.cc      (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/c1return-5.cc      (working copy)
> @@ -1 +1,4 @@
> +// { dg-options "-mpreferred-stack-boundary=4" }
> +// { dg-final { scan-assembler-not "and\[lq\]?\[^\\n\]*-64,\[^\\n\]*sp" } }
> +
>  #include "c1return-5.h"
> Index: gcc/testsuite/g++.dg/pph/x1tmplclass.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1tmplclass.cc     (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1tmplclass.cc     (working copy)
> @@ -1,4 +1,9 @@
> +// { dg-xfail-if "ICE" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "x1tmplclass.h:14:17: internal compiler error: Segmentation fault" "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included from " }
> +
>  #include "x1tmplclass.h"
> +
>  int wrapper<char>::cache = 2;
>
>  template
> Index: gcc/testsuite/g++.dg/pph/c2builtin1.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/c2builtin1.cc      (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/c2builtin1.cc      (working copy)
> @@ -1,3 +1,5 @@
> +// pph asm xdiff
> +
>  #include "c2builtin1.h"
>  #include "c2builtin2.h"
>  #include "c2builtin3.h"
> Index: gcc/testsuite/g++.dg/pph/x1hardlookup.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1hardlookup.cc    (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1hardlookup.cc    (working copy)
> @@ -1,5 +1,9 @@
> +// pph asm xdiff
> +
>  #include "x1hardlookup.h"
> +
>  D P;
> +
>  int I(int arg)
>  { return arg + V; }
>
> Index: gcc/testsuite/g++.dg/pph/x1variables.cc
> ===================================================================
> --- gcc/testsuite/g++.dg/pph/x1variables.cc     (revision 174608)
> +++ gcc/testsuite/g++.dg/pph/x1variables.cc     (working copy)
> @@ -1,4 +1,10 @@
> +// { dg-xfail-if "BOGUS" { "*-*-*" } { "-fpph-map=pph.map" } }
> +// { dg-bogus "c1variables.h:4:8: error: 'int D::mbr_uninit_plain' is not a static member of 'struct D'" "" { xfail *-*-* } 0 }
> +// { dg-bogus "c1variables.h:5:14: error: 'const int D::mbr_init_const' is not a static member of 'struct D'" "" { xfail *-*-* } 0 }
> +// { dg-prune-output "In file included from " }
> +
>  #include "x1variables.h"
> +
>  int D::mbr_init_plain = 4;
>  int D::mbr_uninit_plain;
>  const int D::mbr_init_const = 5;
>
> --
> This patch is available for review at http://codereview.appspot.com/4572042
>



More information about the Gcc-patches mailing list