From 3dfef819d79660d4c38cf6ad2f9e09fa912a3f6b Mon Sep 17 00:00:00 2001 From: janis Date: Tue, 7 Nov 2006 00:08:32 +0000 Subject: [PATCH] gcc/ 2006-11-06 Janis Johnson * gcc/doc/sourcebuild.texi (Test Directives): Add output-exists and output-exists-not. gcc/testsuite/ 2006-11-06 Janis Johnson * lib/gcc-dg.exp (output-exists): New proc. (output-exists-not): New proc. * gcc.test-framework/test-framework.awk: Support new directives. * gcc.test-framework/dg-outexistsnot-exp-F.c: New test. * gcc.test-framework/dg-outexistsnot-exp-P.c: New test. * gcc.test-framework/dg-outexists-exp-F.c: New test. * gcc.test-framework/dg-outexists-exp-XP.c: New test. * gcc.test-framework/dg-outexistsnot-exp-XF.c: New test. * gcc.test-framework/dg-outexists-exp-P.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118531 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++ gcc/doc/sourcebuild.texi | 6 +++ gcc/testsuite/ChangeLog | 13 ++++++ .../gcc.test-framework/dg-outexists-exp-F.c | 7 ++++ .../gcc.test-framework/dg-outexists-exp-P.c | 5 +++ .../gcc.test-framework/dg-outexists-exp-XP.c | 5 +++ .../gcc.test-framework/dg-outexistsnot-exp-F.c | 5 +++ .../gcc.test-framework/dg-outexistsnot-exp-P.c | 7 ++++ .../gcc.test-framework/dg-outexistsnot-exp-XF.c | 5 +++ .../gcc.test-framework/test-framework.awk | 13 +++--- gcc/testsuite/lib/gcc-dg.exp | 46 ++++++++++++++++++++++ 11 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.test-framework/dg-outexists-exp-F.c create mode 100644 gcc/testsuite/gcc.test-framework/dg-outexists-exp-P.c create mode 100644 gcc/testsuite/gcc.test-framework/dg-outexists-exp-XP.c create mode 100644 gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-F.c create mode 100644 gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-P.c create mode 100644 gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-XF.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fcc7ce3ec7c..165e0373c0c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-11-06 Janis Johnson + + * gcc/doc/sourcebuild.texi (Test Directives): Add output-exists + and output-exists-not. + 2006-11-06 Andrew Pinski PR tree-opt/29439 diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 3162a021e4f..a2661fe4358 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -1130,6 +1130,12 @@ suffix @var{suffix}. Passes if @var{regex} does not match demangled text in the dump file with suffix @var{suffix}. +@item output-exists [@{ target/xfail @var{selector} @}] +Passes if compiler output file exists. + +@item output-exists-not [@{ target/xfail @var{selector} @}] +Passes if compiler output file does not exist. + @item run-gcov @var{sourcefile} Check line counts in @command{gcov} tests. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ae0c6e4012d..f9baa74b8a3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2006-11-06 Janis Johnson + + * lib/gcc-dg.exp (output-exists): New proc. + (output-exists-not): New proc. + * gcc.test-framework/test-framework.awk: Support new directives. + * gcc.test-framework/dg-outexistsnot-exp-F.c: New test. + * gcc.test-framework/dg-outexistsnot-exp-P.c: New test. + * gcc.test-framework/dg-outexists-exp-F.c: New test. + * gcc.test-framework/dg-outexists-exp-XP.c: New test. + * gcc.test-framework/dg-outexistsnot-exp-XF.c: New test. + * gcc.test-framework/dg-outexists-exp-P.c: New test. + 2006-11-06 Erik Edelmann PR fortran/29630 diff --git a/gcc/testsuite/gcc.test-framework/dg-outexists-exp-F.c b/gcc/testsuite/gcc.test-framework/dg-outexists-exp-F.c new file mode 100644 index 00000000000..397ec68a204 --- /dev/null +++ b/gcc/testsuite/gcc.test-framework/dg-outexists-exp-F.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-W -Werror" } */ + +int main (void) { 0; } /* { dg-warning "no effect" } */ + +/* { dg-warning "warnings being treated as errors" "" { target *-*-* } 0 } */ +/* { dg-final { output-exists { target *-*-* } } } */ diff --git a/gcc/testsuite/gcc.test-framework/dg-outexists-exp-P.c b/gcc/testsuite/gcc.test-framework/dg-outexists-exp-P.c new file mode 100644 index 00000000000..04ed266e890 --- /dev/null +++ b/gcc/testsuite/gcc.test-framework/dg-outexists-exp-P.c @@ -0,0 +1,5 @@ +/* { dg-do compile } */ + +int main (void) { return 0; } + +/* { dg-final { output-exists } } */ diff --git a/gcc/testsuite/gcc.test-framework/dg-outexists-exp-XP.c b/gcc/testsuite/gcc.test-framework/dg-outexists-exp-XP.c new file mode 100644 index 00000000000..61e40ee2c82 --- /dev/null +++ b/gcc/testsuite/gcc.test-framework/dg-outexists-exp-XP.c @@ -0,0 +1,5 @@ +/* { dg-do assemble } */ + +int main (void) { return 0; } + +/* { dg-final { output-exists { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-F.c b/gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-F.c new file mode 100644 index 00000000000..f9d58ab2a3d --- /dev/null +++ b/gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-F.c @@ -0,0 +1,5 @@ +/* { dg-do link } */ + +int main (void) { return 0; } + +/* { dg-final { output-exists-not { target bogus-bogus-bogus } } } */ diff --git a/gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-P.c b/gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-P.c new file mode 100644 index 00000000000..0076752410b --- /dev/null +++ b/gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-P.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-W -Werror" } */ + +int main (void) { 0; } /* { dg-warning "no effect" } */ + +/* { dg-warning "warnings being treated as errors" "" { target *-*-* } 0 } */ +/* { dg-final { output-exists-not { target *-*-* } } } */ diff --git a/gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-XF.c b/gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-XF.c new file mode 100644 index 00000000000..818685b5c54 --- /dev/null +++ b/gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-XF.c @@ -0,0 +1,5 @@ +/* { dg-do link } */ + +int main (void) { return 0; } + +/* { dg-final { output-exists-not { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.test-framework/test-framework.awk b/gcc/testsuite/gcc.test-framework/test-framework.awk index 4c1436fe74d..daefa0ce51c 100644 --- a/gcc/testsuite/gcc.test-framework/test-framework.awk +++ b/gcc/testsuite/gcc.test-framework/test-framework.awk @@ -40,17 +40,20 @@ BEGIN { skip = 1; passes = 0; fails = 0; } /^PASS.*-2.c/ { ignore(); next } # dg-xfail-if applies to the compile step; these should be XPASS for the # compile step on dox tests, which are run tests. -/^XPASS.*dox.*xiff.*-1.c.*(test for excess errors)/ { ignore(); next } +/^XPASS.*dox.*xiff.*-1.c.*\(test for excess errors\)/ { ignore(); next } # xfail for scan-assembler-not tests doesn't apply to the compile step. -/^PASS.*sa.*-1.c.*(test for excess errors)/ { ignore(); next } +/^PASS.*sa.*-1.c.*\(test for excess errors\)/ { ignore(); next } +# ignore compile step, tests for warnings for output-exists[-not] tests. +/dg-outexists.*\(test for excess errors)/ { ignore(); next } +/dg-outexists.*\(test for warnings/ { ignore(); next } # The other dox tests pass the compile step; ignore that message. -/^PASS.*dox.*(test for excess errors)/ { ignore(); next } +/^PASS.*dox.*\(test for excess errors\)/ { ignore(); next } # The sf tests pass the compile step; ignore that message. -/^PASS.*sf.*(test for excess errors)/ { ignore(); next } +/^PASS.*sf.*\(test for excess errors\)/ { ignore(); next } # Ignore lines that begin with comma. /^,/ { ignore(); next } # For tests of dg-output, ignore successful compilation. -/^PASS.*dg-output.*(test for excess error)/ { ignore(); next } +/^PASS.*dg-output.*\(test for excess errors\)/ { ignore(); next } # For tests of dg-output, ignore successful execution. /^PASS.*dg-output.*execution test/ { ignore(); next } /^PASS/ { if (match ($0, "exp-P")) { pass(); next } } diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index 1573545db6a..2dedf3b512a 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -446,6 +446,52 @@ proc cleanup-modules { modlist } { } } +# Verify that the compiler output file exists, invoked via dg-final. +proc output-exists { args } { + # Process an optional target or xfail list. + if { [llength $args] >= 1 } { + switch [dg-process-target [lindex $args 0]] { + "S" { } + "N" { return } + "F" { setup_xfail "*-*-*" } + "P" { } + } + } + + # Access variables from gcc-dg-test-1. + upvar 2 name testcase + upvar 2 output_file output_file + + if [file exists $output_file] { + pass "$testcase output-exists $output_file" + } else { + fail "$testcase output-exists $output_file" + } +} + +# Verify that the compiler output file does not exist, invoked via dg-final. +proc output-exists-not { args } { + # Process an optional target or xfail list. + if { [llength $args] >= 1 } { + switch [dg-process-target [lindex $args 0]] { + "S" { } + "N" { return } + "F" { setup_xfail "*-*-*" } + "P" { } + } + } + + # Access variables from gcc-dg-test-1. + upvar 2 name testcase + upvar 2 output_file output_file + + if [file exists $output_file] { + fail "$testcase output-exists-not $output_file" + } else { + pass "$testcase output-exists-not $output_file" + } +} + # We need to make sure that additional_* are cleared out after every # test. It is not enough to clear them out *before* the next test run # because gcc-target-compile gets run directly from some .exp files -- 2.11.0