blob: c5bb2203f5a90850564397998a8af4b8cb3bfbc1 [file] [log] [blame]
Wang Nan00b86692016-11-26 07:03:34 +00001#include "tests.h"
2#include "debug.h"
3#include "util.h"
4#include "c++/clang-c.h"
Arnaldo Carvalho de Melo877a7a12017-04-17 11:39:06 -03005#include <linux/kernel.h>
Wang Nan00b86692016-11-26 07:03:34 +00006
7static struct {
8 int (*func)(void);
9 const char *desc;
10} clang_testcase_table[] = {
11#ifdef HAVE_LIBCLANGLLVM_SUPPORT
12 {
13 .func = test__clang_to_IR,
14 .desc = "builtin clang compile C source to IR",
15 },
Wang Nan5e08a762016-11-26 07:03:38 +000016 {
17 .func = test__clang_to_obj,
18 .desc = "builtin clang compile C source to ELF object",
19 },
Wang Nan00b86692016-11-26 07:03:34 +000020#endif
21};
22
23int test__clang_subtest_get_nr(void)
24{
25 return (int)ARRAY_SIZE(clang_testcase_table);
26}
27
28const char *test__clang_subtest_get_desc(int i)
29{
30 if (i < 0 || i >= (int)ARRAY_SIZE(clang_testcase_table))
31 return NULL;
32 return clang_testcase_table[i].desc;
33}
34
35#ifndef HAVE_LIBCLANGLLVM_SUPPORT
36int test__clang(int i __maybe_unused)
37{
38 return TEST_SKIP;
39}
40#else
Wang Nan5e08a762016-11-26 07:03:38 +000041int test__clang(int i)
Wang Nan00b86692016-11-26 07:03:34 +000042{
43 if (i < 0 || i >= (int)ARRAY_SIZE(clang_testcase_table))
44 return TEST_FAIL;
45 return clang_testcase_table[i].func();
46}
47#endif