aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/c++/clang-test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/c++/clang-test.cpp')
-rw-r--r--tools/perf/util/c++/clang-test.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/tools/perf/util/c++/clang-test.cpp b/tools/perf/util/c++/clang-test.cpp
index 0f484fbb2b58..d84e760d2aab 100644
--- a/tools/perf/util/c++/clang-test.cpp
+++ b/tools/perf/util/c++/clang-test.cpp
@@ -3,6 +3,10 @@
3#include "llvm/IR/Function.h" 3#include "llvm/IR/Function.h"
4#include "llvm/IR/LLVMContext.h" 4#include "llvm/IR/LLVMContext.h"
5 5
6#include <util-cxx.h>
7#include <tests/llvm.h>
8#include <string>
9
6class perf_clang_scope { 10class perf_clang_scope {
7public: 11public:
8 explicit perf_clang_scope() {perf_clang__init();} 12 explicit perf_clang_scope() {perf_clang__init();}
@@ -14,17 +18,24 @@ extern "C" {
14int test__clang_to_IR(void) 18int test__clang_to_IR(void)
15{ 19{
16 perf_clang_scope _scope; 20 perf_clang_scope _scope;
21 unsigned int kernel_version;
22
23 if (fetch_kernel_version(&kernel_version, NULL, 0))
24 return -1;
25
26 std::string cflag_kver("-DLINUX_VERSION_CODE=" +
27 std::to_string(kernel_version));
17 28
18 std::unique_ptr<llvm::Module> M = 29 std::unique_ptr<llvm::Module> M =
19 perf::getModuleFromSource({"-DRESULT=1"}, 30 perf::getModuleFromSource({cflag_kver.c_str()},
20 "perf-test.c", 31 "perf-test.c",
21 "int myfunc(void) {return RESULT;}"); 32 test_llvm__bpf_base_prog);
22 33
23 if (!M) 34 if (!M)
24 return -1; 35 return -1;
25 36
26 for (llvm::Function& F : *M) 37 for (llvm::Function& F : *M)
27 if (F.getName() == "myfunc") 38 if (F.getName() == "bpf_func__SyS_epoll_wait")
28 return 0; 39 return 0;
29 return -1; 40 return -1;
30} 41}