diff --git a/src/llvm-api.cpp b/src/llvm-api.cpp index 03fc39cf091a1..1ec13fca7918d 100644 --- a/src/llvm-api.cpp +++ b/src/llvm-api.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -24,6 +25,7 @@ #include #include #include +#include #include "julia.h" @@ -208,6 +210,28 @@ extern "C" JL_DLLEXPORT void LLVMExtraAddInternalizePassWithExportList( unwrap(PM)->add(createInternalizePass(PreserveFobj)); } +extern "C" JL_DLLEXPORT void LLVMExtraAppendToUsed(LLVMModuleRef Mod, + LLVMValueRef* Values, + size_t Count) { + SmallVector GlobalValues; + for (auto *Value : makeArrayRef(Values, Count)) + GlobalValues.push_back(cast(unwrap(Value))); + appendToUsed(*unwrap(Mod), GlobalValues); +} + +extern "C" JL_DLLEXPORT void LLVMExtraAppendToCompilerUsed(LLVMModuleRef Mod, + LLVMValueRef* Values, + size_t Count) { + SmallVector GlobalValues; + for (auto *Value : makeArrayRef(Values, Count)) + GlobalValues.push_back(cast(unwrap(Value))); + appendToCompilerUsed(*unwrap(Mod), GlobalValues); +} + +extern "C" JL_DLLEXPORT void LLVMExtraAddGenericAnalysisPasses(LLVMPassManagerRef PM) { + unwrap(PM)->add(createTargetTransformInfoWrapperPass(TargetIRAnalysis())); +} + // Awaiting D46627