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