]> gcc.gnu.org Git - gcc.git/commitdiff
target-supports-dg.exp (current_compiler_flags): New.
authorJanis Johnson <janis187@us.ibm.com>
Wed, 7 Jan 2009 18:31:27 +0000 (18:31 +0000)
committerJanis Johnson <janis@gcc.gnu.org>
Wed, 7 Jan 2009 18:31:27 +0000 (18:31 +0000)
* lib/target-supports-dg.exp (current_compiler_flags): New.
(check-flags): Use it; do not access dg-test local variables.
(dg-skip-if): Do not access dg-test local variables.
(dg-xfail-run-if): Ditto.
(dg-shouldfail): Ditto.
* gcc.test-framework/test-framework.exp
(check_effective_target_def_nocache): New.
* gcc.test-framework/test-framework.awk: Handle scan tests.
* gcc.test-framework/dg-do-run-xrif-nocache-exp-XF.c: New test.
* gcc.test-framework/dg-error-nocache-exp-P.c: New test.
* gcc.test-framework/dg-nocache-scanasm-exp-XF.c: New test.
* gcc.test-framework/dg-warning-nocache-exp-P.c: New test.
* gcc.test-framework/dg-nocache-sif-exp-P.c: New test.
* gcc.test-framework/dg-nocache-sif-exp-U.c: New test.
* gcc.test-framework/dg-nocache-xif-exp-P.c: New test.
* gcc.test-framework/dg-do-run-sft-nocache-exp-P.c: New test.
* gcc.test-framework/dg-nocache-xif-exp-XP.c: New test.

From-SVN: r143165

13 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.test-framework/dg-do-run-sft-nocache-exp-P.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-do-run-xrif-nocache-exp-XF.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-error-nocache-exp-P.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-nocache-scanasm-exp-XF.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-P.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-U.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-P.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-XP.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/dg-warning-nocache-exp-P.c [new file with mode: 0644]
gcc/testsuite/gcc.test-framework/test-framework.awk
gcc/testsuite/gcc.test-framework/test-framework.exp
gcc/testsuite/lib/target-supports-dg.exp

index bdf4d88f5b58a9b4a59f233c6871017e7bad2660..c3e22fc7a9e9fd5227e697e01cd9ab132dfdf753 100644 (file)
@@ -1,5 +1,23 @@
 2009-01-07  Janis Johnson  <janis187@us.ibm.com>
 
+       * lib/target-supports-dg.exp (current_compiler_flags): New.
+       (check-flags): Use it; do not access dg-test local variables.
+       (dg-skip-if): Do not access dg-test local variables.
+       (dg-xfail-run-if): Ditto.
+       (dg-shouldfail): Ditto.
+       * gcc.test-framework/test-framework.exp
+       (check_effective_target_def_nocache): New.
+       * gcc.test-framework/test-framework.awk: Handle scan tests.
+       * gcc.test-framework/dg-do-run-xrif-nocache-exp-XF.c: New test.
+       * gcc.test-framework/dg-error-nocache-exp-P.c: New test.
+       * gcc.test-framework/dg-nocache-scanasm-exp-XF.c: New test.
+       * gcc.test-framework/dg-warning-nocache-exp-P.c: New test.
+       * gcc.test-framework/dg-nocache-sif-exp-P.c: New test.
+       * gcc.test-framework/dg-nocache-sif-exp-U.c: New test.
+       * gcc.test-framework/dg-nocache-xif-exp-P.c: New test.
+       * gcc.test-framework/dg-do-run-sft-nocache-exp-P.c: New test.
+       * gcc.test-framework/dg-nocache-xif-exp-XP.c: New test.
+
        * g++.dg/torture/pr38586.C: Ignore a possible warning.
 
        * lib/target-supports-dg.exp (check_test_flags): Delete.
