aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/jit.dg
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2017-01-18 20:47:12 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2017-01-18 20:47:12 +0000
commit551914b748a9bafe51ed7192c3e7b3d4366211bb (patch)
tree117c77e302da4a098308991869e1843bde1be954 /gcc/testsuite/jit.dg
parentf8a94453adfa8ccf1243c5a388e8bdb12e5decb4 (diff)
downloadgcc-551914b748a9bafe51ed7192c3e7b3d4366211bb.zip
gcc-551914b748a9bafe51ed7192c3e7b3d4366211bb.tar.gz
gcc-551914b748a9bafe51ed7192c3e7b3d4366211bb.tar.bz2
jit.dg: fix issue with compilation of test-threads.c
DejaGnu's <dejagnu.h> provides decls of various inline functions, of which the jit testsuite uses "pass", "fail" and "note". The jit testcase test-threads.c jumps through some hoops to make these functions threadsafe, using macros to rename the implementation in dejagnu.h, giving them a "dejagnu_" prefix, then reimplementing the names with wrappers that use a mutex. The DejaGnu functions gained a "static" modifier in ad36659ffa984a0541cfc2bd27f393e0d7d173a7, which appears to be in DejaGnu 1.5.2 onwards. Unfortunately, jit.dg/test-threads.c has forward decls of "dejagnu_pass" etc, and these don't have "static", leading to conflicts with later versions of DejaGnu for which "pass" etc have "static". This patch fixes things by removing the forward decls of "dejagnu_pass", moving the usage of them to a point at which dejagnu.h has been included, which ought to work with both earlier and later versions of DejaGnu. Fixes compilation of test-threads.c in jit testsuite. gcc/testsuite/ChangeLog: * jit.dg/test-threads.c (dejagnu_pass): Remove decl. (dejagnu_fail): Likewise. (dejagnu_note): Likewise. (pass): Provide forward decl, moving true decl to after #include of harness.h. (fail): Likewise. (note): Likewise. From-SVN: r244597
Diffstat (limited to 'gcc/testsuite/jit.dg')
-rw-r--r--gcc/testsuite/jit.dg/test-threads.c51
1 files changed, 29 insertions, 22 deletions
diff --git a/gcc/testsuite/jit.dg/test-threads.c b/gcc/testsuite/jit.dg/test-threads.c
index d4e53b2..03fea57 100644
--- a/gcc/testsuite/jit.dg/test-threads.c
+++ b/gcc/testsuite/jit.dg/test-threads.c
@@ -20,9 +20,35 @@ static pthread_mutex_t dg_mutex = PTHREAD_MUTEX_INITIALIZER;
harness.h injects macros before including <dejagnu.h> so that the
pass/fail functions become "dejagnu_pass"/"dejagnu_fail" etc. */
-void dejagnu_pass (const char* fmt, ...);
-void dejagnu_fail (const char* fmt, ...);
-void dejagnu_note (const char* fmt, ...);
+/* Forward decls of our implementations of pass/fail/note. */
+
+inline void
+pass (const char* fmt, ...);
+
+inline void
+fail (const char* fmt, ...);
+
+inline void
+note (const char* fmt, ...);
+
+#define MAKE_DEJAGNU_H_THREADSAFE
+
+/* We also need to provide our own version of TEST_NAME. */
+#define TEST_NAME
+
+/* We can now include all of the relevant selftests. */
+
+#include "all-non-failing-tests.h"
+
+#define TEST_PROVIDES_MAIN
+#define TEST_ESCHEWS_TEST_JIT
+
+/* Now construct a test case from all the other test cases.
+
+ We undefine COMBINED_TEST so that we can now include harness.h
+ "for real". */
+#undef COMBINED_TEST
+#include "harness.h"
/* We now provide our own implementations of "pass"/"fail"/"note", which
call the underlying dejagnu implementations, but with a mutex. */
@@ -72,25 +98,6 @@ note (const char* fmt, ...)
pthread_mutex_unlock (&dg_mutex);
}
-#define MAKE_DEJAGNU_H_THREADSAFE
-
-/* We also need to provide our own version of TEST_NAME. */
-#define TEST_NAME
-
-/* We can now include all of the relevant selftests. */
-
-#include "all-non-failing-tests.h"
-
-#define TEST_PROVIDES_MAIN
-#define TEST_ESCHEWS_TEST_JIT
-
-/* Now construct a test case from all the other test cases.
-
- We undefine COMBINED_TEST so that we can now include harness.h
- "for real". */
-#undef COMBINED_TEST
-#include "harness.h"
-
struct thread_data
{
pthread_t m_tid;