mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-01 07:44:05 +08:00
target-supports-dg.exp (current_compiler_flags): New.
* 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
This commit is contained in:
parent
301b6a4efe
commit
30af0edbf4
@ -1,5 +1,23 @@
|
|||||||
2009-01-07 Janis Johnson <janis187@us.ibm.com>
|
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.
|
* g++.dg/torture/pr38586.C: Ignore a possible warning.
|
||||||
|
|
||||||
* lib/target-supports-dg.exp (check_test_flags): Delete.
|
* lib/target-supports-dg.exp (check_test_flags): Delete.
|
||||||
|
@ -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. */
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
/* { dg-do run } */
|
||||||
|
/* { dg-options "-DDEFINED" } */
|
||||||
|
/* { dg-xfail-run-if "comment" { def_nocache } { "*" } { "" } } */
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
/* { dg-options "-DDEFINED" } */
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
int
|
||||||
|
} /* { dg-error "expected" "" { target def_nocache } } */
|
14
gcc/testsuite/gcc.test-framework/dg-nocache-scanasm-exp-XF.c
Normal file
14
gcc/testsuite/gcc.test-framework/dg-nocache-scanasm-exp-XF.c
Normal file
@ -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 } } } */
|
9
gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-P.c
Normal file
9
gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-P.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-DNOT_THE_RIGHT_DEFINE" } */
|
||||||
|
/* { dg-skip-if "comment" { def_nocache } { "*" } { "" } } */
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
9
gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-U.c
Normal file
9
gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-U.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-DDEFINED" } */
|
||||||
|
/* { dg-skip-if "comment" { def_nocache } { "*" } { "" } } */
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
9
gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-P.c
Normal file
9
gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-P.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-DNOT_THE_RIGHT_DEFINE" } */
|
||||||
|
/* { dg-xfail-if "comment" { def_nocache } { "*" } { "" } } */
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
9
gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-XP.c
Normal file
9
gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-XP.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-DDEFINED" } */
|
||||||
|
/* { dg-xfail-if "comment" { def_nocache } { "*" } { "" } } */
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
/* { dg-options "-Wall -DDEFINED" } */
|
||||||
|
|
||||||
|
int
|
||||||
|
foo ()
|
||||||
|
{
|
||||||
|
} /* { dg-warning "control" "" { target def_nocache } } */
|
@ -53,6 +53,8 @@ BEGIN { skip = 1; passes = 0; fails = 0; }
|
|||||||
/^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.
|
# 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 passing compile step for scan tests.
|
||||||
|
/^PASS.*scan.*\(test for excess errors\)/ { ignore(); next }
|
||||||
# Ignore lines that begin with comma.
|
# Ignore lines that begin with comma.
|
||||||
/^,/ { ignore(); next }
|
/^,/ { ignore(); next }
|
||||||
# For tests of dg-output, ignore successful compilation.
|
# For tests of dg-output, ignore successful compilation.
|
||||||
|
@ -42,6 +42,16 @@ proc check_effective_target_no { args } {
|
|||||||
return 0
|
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
|
global dg-do-what-default
|
||||||
set save-dg-do-what-default ${dg-do-what-default}
|
set save-dg-do-what-default ${dg-do-what-default}
|
||||||
set dg-do-what-default compile
|
set dg-do-what-default compile
|
||||||
|
@ -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.
|
# Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
@ -15,6 +15,22 @@
|
|||||||
# along with GCC; see the file COPYING3. If not see
|
# along with GCC; see the file COPYING3. If not see
|
||||||
# <http://www.gnu.org/licenses/>.
|
# <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.
|
# If this target does not support weak symbols, skip this test.
|
||||||
|
|
||||||
proc dg-require-weak { args } {
|
proc dg-require-weak { args } {
|
||||||
@ -189,9 +205,6 @@ proc dg-add-options { args } {
|
|||||||
proc check-flags { args } {
|
proc check-flags { args } {
|
||||||
global compiler_flags
|
global compiler_flags
|
||||||
global TOOL_OPTIONS
|
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.
|
# The args are within another list; pull them out.
|
||||||
set args [lindex $args 0]
|
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 "*"
|
# Start the list with a dummy tool name so the list will match "*"
|
||||||
# if there are no flags.
|
# if there are no flags.
|
||||||
set compiler_flags " toolname "
|
set compiler_flags " toolname "
|
||||||
append compiler_flags $extra_tool_flags
|
append compiler_flags [current_compiler_flags]
|
||||||
append compiler_flags $tool_flags
|
|
||||||
# If running a subset of the test suite, $TOOL_OPTIONS may not exist.
|
# If running a subset of the test suite, $TOOL_OPTIONS may not exist.
|
||||||
catch {append compiler_flags " $TOOL_OPTIONS "}
|
catch {append compiler_flags " $TOOL_OPTIONS "}
|
||||||
set dest [target_info name]
|
set dest [target_info name]
|
||||||
@ -239,10 +251,6 @@ proc dg-skip-if { args } {
|
|||||||
|
|
||||||
set selector [list target [lindex $args 1]]
|
set selector [list target [lindex $args 1]]
|
||||||
if { [dg-process-target $selector] == "S" } {
|
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] {
|
if [check-flags $args] {
|
||||||
upvar dg-do-what dg-do-what
|
upvar dg-do-what dg-do-what
|
||||||
set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
|
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]]
|
set selector [list target [lindex $args 1]]
|
||||||
if { [dg-process-target $selector] == "S" } {
|
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] {
|
if [check-flags $args] {
|
||||||
upvar dg-do-what dg-do-what
|
upvar dg-do-what dg-do-what
|
||||||
set dg-do-what [list [lindex ${dg-do-what} 0] "S" "F"]
|
set dg-do-what [list [lindex ${dg-do-what} 0] "S" "F"]
|
||||||
@ -308,11 +312,7 @@ proc dg-shouldfail { args } {
|
|||||||
if { [llength $args] > 1 } {
|
if { [llength $args] > 1 } {
|
||||||
set selector [list target [lindex $args 1]]
|
set selector [list target [lindex $args 1]]
|
||||||
if { [dg-process-target $selector] == "S" } {
|
if { [dg-process-target $selector] == "S" } {
|
||||||
# The target matches, now check the flags. These variables
|
# The target matches, now check the flags.
|
||||||
# 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] {
|
if [check-flags $args] {
|
||||||
set shouldfail 1
|
set shouldfail 1
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user