Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion deps/LLVMExtra/include/LLVMExtra.h
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ LLVMContextRef LLVMGetBuilderContext(LLVMBuilderRef Builder);
typedef struct LLVMOpaquePassBuilderExtensions *LLVMPassBuilderExtensionsRef;
LLVMPassBuilderExtensionsRef LLVMCreatePassBuilderExtensions(void);
void LLVMDisposePassBuilderExtensions(LLVMPassBuilderExtensionsRef Extensions);
void LLVMPassBuilderExtensionsSetRegistrationCallback(LLVMPassBuilderExtensionsRef Options,
void LLVMPassBuilderExtensionsPushRegistrationCallbacks(LLVMPassBuilderExtensionsRef Options,
void (*RegistrationCallback)(void *));
typedef LLVMBool (*LLVMJuliaModulePassCallback)(LLVMModuleRef M, void *Thunk);
typedef LLVMBool (*LLVMJuliaFunctionPassCallback)(LLVMValueRef F, void *Thunk);
Expand Down
11 changes: 6 additions & 5 deletions deps/LLVMExtra/lib/NewPM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class LLVMPassBuilderExtensions {
public:
// A callback to register additional pipeline parsing callbacks with the pass builder.
// This is used to support Julia's passes.
void (*RegistrationCallback)(void *);
SmallVector<std::function<void(void*)>> RegistrationCallbacks;

// A list of callbacks that each register a single custom module or function pass.
// These callbacks are generated here in C++, and match against a pass name.
Expand Down Expand Up @@ -66,10 +66,10 @@ void LLVMDisposePassBuilderExtensions(LLVMPassBuilderExtensionsRef Extensions) {

// Pass registration

void LLVMPassBuilderExtensionsSetRegistrationCallback(
void LLVMPassBuilderExtensionsPushRegistrationCallbacks(
LLVMPassBuilderExtensionsRef Extensions, void (*RegistrationCallback)(void *)) {
LLVMPassBuilderExtensions *PassExts = unwrap(Extensions);
PassExts->RegistrationCallback = RegistrationCallback;
PassExts->RegistrationCallbacks.push_back(RegistrationCallback);
return;
}

Expand Down Expand Up @@ -158,8 +158,9 @@ static LLVMErrorRef runJuliaPasses(Module *Mod, Function *Fun, const char *Passe
#else
PassBuilder PB(Machine, PassOpts->PTO, None, &PIC);
#endif
if (PassExts->RegistrationCallback)
PassExts->RegistrationCallback(&PB);

for (auto &Callback : PassExts->RegistrationCallbacks)
Callback(&PB);
for (auto &Callback : PassExts->ModulePipelineParsingCallbacks)
PB.registerPipelineParsingCallback(Callback);
for (auto &Callback : PassExts->FunctionPipelineParsingCallbacks)
Expand Down
4 changes: 2 additions & 2 deletions lib/15/libLLVM_extra.jl
Original file line number Diff line number Diff line change
Expand Up @@ -371,8 +371,8 @@ function LLVMDisposePassBuilderExtensions(Extensions)
ccall((:LLVMDisposePassBuilderExtensions, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef,), Extensions)
end

function LLVMPassBuilderExtensionsSetRegistrationCallback(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsSetRegistrationCallback, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
function LLVMPassBuilderExtensionsPushRegistrationCallbacks(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsPushRegistrationCallbacks, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
end

# typedef LLVMBool ( * LLVMJuliaModulePassCallback ) ( LLVMModuleRef M , void * Thunk )
Expand Down
4 changes: 2 additions & 2 deletions lib/16/libLLVM_extra.jl
Original file line number Diff line number Diff line change
Expand Up @@ -371,8 +371,8 @@ function LLVMDisposePassBuilderExtensions(Extensions)
ccall((:LLVMDisposePassBuilderExtensions, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef,), Extensions)
end

function LLVMPassBuilderExtensionsSetRegistrationCallback(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsSetRegistrationCallback, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
function LLVMPassBuilderExtensionsPushRegistrationCallbacks(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsPushRegistrationCallbacks, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
end

# typedef LLVMBool ( * LLVMJuliaModulePassCallback ) ( LLVMModuleRef M , void * Thunk )
Expand Down
4 changes: 2 additions & 2 deletions lib/17/libLLVM_extra.jl
Original file line number Diff line number Diff line change
Expand Up @@ -331,8 +331,8 @@ function LLVMDisposePassBuilderExtensions(Extensions)
ccall((:LLVMDisposePassBuilderExtensions, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef,), Extensions)
end

function LLVMPassBuilderExtensionsSetRegistrationCallback(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsSetRegistrationCallback, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
function LLVMPassBuilderExtensionsPushRegistrationCallbacks(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsPushRegistrationCallbacks, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
end

# typedef LLVMBool ( * LLVMJuliaModulePassCallback ) ( LLVMModuleRef M , void * Thunk )
Expand Down
4 changes: 2 additions & 2 deletions lib/18/libLLVM_extra.jl
Original file line number Diff line number Diff line change
Expand Up @@ -265,8 +265,8 @@ function LLVMDisposePassBuilderExtensions(Extensions)
ccall((:LLVMDisposePassBuilderExtensions, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef,), Extensions)
end

function LLVMPassBuilderExtensionsSetRegistrationCallback(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsSetRegistrationCallback, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
function LLVMPassBuilderExtensionsPushRegistrationCallbacks(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsPushRegistrationCallbacks, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
end

# typedef LLVMBool ( * LLVMJuliaModulePassCallback ) ( LLVMModuleRef M , void * Thunk )
Expand Down
4 changes: 2 additions & 2 deletions lib/19/libLLVM_extra.jl
Original file line number Diff line number Diff line change
Expand Up @@ -265,8 +265,8 @@ function LLVMDisposePassBuilderExtensions(Extensions)
ccall((:LLVMDisposePassBuilderExtensions, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef,), Extensions)
end

function LLVMPassBuilderExtensionsSetRegistrationCallback(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsSetRegistrationCallback, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
function LLVMPassBuilderExtensionsPushRegistrationCallbacks(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsPushRegistrationCallbacks, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
end

# typedef LLVMBool ( * LLVMJuliaModulePassCallback ) ( LLVMModuleRef M , void * Thunk )
Expand Down
4 changes: 2 additions & 2 deletions lib/20/libLLVM_extra.jl
Original file line number Diff line number Diff line change
Expand Up @@ -221,8 +221,8 @@ function LLVMDisposePassBuilderExtensions(Extensions)
ccall((:LLVMDisposePassBuilderExtensions, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef,), Extensions)
end

function LLVMPassBuilderExtensionsSetRegistrationCallback(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsSetRegistrationCallback, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
function LLVMPassBuilderExtensionsPushRegistrationCallbacks(Options, RegistrationCallback)
ccall((:LLVMPassBuilderExtensionsPushRegistrationCallbacks, libLLVMExtra), Cvoid, (LLVMPassBuilderExtensionsRef, Ptr{Cvoid}), Options, RegistrationCallback)
end

# typedef LLVMBool ( * LLVMJuliaModulePassCallback ) ( LLVMModuleRef M , void * Thunk )
Expand Down
2 changes: 1 addition & 1 deletion src/newpm.jl
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ function run!(pb::NewPMPassBuilder, target::Union{Module,Function}, tm::Union{No

# register Julia passes
julia_callback = cglobal(:jl_register_passbuilder_callbacks)
API.LLVMPassBuilderExtensionsSetRegistrationCallback(pb.exts, julia_callback)
API.LLVMPassBuilderExtensionsPushRegistrationCallbacks(pb.exts, julia_callback)

# register AA pipeline
if !isempty(aa_pipeline)
Expand Down
Loading