Skip to content

Commit 02804ac

Browse files
authored
Merge pull request #22471 from JuliaLang/yyc/codegen/orc-only
More clean up for dropping LLVM 3.9.0 support
2 parents ce3c1ef + 4f53357 commit 02804ac

File tree

9 files changed

+3
-71
lines changed

9 files changed

+3
-71
lines changed

src/ccall.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -899,12 +899,8 @@ class FunctionMover final : public ValueMaterializer
899899
Function *oldF = destModule->getFunction(F->getName());
900900
if (oldF)
901901
return oldF;
902-
903-
#ifdef USE_ORCJIT
904902
if (jl_ExecutionEngine->findSymbol(F->getName(), false))
905903
return InjectFunctionProto(F);
906-
#endif
907-
908904
return CloneFunctionProto(shadow);
909905
}
910906
else if (!F->isDeclaration()) {

src/codegen.cpp

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1305,10 +1305,8 @@ extern "C" JL_DLLEXPORT
13051305
uint64_t jl_get_llvm_fptr(llvm::Function *llvmf)
13061306
{
13071307
uint64_t addr = getAddressForFunction(llvmf);
1308-
#ifdef USE_ORCJIT
13091308
if (!addr)
13101309
addr = jl_ExecutionEngine->findUnmangledSymbol(llvmf->getName()).getAddress();
1311-
#endif
13121310
return addr;
13131311
}
13141312

@@ -7008,9 +7006,6 @@ extern "C" void *jl_init_llvm(void)
70087006
.setOptLevel(CodeGenOpt::None)
70097007
#else
70107008
.setOptLevel(jl_options.opt_level == 0 ? CodeGenOpt::None : CodeGenOpt::Aggressive)
7011-
#endif
7012-
#ifdef USE_ORCMCJIT
7013-
.setUseOrcMCJITReplacement(true)
70147009
#endif
70157010
;
70167011
Triple TheTriple(sys::getProcessTriple());
@@ -7033,21 +7028,7 @@ extern "C" void *jl_init_llvm(void)
70337028
#endif
70347029

70357030
init_julia_llvm_meta();
7036-
#ifdef USE_ORCJIT
70377031
jl_ExecutionEngine = new JuliaOJIT(*jl_TargetMachine);
7038-
#else
7039-
jl_ExecutionEngine = eb.create(jl_TargetMachine);
7040-
//jl_printf(JL_STDERR,"%s\n",jl_ExecutionEngine->getDataLayout()->getStringRepresentation().c_str());
7041-
if (!jl_ExecutionEngine) {
7042-
jl_printf(JL_STDERR, "Critical error initializing llvm: %s\n",
7043-
ErrorStr.c_str());
7044-
exit(1);
7045-
}
7046-
#if !defined(USE_ORCMCJIT)
7047-
jl_ExecutionEngine->setProcessAllSections(true);
7048-
#endif
7049-
jl_ExecutionEngine->DisableLazyCompilation();
7050-
#endif
70517032

70527033
// Mark our address spaces as non-integral
70537034
#if JL_LLVM_VERSION >= 40000
@@ -7067,21 +7048,6 @@ extern "C" void jl_init_codegen(void)
70677048
Module *m = (Module *)jl_init_llvm();
70687049
init_julia_llvm_env(m);
70697050

7070-
#ifndef USE_ORCJIT
7071-
jl_ExecutionEngine->RegisterJITEventListener(CreateJuliaJITEventListener());
7072-
#ifdef JL_USE_INTEL_JITEVENTS
7073-
if (jl_using_intel_jitevents)
7074-
jl_ExecutionEngine->RegisterJITEventListener(
7075-
JITEventListener::createIntelJITEventListener());
7076-
#endif // JL_USE_INTEL_JITEVENTS
7077-
7078-
#ifdef JL_USE_OPROFILE_JITEVENTS
7079-
if (jl_using_oprofile_jitevents)
7080-
jl_ExecutionEngine->RegisterJITEventListener(
7081-
JITEventListener::createOProfileJITEventListener());
7082-
#endif // JL_USE_OPROFILE_JITEVENTS
7083-
#endif
7084-
70857051
BOX_F(int8,int8); UBOX_F(uint8,uint8);
70867052
BOX_F(int16,int16); UBOX_F(uint16,uint16);
70877053
BOX_F(int32,int32); UBOX_F(uint32,uint32);

src/codegen_internal.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ extern int jl_DI_for_fptr(uint64_t fptr, uint64_t *symsize, int64_t *slide, int6
2020
extern bool jl_dylib_DI_for_fptr(size_t pointer, const object::ObjectFile **object, llvm::DIContext **context, int64_t *slide, int64_t *section_slide,
2121
bool onlySysImg, bool *isSysImg, void **saddr, char **name, char **filename);
2222

23-
#ifdef USE_ORCJIT
2423
#ifdef _OS_WINDOWS_
2524
void *lookupWriteAddressFor(RTDyldMemoryManager *memmgr, void *rt_addr);
2625
#endif
27-
#endif
2826

2927
RTDyldMemoryManager* createRTDyldMemoryManager(void);

src/debuginfo.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,6 @@ class JuliaJITEventListener: public JITEventListener
413413
}
414414
};
415415

