linux/tools/perf/tests/clang.c
<<
>>
Prefs
   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