Skip to content

Commit 664e9ba

Browse files
committed
Expose some additional LLVM APIs.
1 parent 4714a86 commit 664e9ba

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

src/llvm-api.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
#include <llvm/ADT/Triple.h>
1616
#include <llvm/Analysis/TargetLibraryInfo.h>
17+
#include <llvm/Analysis/TargetTransformInfo.h>
1718
#include <llvm/IR/Attributes.h>
1819
#include <llvm/IR/CallSite.h>
1920
#include <llvm/IR/DebugInfo.h>
@@ -24,6 +25,7 @@
2425
#include <llvm/IR/Module.h>
2526
#include <llvm/Support/TargetSelect.h>
2627
#include <llvm/Transforms/IPO.h>
28+
#include <llvm/Transforms/Utils/ModuleUtils.h>
2729

2830
#include "julia.h"
2931

@@ -208,6 +210,28 @@ extern "C" JL_DLLEXPORT void LLVMExtraAddInternalizePassWithExportList(
208210
unwrap(PM)->add(createInternalizePass(PreserveFobj));
209211
}
210212

213+
extern "C" JL_DLLEXPORT void LLVMExtraAppendToUsed(LLVMModuleRef Mod,
214+
LLVMValueRef* Values,
215+
size_t Count) {
216+
SmallVector<GlobalValue *, 1> GlobalValues;
217+
for (auto *Value : makeArrayRef(Values, Count))
218+
GlobalValues.push_back(cast<GlobalValue>(unwrap(Value)));
219+
appendToUsed(*unwrap(Mod), GlobalValues);
220+
}
221+
222+
extern "C" JL_DLLEXPORT void LLVMExtraAppendToCompilerUsed(LLVMModuleRef Mod,
223+
LLVMValueRef* Values,
224+
size_t Count) {
225+
SmallVector<GlobalValue *, 1> GlobalValues;
226+
for (auto *Value : makeArrayRef(Values, Count))
227+
GlobalValues.push_back(cast<GlobalValue>(unwrap(Value)));
228+
appendToCompilerUsed(*unwrap(Mod), GlobalValues);
229+
}
230+
231+
extern "C" JL_DLLEXPORT void LLVMExtraAddGenericAnalysisPasses(LLVMPassManagerRef PM) {
232+
unwrap(PM)->add(createTargetTransformInfoWrapperPass(TargetIRAnalysis()));
233+
}
234+
211235

212236
// Awaiting D46627
213237

0 commit comments

Comments
 (0)