416-
#ifdef USE_ORCJIT
417416
JL_DLLEXPORT void ORCNotifyObjectEmitted(JITEventListener *Listener,
418417
const object::ObjectFile &obj,
419418
const object::ObjectFile &debugObj,
@@ -422,7 +421,6 @@ JL_DLLEXPORT void ORCNotifyObjectEmitted(JITEventListener *Listener,
422421
{
423422
((JuliaJITEventListener*)Listener)->_NotifyObjectEmitted(obj,debugObj,L,memmgr);
424423
}
425-
#endif
426424

427425
static std::pair<char *, bool> jl_demangle(const char *name)
428426
{

src/intrinsics.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -911,10 +911,7 @@ static Value *emit_untyped_intrinsic(intrinsic f, Value **argvalues, size_t narg
911911
case srem_int: return builder.CreateSRem(x, y);
912912
case urem_int: return builder.CreateURem(x, y);
913913

914-
// Implements IEEE negate. Unfortunately there is no compliant way
915-
// to implement this in LLVM 3.4, though there are two different idioms
916-
// that do the correct thing on LLVM <= 3.3 and >= 3.5 respectively.
917-
// See issue #7868
914+
// Implements IEEE negate. See issue #7868
918915
case neg_float: return math_builder(ctx)().CreateFSub(ConstantFP::get(t, -0.0), x);
919916
case neg_float_fast: return math_builder(ctx, true)().CreateFNeg(x);
920917
case add_float: return math_builder(ctx)().CreateFAdd(x, y);

src/jitlayers.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -148,23 +148,20 @@ void addOptimizationPasses(legacy::PassManagerBase *PM, int opt_level)
148148
#if JL_LLVM_VERSION < 50000
149149
PM->add(createLowerExcHandlersPass());
150150
PM->add(createLateLowerGCFramePass());
151+
// Remove dead use of ptls
151152
PM->add(createDeadCodeEliminationPass());
152153
PM->add(createLowerPTLSPass(imaging_mode));
153154
#endif
154155

155156
PM->add(createMemCpyOptPass());
156157

157-
// hopefully these functions (from llvmcall) don't try to interact with the Julia runtime
158-
// or have anything that might corrupt the createLowerPTLSPass pass
159158
#if JL_LLVM_VERSION >= 40000
160159
PM->add(createAlwaysInlinerLegacyPass()); // Respect always_inline
161160
#else
162161
PM->add(createAlwaysInlinerPass()); // Respect always_inline
163162
#endif
164163

165164
PM->add(createInstructionCombiningPass()); // Cleanup for scalarrepl.
166-
// Let the InstCombine pass remove the unnecessary load of
167-
// safepoint address first
168165
PM->add(createSROAPass()); // Break up aggregate allocas
169166
PM->add(createInstructionCombiningPass()); // Cleanup for scalarrepl.
170167
PM->add(createJumpThreadingPass()); // Thread jumps.
@@ -241,6 +238,7 @@ void addOptimizationPasses(legacy::PassManagerBase *PM, int opt_level)
241238
PM->add(createLowerExcHandlersPass());
242239
PM->add(createGCInvariantVerifierPass(false));
243240
PM->add(createLateLowerGCFramePass());
241+
// Remove dead use of ptls
244242
PM->add(createDeadCodeEliminationPass());
245243
PM->add(createLowerPTLSPass(imaging_mode));
246244
#endif
@@ -831,9 +829,6 @@ void jl_init_function(Function *F)
831829
// and will add it to the execution engine when required (by jl_finalize_function)
832830
void jl_finalize_module(Module *m, bool shadow)
833831
{
834-
#if !defined(USE_ORCJIT)
835-
jl_globalPM->run(*m);
836-
#endif
837832
// record the function names that are part of this Module
838833
// so it can be added to the JIT when needed
839834
for (Module::iterator I = m->begin(), E = m->end(); I != E; ++I) {

src/jitlayers.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
#include <llvm/IR/Value.h>
77

88
#include <llvm/ExecutionEngine/SectionMemoryManager.h>
9-
#if defined(USE_ORCJIT)
109
#include "llvm/ExecutionEngine/Orc/CompileUtils.h"
1110
#include "llvm/ExecutionEngine/Orc/IRCompileLayer.h"
1211
#include "llvm/ExecutionEngine/Orc/LambdaResolver.h"
@@ -17,11 +16,6 @@
1716
# include "llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h"
1817
#endif
1918
#include "llvm/ExecutionEngine/ObjectMemoryBuffer.h"
20-
#else
21-
#include <llvm/ExecutionEngine/MCJIT.h>
22-
#include <llvm/ADT/DenseMapInfo.h>
23-
#include <llvm/Object/ObjectFile.h>
24-
#endif
2519

2620
#include "llvm/IR/LegacyPassManager.h"
2721
extern legacy::PassManager *jl_globalPM;
@@ -128,7 +122,6 @@ static inline void add_named_global(GlobalObject *gv, T *addr, bool dllimport =
128122
}
129123

130124
void jl_init_jit(Type *T_pjlvalue_);
131-
#ifdef USE_ORCJIT
132125
#if JL_LLVM_VERSION >= 40000
133126
typedef JITSymbol JL_JITSymbol;
134127
// The type that is similar to SymbolInfo on LLVM 4.0 is actually
@@ -206,9 +199,6 @@ class JuliaOJIT {
206199
SymbolTableT LocalSymbolTable;
207200
};
208201
extern JuliaOJIT *jl_ExecutionEngine;
209-
#else
210-
extern ExecutionEngine *jl_ExecutionEngine;
211-
#endif
212202
JL_DLLEXPORT extern LLVMContext jl_LLVMContext;
213203

214204
Pass *createLowerPTLSPass(bool imaging_mode);

src/llvm-version.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,3 @@
1212
#if JL_LLVM_VERSION < 30901
1313
#error Only LLVM versions >= 3.9.1 are supported by Julia
1414
#endif
15-
16-
#define USE_ORCJIT

src/runtime_ccall.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,6 @@ jl_value_t *jl_get_cpu_name(void)
182182
extern "C" JL_DLLEXPORT
183183
jl_value_t *jl_get_JIT(void)
184184
{
185-
#if defined(USE_ORCJIT)
186185
const std::string& HostJITName = "ORCJIT";
187-
#elif defined(USE_MCJIT)
188-
const std::string& HostJITName = "MCJIT";
189-
#else
190-
const std::string& HostJITName = "Unknown";
191-
#endif
192186
return jl_pchar_to_string(HostJITName.data(), HostJITName.size());
193187
}

0 commit comments

Comments
 (0)