1// SPDX-License-Identifier: GPL-2.0 2#include "tests.h" 3#include "c++/clang-c.h" 4#include <linux/kernel.h> 5 6static 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 22int test__clang_subtest_get_nr(void) 23{ 24 return (int)ARRAY_SIZE(clang_testcase_table); 25} 26 27const 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 35int test__clang(struct test *test __maybe_unused, int i __maybe_unused) 36{ 37 return TEST_SKIP; 38} 39#else 40int 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