diff --git a/gcc/testsuite/gcc.test-framework/dg-do-run-sft-nocache-exp-P.c b/gcc/testsuite/gcc.test-framework/dg-do-run-sft-nocache-exp-P.c
new file mode 100644 (file)
index 0000000..4ef0e7a
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do run } */
+/* { dg-options "-DDEFINED" } */
+/* { dg-shouldfail "comment" { def_nocache } { "*" } { "" } } */
+
+extern void abort (void);
+
+int
+main ()
+{
+    abort ();  /* We expect nonzero exit, so this passes.  */
+}
diff --git a/gcc/testsuite/gcc.test-framework/dg-do-run-xrif-nocache-exp-XF.c b/gcc/testsuite/gcc.test-framework/dg-do-run-xrif-nocache-exp-XF.c
new file mode 100644 (file)
index 0000000..dfa1792
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-options "-DDEFINED" } */
+/* { dg-xfail-run-if "comment" { def_nocache } { "*" } { "" } } */
+
+int
+main ()
+{
+  return 1;
+}
diff --git a/gcc/testsuite/gcc.test-framework/dg-error-nocache-exp-P.c b/gcc/testsuite/gcc.test-framework/dg-error-nocache-exp-P.c
new file mode 100644 (file)
index 0000000..abec81a
--- /dev/null
@@ -0,0 +1,7 @@
+/* { dg-options "-DDEFINED" } */
+
+int
+main ()
+{
+  int
+} /* { dg-error "expected" "" { target def_nocache } } */
diff --git a/gcc/testsuite/gcc.test-framework/dg-nocache-scanasm-exp-XF.c b/gcc/testsuite/gcc.test-framework/dg-nocache-scanasm-exp-XF.c
new file mode 100644 (file)
index 0000000..183fbd0
--- /dev/null
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-DDEFINED" } */
+
+int
+foo ()
+{
+  return 0;
+}
+
+/* A few examples from scanasm.exp.  */
+
+/* { dg-final { scan-assembler "whatever" { xfail def_nocache } } } */
+/* { dg-final { scan-assembler-not "foo" { xfail def_nocache } } } */
+/* { dg-final { scan-hidden "whatever" { xfail def_nocache } } } */
diff --git a/gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-P.c b/gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-P.c
new file mode 100644 (file)
index 0000000..99392e3
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-DNOT_THE_RIGHT_DEFINE" } */
+/* { dg-skip-if "comment" { def_nocache } { "*" } { "" } } */
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-U.c b/gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-U.c
new file mode 100644 (file)
index 0000000..ffaf49f
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-DDEFINED" } */
+/* { dg-skip-if "comment" { def_nocache } { "*" } { "" } } */
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-P.c b/gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-P.c
new file mode 100644 (file)
index 0000000..21e8336
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-DNOT_THE_RIGHT_DEFINE" } */
+/* { dg-xfail-if "comment" { def_nocache } { "*" } { "" } } */
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-XP.c b/gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-XP.c
new file mode 100644 (file)
index 0000000..07a55ef
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-DDEFINED" } */
+/* { dg-xfail-if "comment" { def_nocache } { "*" } { "" } } */
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.test-framework/dg-warning-nocache-exp-P.c b/gcc/testsuite/gcc.test-framework/dg-warning-nocache-exp-P.c
new file mode 100644 (file)
index 0000000..9e0ee27
--- /dev/null
@@ -0,0 +1,6 @@
+/* { dg-options "-Wall -DDEFINED" } */
+
+int
+foo ()
+{
+}  /* { dg-warning "control" "" { target def_nocache } } */
index 381d3473b0516122f5f7ff9196ed1f918f6a0b37..02537e8efb062dd05064a01073efd067e058efe7 100644 (file)
@@ -53,6 +53,8 @@ BEGIN                 { skip = 1; passes = 0; fails = 0; }
 /^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 }
+# Ignore passing compile step for scan tests.
+/^PASS.*scan.*\(test for excess errors\)/ { ignore(); next }
 # Ignore lines that begin with comma.
 /^,/                   { ignore(); next }
 # For tests of dg-output, ignore successful compilation.
index 7cbc9dbe0c0bda210e3a9b205a01fc86a88fbcd9..722e09f78b6dac10ba90c6ba32d704ae93e8874e 100644 (file)
@@ -42,6 +42,16 @@ proc check_effective_target_no { args } {
     return 0
 }
 
