Introduce selftest::locate_file
gcc/ChangeLog: * Makefile.in (SELFTEST_FLAGS): Add path argument to -fself-test. (s-selftest): Add dependency on the selftests data directory. * common.opt (fself-test): Rename to... (fself-test=): ...this, documenting the meaning of the argument. * selftest-run-tests.c (along): Likewise. * selftest-run-tests.c: Include "options.h". (selftest::run_tests): Initialize selftest::path_to_selftest_files from flag_self_test. * selftest.c (selftest::path_to_selftest_files): New global. (selftest::locate_file): New function. (selftest::test_locate_file): New function. (selftest_c_tests): Likewise. (selftest::selftest_c_tests): Call test_locate_file. * selftest.h (selftest::locate_file): New decl. (selftest::path_to_selftest_files): New decl. gcc/testsuite/ChangeLog: PR target/78213 * gcc.dg/cpp/pr71591.c: Add a fake value for the argument of -fself-test. * gcc.dg/pr78213.c: Disable this test. * selftests/example.txt: New file. From-SVN: r243681
This commit is contained in:
parent
e98ac2584c
commit
ecfc21ff34
@ -1,3 +1,21 @@
|
||||
2016-12-14 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* Makefile.in (SELFTEST_FLAGS): Add path argument to -fself-test.
|
||||
(s-selftest): Add dependency on the selftests data directory.
|
||||
* common.opt (fself-test): Rename to...
|
||||
(fself-test=): ...this, documenting the meaning of the argument.
|
||||
* selftest-run-tests.c (along): Likewise.
|
||||
* selftest-run-tests.c: Include "options.h".
|
||||
(selftest::run_tests): Initialize selftest::path_to_selftest_files
|
||||
from flag_self_test.
|
||||
* selftest.c (selftest::path_to_selftest_files): New global.
|
||||
(selftest::locate_file): New function.
|
||||
(selftest::test_locate_file): New function.
|
||||
(selftest_c_tests): Likewise.
|
||||
(selftest::selftest_c_tests): Call test_locate_file.
|
||||
* selftest.h (selftest::locate_file): New decl.
|
||||
(selftest::path_to_selftest_files): New decl.
|
||||
|
||||
2016-12-14 Andrew Pinski <apinski@cavium.com>
|
||||
|
||||
* config/aarch64/aarch64-cores.def: Add -1 as the variant to all
|
||||
|
@ -1896,15 +1896,19 @@ rest.cross: specs
|
||||
# Specify -o /dev/null so the output of -S is discarded. More importantly
|
||||
# It does not try to create a file with the name "null.s" on POSIX and
|
||||
# "nul.s" on Windows. Because on Windows "nul" is a reserved file name.
|
||||
SELFTEST_FLAGS = -nostdinc -x c /dev/null -S -fself-test -o /dev/null
|
||||
# Specify the path to gcc/testsuite/selftests within the srcdir
|
||||
# as an argument to -fself-test.
|
||||
SELFTEST_FLAGS = -nostdinc -x c /dev/null -S -o /dev/null \
|
||||
-fself-test=$(srcdir)/testsuite/selftests
|
||||
|
||||
# Run the selftests during the build once we have a driver and a cc1,
|
||||
# so that self-test failures are caught as early as possible.
|
||||
# Use "s-selftest" to ensure that we only run the selftests if the
|
||||
# driver or cc1 change.
|
||||
# driver, cc1, or selftest data change.
|
||||
.PHONY: selftest
|
||||
selftest: s-selftest
|
||||
s-selftest: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs
|
||||
s-selftest: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs \
|
||||
$(srcdir)/testsuite/selftests
|
||||
$(GCC_FOR_TARGET) $(SELFTEST_FLAGS)
|
||||
$(STAMP) $@
|
||||
|
||||
|
@ -2152,9 +2152,9 @@ fselective-scheduling2
|
||||
Common Report Var(flag_selective_scheduling2) Optimization
|
||||
Run selective scheduling after reload.
|
||||
|
||||
fself-test
|
||||
Common Undocumented Var(flag_self_test)
|
||||
Run self-tests.
|
||||
fself-test=
|
||||
Common Undocumented Joined Var(flag_self_test)
|
||||
Run self-tests, using the given path to locate test files.
|
||||
|
||||
fsel-sched-pipelining
|
||||
Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
|
||||
|
@ -24,6 +24,7 @@ along with GCC; see the file COPYING3. If not see
|
||||
#include "tree.h"
|
||||
#include "target.h"
|
||||
#include "langhooks.h"
|
||||
#include "options.h"
|
||||
|
||||
/* This function needed to be split out from selftest.c as it references
|
||||
tests from the whole source tree, and so is within
|
||||
@ -38,6 +39,13 @@ along with GCC; see the file COPYING3. If not see
|
||||
void
|
||||
selftest::run_tests ()
|
||||
{
|
||||
/* Makefile.in has -fself-test=$(srcdir)/testsuite/selftests, so that
|
||||
flag_self_test contains the path to the selftest subdirectory of the
|
||||
source tree (without a trailing slash). Copy it up to
|
||||
path_to_selftest_files, to avoid selftest.c depending on
|
||||
option-handling. */
|
||||
path_to_selftest_files = flag_self_test;
|
||||
|
||||
long start_time = get_run_time ();
|
||||
|
||||
/* Run all the tests, in hand-coded order of (approximate) dependencies:
|
||||
|
@ -198,6 +198,21 @@ read_file (const location &loc, const char *path)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* The path of SRCDIR/testsuite/selftests. */
|
||||
|
||||
const char *path_to_selftest_files = NULL;
|
||||
|
||||
/* Convert a path relative to SRCDIR/testsuite/selftests
|
||||
to a real path (either absolute, or relative to pwd).
|
||||
The result should be freed by the caller. */
|
||||
|
||||
char *
|
||||
locate_file (const char *name)
|
||||
{
|
||||
ASSERT_NE (NULL, path_to_selftest_files);
|
||||
return concat (path_to_selftest_files, "/", name, NULL);
|
||||
}
|
||||
|
||||
/* Selftests for libiberty. */
|
||||
|
||||
/* Verify that xstrndup generates EXPECTED when called on SRC and N. */
|
||||
@ -281,6 +296,18 @@ test_read_file ()
|
||||
free (buf);
|
||||
}
|
||||
|
||||
/* Verify locate_file (and read_file). */
|
||||
|
||||
static void
|
||||
test_locate_file ()
|
||||
{
|
||||
char *path = locate_file ("example.txt");
|
||||
char *buf = read_file (SELFTEST_LOCATION, path);
|
||||
ASSERT_STREQ ("example of a selftest file\n", buf);
|
||||
free (buf);
|
||||
free (path);
|
||||
}
|
||||
|
||||
/* Run all of the selftests within this file. */
|
||||
|
||||
void
|
||||
@ -290,6 +317,7 @@ selftest_c_tests ()
|
||||
test_assertions ();
|
||||
test_named_temp_file ();
|
||||
test_read_file ();
|
||||
test_locate_file ();
|
||||
}
|
||||
|
||||
} // namespace selftest
|
||||
|
@ -158,6 +158,16 @@ extern char *read_file (const location &loc, const char *path);
|
||||
|
||||
extern void forcibly_ggc_collect ();
|
||||
|
||||
/* Convert a path relative to SRCDIR/gcc/testsuite/selftests
|
||||
to a real path (either absolute, or relative to pwd).
|
||||
The result should be freed by the caller. */
|
||||
|
||||
extern char *locate_file (const char *path);
|
||||
|
||||
/* The path of SRCDIR/testsuite/selftests. */
|
||||
|
||||
extern const char *path_to_selftest_files;
|
||||
|
||||
/* Declarations for specific families of tests (by source file), in
|
||||
alphabetical order. */
|
||||
extern void bitmap_c_tests ();
|
||||
|
@ -1,3 +1,11 @@
|
||||
2016-12-14 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
PR target/78213
|
||||
* gcc.dg/cpp/pr71591.c: Add a fake value for the argument of
|
||||
-fself-test.
|
||||
* gcc.dg/pr78213.c: Disable this test.
|
||||
* selftests/example.txt: New file.
|
||||
|
||||
2016-12-14 Martin Sebor <msebor@redhat.com>
|
||||
|
||||
PR middle-end/78786
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* PR rtl-optimization/71591 */
|
||||
/* { dg-do preprocess } */
|
||||
/* { dg-options "-fself-test" } */
|
||||
/* { dg-options "-fself-test=fake-value" } */
|
||||
|
||||
/* { dg-message "self-tests incompatible with -E" "" { target *-*-* } 0 } */
|
||||
|
@ -1,6 +1,13 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-fself-test" } */
|
||||
|
||||
/* When this test was written -fself-test took no argument, but it
|
||||
has subsequently gained a mandatory argument, giving the path
|
||||
to selftest support files (within the srcdir).
|
||||
It's not clear how to provide this path sanely from
|
||||
within DejaGnu, so for now, this test is disabled. */
|
||||
/* { dg-skip-if "" { *-*-* } } */
|
||||
|
||||
/* Verify that -fself-test does not fail on a non empty source. */
|
||||
|
||||
int i; void bar(); void foo()
|
||||
|
1
gcc/testsuite/selftests/example.txt
Normal file
1
gcc/testsuite/selftests/example.txt
Normal file
@ -0,0 +1 @@
|
||||
example of a selftest file
|
Loading…
x
Reference in New Issue
Block a user