• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SPDX-License-Identifier: GPL-2.0
2 #include "tests.h"
3 #include "c++/clang-c.h"
4 #include <linux/kernel.h>
5 
6 static struct {
7 	int (*func)(void);
8 	const char *desc;
9 } clang_testcase_table[] = {
10 #ifdef HAVE_LIBCLANGLLVM_SUPPORT
11 	{
12 		.func = test__clang_to_IR,
13 		.desc = "builtin clang compile C source to IR",
14 	},
15 	{
16 		.func = test__clang_to_obj,
17 		.desc = "builtin clang compile C source to ELF object",
18 	},
19 #endif
20 };
21 
test__clang_subtest_get_nr(void)22 int test__clang_subtest_get_nr(void)
23 {
24 	return (int)ARRAY_SIZE(clang_testcase_table);
25 }
26 
test__clang_subtest_get_desc(int i)27 const char *test__clang_subtest_get_desc(int i)
28 {
29 	if (i < 0 || i >= (int)ARRAY_SIZE(clang_testcase_table))
30 		return NULL;
31 	return clang_testcase_table[i].desc;
32 }
33 
34 #ifndef HAVE_LIBCLANGLLVM_SUPPORT
test__clang(struct test * test __maybe_unused,int i __maybe_unused)35 int test__clang(struct test *test __maybe_unused, int i __maybe_unused)
36 {
37 	return TEST_SKIP;
38 }
39 #else
test__clang(struct test * test __maybe_unused,int i)40 int test__clang(struct test *test __maybe_unused, int i)
41 {
42 	if (i < 0 || i >= (int)ARRAY_SIZE(clang_testcase_table))
43 		return TEST_FAIL;
44 	return clang_testcase_table[i].func();
45 }
46 #endif
47