clang-test.cpp 833 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "clang.h"
  2. #include "clang-c.h"
  3. #include "llvm/IR/Function.h"
  4. #include "llvm/IR/LLVMContext.h"
  5. #include <util-cxx.h>
  6. #include <tests/llvm.h>
  7. #include <string>
  8. class perf_clang_scope {
  9. public:
  10. explicit perf_clang_scope() {perf_clang__init();}
  11. ~perf_clang_scope() {perf_clang__cleanup();}
  12. };
  13. extern "C" {
  14. int test__clang_to_IR(void)
  15. {
  16. perf_clang_scope _scope;
  17. unsigned int kernel_version;
  18. if (fetch_kernel_version(&kernel_version, NULL, 0))
  19. return -1;
  20. std::string cflag_kver("-DLINUX_VERSION_CODE=" +
  21. std::to_string(kernel_version));
  22. std::unique_ptr<llvm::Module> M =
  23. perf::getModuleFromSource({cflag_kver.c_str()},
  24. "perf-test.c",
  25. test_llvm__bpf_base_prog);
  26. if (!M)
  27. return -1;
  28. for (llvm::Function& F : *M)
  29. if (F.getName() == "bpf_func__SyS_epoll_wait")
  30. return 0;
  31. return -1;
  32. }
  33. }