sourcebuild.texi (Test Directives): Add output-exists and output-exists-not.
authorJanis Johnson <janis187@us.ibm.com>
Tue, 7 Nov 2006 00:08:32 +0000 (00:08 +0000)
committerJanis Johnson <janis@gcc.gnu.org>
Tue, 7 Nov 2006 00:08:32 +0000 (00:08 +0000)
gcc/

2006-11-06  Janis Johnson  <janis187@us.ibm.com>

* gcc/doc/sourcebuild.texi (Test Directives): Add output-exists
and output-exists-not.

gcc/testsuite/

2006-11-06  Janis Johnson  <janis187@us.ibm.com
    Bernhard Fischer  <aldot@gcc.gnu.org>

* 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.

From-SVN: r118531

gcc/ChangeLog
gcc/doc/sourcebuild.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.test-framework/dg-outexists-exp-F.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-outexists-exp-P.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-outexists-exp-XP.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-F.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-P.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-outexistsnot-exp-XF.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/test-framework.awk
gcc/testsuite/lib/gcc-dg.exp

index fcc7ce3..165e037 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-06  Janis Johnson  <janis187@us.ibm.com>
+
+       * gcc/doc/sourcebuild.texi (Test Directives): Add output-exists
+       and output-exists-not.
+
 2006-11-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
 
        PR tree-opt/29439
index 3162a02..a2661fe 100644 (file)
@@ -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.
 
index ae0c6e4..f9baa74 100644 (file)
@@ -1,3 +1,16 @@
+2006-11-06  Janis Johnson  <janis187@us.ibm.com
+           Bernhard Fischer  <aldot@gcc.gnu.org>
+
+       * 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  <eedelman@gcc.gnu.org>
 
        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 (file)
index 0000000..397ec68
--- /dev/null
@@ -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 (file)
index 0000000..04ed266
--- /dev/null
@@ -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 (file)
index 0000000..61e40ee
--- /dev/null
@@ -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 (file)
index 0000000..f9d58ab
--- /dev/null
@@ -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 (file)
index 0000000..0076752
--- /dev/null
@@ -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 (file)
index 0000000..818685b
--- /dev/null
@@ -0,0 +1,5 @@
+/* { dg-do link } */
+
+int main (void) { return 0; }
+
+/* { dg-final { output-exists-not { xfail *-*-* } } } */
index 4c1436f..daefa0c 100644 (file)
@@ -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 } }
index 1573545..2dedf3b 100644 (file)
@@ -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