// 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 
 |