| // SPDX-License-Identifier: GPL-2.0 | 
 | #include "tests.h" | 
 | #include "debug.h" | 
 | #include "util.h" | 
 | #include "c++/clang-c.h" | 
 | #include <linux/kernel.h> | 
 |  | 
 | static struct { | 
 | 	int (*func)(void); | 
 | 	const char *desc; | 
 | } clang_testcase_table[] = { | 
 | #ifdef HAVE_LIBCLANGLLVM_SUPPORT | 
 | 	{ | 
 | 		.func = test__clang_to_IR, | 
 | 		.desc = "builtin clang compile C source to IR", | 
 | 	}, | 
 | 	{ | 
 | 		.func = test__clang_to_obj, | 
 | 		.desc = "builtin clang compile C source to ELF object", | 
 | 	}, | 
 | #endif | 
 | }; | 
 |  | 
 | int test__clang_subtest_get_nr(void) | 
 | { | 
 | 	return (int)ARRAY_SIZE(clang_testcase_table); | 
 | } | 
 |  | 
 | const char *test__clang_subtest_get_desc(int i) | 
 | { | 
 | 	if (i < 0 || i >= (int)ARRAY_SIZE(clang_testcase_table)) | 
 | 		return NULL; | 
 | 	return clang_testcase_table[i].desc; | 
 | } | 
 |  | 
 | #ifndef HAVE_LIBCLANGLLVM_SUPPORT | 
 | int test__clang(struct test *test __maybe_unused, int i __maybe_unused) | 
 | { | 
 | 	return TEST_SKIP; | 
 | } | 
 | #else | 
 | int test__clang(struct test *test __maybe_unused, int i) | 
 | { | 
 | 	if (i < 0 || i >= (int)ARRAY_SIZE(clang_testcase_table)) | 
 | 		return TEST_FAIL; | 
 | 	return clang_testcase_table[i].func(); | 
 | } | 
 | #endif |