+proc check_effective_target_def_nocache { } {
+    return [check_no_compiler_messages_nocache def_nocache object {
+       #ifdef DEFINED
+       int dummy;
+       #else
+       #error DEFINED is not defined
+       #endif
+    } [current_compiler_flags]]
+}
+
 global dg-do-what-default
 set save-dg-do-what-default ${dg-do-what-default}
 set dg-do-what-default compile
index 655af3e834c8323ac3600a81d046ce1485350962..321daac323906302c70f0421a64796da477129c7 100644 (file)
@@ -1,4 +1,4 @@
-#   Copyright (C) 1997, 1999, 2000, 2003, 2004, 2005, 2007
+#   Copyright (C) 1997, 1999, 2000, 2003, 2004, 2005, 2007, 2009
 #   Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # along with GCC; see the file COPYING3.  If not see
 # <http://www.gnu.org/licenses/>.
 
+# DejaGnu's dg-test defines extra flags that are used to compile a test.
+# Access them for directives that need to examine all options that are
+# used for a test, including checks for non-cached effective targets.
+# We don't know how far up the call chain it is but we know we'll hit
+# it eventually, and that we're at least 3 calls down.
+
+proc current_compiler_flags { } {
+    set frames 2
+    while { ![info exists flags1] } {
+       set frames [expr $frames + 1]
+       upvar $frames dg-extra-tool-flags flags1
+    }
+    upvar $frames tool_flags flags2
+    return "$flags1 $flags2"
+}
+
 # If this target does not support weak symbols, skip this test.
 
 proc dg-require-weak { args } {
@@ -189,9 +205,6 @@ proc dg-add-options { args } {
 proc check-flags { args } {
     global compiler_flags
     global TOOL_OPTIONS
-    # These variables are from DejaGnu's dg-test.
-    upvar dg-extra-tool-flags extra_tool_flags
-    upvar tool_flags tool_flags
 
     # The args are within another list; pull them out.
     set args [lindex $args 0]
@@ -199,8 +212,7 @@ proc check-flags { args } {
     # Start the list with a dummy tool name so the list will match "*"
     # if there are no flags.
     set compiler_flags " toolname "
-    append compiler_flags $extra_tool_flags
-    append compiler_flags $tool_flags
+    append compiler_flags [current_compiler_flags]
     # If running a subset of the test suite, $TOOL_OPTIONS may not exist.
     catch {append compiler_flags " $TOOL_OPTIONS "}
     set dest [target_info name]
@@ -239,10 +251,6 @@ proc dg-skip-if { args } {
 
     set selector [list target [lindex $args 1]]
     if { [dg-process-target $selector] == "S" } {
-       # These are defined in DejaGnu's dg-test, needed by check-flags.
-       upvar dg-extra-tool-flags dg-extra-tool-flags
-       upvar tool_flags tool_flags
-
        if [check-flags $args] {
            upvar dg-do-what dg-do-what
             set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
@@ -280,10 +288,6 @@ proc dg-xfail-run-if { args } {
 
     set selector [list target [lindex $args 1]]
     if { [dg-process-target $selector] == "S" } {
-       # These are defined in DejaGnu's dg-test, needed by check-flags.
-       upvar dg-extra-tool-flags dg-extra-tool-flags
-       upvar tool_flags tool_flags
-
        if [check-flags $args] {
            upvar dg-do-what dg-do-what
             set dg-do-what [list [lindex ${dg-do-what} 0] "S" "F"]
@@ -308,11 +312,7 @@ proc dg-shouldfail { args } {
     if { [llength $args] > 1 } {
        set selector [list target [lindex $args 1]]
        if { [dg-process-target $selector] == "S" } {
-           # The target matches, now check the flags.  These variables
-           # are defined in DejaGnu's dg-test, needed by check-flags.
-           upvar dg-extra-tool-flags dg-extra-tool-flags
-           upvar tool_flags tool_flags
-
+           # The target matches, now check the flags.
            if [check-flags $args] {
                set shouldfail 1
            }
This page took 0.11913 seconds and 5 git commands to generate.