diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2016-02-14 06:39:11 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2016-02-14 06:39:11 +0000 |
commit | 6fdcb9c5907f4b1c6d5a554b3e063089e8f3639f (patch) | |
tree | c66af6f676f52291c6a739e89c2defb3bfd0377c /clang/tools/c-index-test/c-index-test.c | |
parent | 469c1367f1e1b3edfd314c18a233ef6800b727d7 (diff) | |
download | bcm5719-llvm-6fdcb9c5907f4b1c6d5a554b3e063089e8f3639f.tar.gz bcm5719-llvm-6fdcb9c5907f4b1c6d5a554b3e063089e8f3639f.zip |
[index] Enhance c-index-test tool and have it link and test the clangIndex library directly.
llvm-svn: 260842
Diffstat (limited to 'clang/tools/c-index-test/c-index-test.c')
-rw-r--r-- | clang/tools/c-index-test/c-index-test.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c index b2f9120baf9..a67afb7cfa8 100644 --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/tools/c-index-test/c-index-test.c @@ -23,6 +23,8 @@ # include <unistd.h> #endif +extern int indextest_core_main(int argc, const char **argv); + /******************************************************************************/ /* Utility functions. */ /******************************************************************************/ @@ -4410,13 +4412,15 @@ int cindextest_main(int argc, const char **argv) { * size). */ typedef struct thread_info { + int (*main_func)(int argc, const char **argv); int argc; const char **argv; int result; } thread_info; void thread_runner(void *client_data_v) { thread_info *client_data = client_data_v; - client_data->result = cindextest_main(client_data->argc, client_data->argv); + client_data->result = client_data->main_func(client_data->argc, + client_data->argv); } static void flush_atexit(void) { @@ -4435,11 +4439,19 @@ int main(int argc, const char **argv) { LIBXML_TEST_VERSION #endif - if (getenv("CINDEXTEST_NOTHREADS")) - return cindextest_main(argc, argv); - + client_data.main_func = cindextest_main; client_data.argc = argc; client_data.argv = argv; + + if (argc > 1 && strcmp(argv[1], "core") == 0) { + client_data.main_func = indextest_core_main; + --client_data.argc; + ++client_data.argv; + } + + if (getenv("CINDEXTEST_NOTHREADS")) + return client_data.main_func(client_data.argc, client_data.argv); + clang_executeOnThread(thread_runner, &client_data, 0); return client_data.result; } |