Skip to content

Commit

Permalink
Change API names addressing review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
yashssh committed Mar 3, 2025
1 parent 35da642 commit 86255fe
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 27 deletions.
14 changes: 8 additions & 6 deletions ffi/newpassmanagers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -286,17 +286,19 @@ LLVMPY_DisposePipelineTuningOptions(LLVMPipelineTuningOptionsRef PTO) {
// PB

API_EXPORT(LLVMTimePassesHandlerRef)
LLVMPY_CreateLLVMTimePassesHandler() {
return llvm::wrap(new TimePassesHandler(true));
LLVMPY_CreateTimePassesHandler() {
bool enabled = true;
return llvm::wrap(new TimePassesHandler(enabled));
}

API_EXPORT(void)
LLVMPY_DisposeLLVMTimePassesHandler(LLVMTimePassesHandlerRef TimePassesRef) {
LLVMPY_DisposeTimePassesHandler(LLVMTimePassesHandlerRef TimePassesRef) {
delete llvm::unwrap(TimePassesRef);
}

API_EXPORT(void)
LLVMPY_SetTimePassesNPM(LLVMPassBuilderRef PBRef, LLVMTimePassesHandlerRef TimePassesRef) {
LLVMPY_EnableTimePasses(LLVMPassBuilderRef PBRef,
LLVMTimePassesHandlerRef TimePassesRef) {
TimePassesHandler *TP = llvm::unwrap(TimePassesRef);
TimePassesIsEnabled = true;
PassBuilder *PB = llvm::unwrap(PBRef);
Expand All @@ -305,8 +307,8 @@ LLVMPY_SetTimePassesNPM(LLVMPassBuilderRef PBRef, LLVMTimePassesHandlerRef TimeP
}

API_EXPORT(void)
LLVMPY_ReportAndResetTimingsNPM(LLVMTimePassesHandlerRef TimePassesRef,
const char **outmsg) {
LLVMPY_ReportAndDisableTimePasses(LLVMTimePassesHandlerRef TimePassesRef,
const char **outmsg) {
std::string osbuf;
raw_string_ostream os(osbuf);
TimePassesHandler *TP = llvm::unwrap(TimePassesRef);
Expand Down
39 changes: 21 additions & 18 deletions llvmlite/binding/newpassmanagers.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,19 +208,21 @@ def _dispose(self):
ffi.lib.LLVMPY_DisposePipelineTuningOptions(self)


class PassBuilder(ffi.ObjectRef):
class TimePassesHandler(ffi.ObjectRef):
def __init__(self):
super().__init__(ffi.lib.LLVMPY_CreateLLVMTimePassesHandler())
class TimePassesHandler(ffi.ObjectRef):
def __init__(self):
super().__init__(ffi.lib.LLVMPY_CreateTimePassesHandler())

def _dispose(self):
ffi.lib.LLVMPY_DisposeTimePassesHandler(self)

def _dispose(self):
ffi.lib.LLVMPY_DisposeLLVMTimePassesHandler(self)

class PassBuilder(ffi.ObjectRef):

def __init__(self, tm, pto):
super().__init__(ffi.lib.LLVMPY_CreatePassBuilder(tm, pto))
self._pto = pto
self._tm = tm
self._time_passes = self.TimePassesHandler()
self._time_passes_handler = TimePassesHandler()

def getModulePassManager(self):
return ModulePassManager(
Expand All @@ -234,22 +236,23 @@ def getFunctionPassManager(self):
self, self._pto.speed_level, self._pto.size_level)
)

def set_time_passes(self):
def start_pass_timing(self):
"""Enable the pass timers.
"""
ffi.lib.LLVMPY_SetTimePassesNPM(self, self._time_passes)
ffi.lib.LLVMPY_EnableTimePasses(self, self._time_passes_handler)

def report_and_reset_timings(self):
"""Returns the pass timings report and resets the LLVM internal timers.
Pass timers are enabled by ``set_time_passes()``. If the timers are not
enabled, this function will return an empty string.
def finish_pass_timing(self):
"""Returns the pass timings report and disables the LLVM internal
timers. Pass timers are enabled by ``start_pass_timing()``. If the
timers are not enabled, this function will return an empty string.
Returns
-------
res : str
LLVM generated timing report.
"""
with ffi.OutputString() as buf:
ffi.lib.LLVMPY_ReportAndResetTimingsNPM(self._time_passes, buf)
ffi.lib.LLVMPY_ReportAndDisableTimePasses(
self._time_passes_handler, buf)
return str(buf)

def _dispose(self):
Expand Down Expand Up @@ -371,18 +374,18 @@ def _dispose(self):

ffi.lib.LLVMPY_DisposePassBuilder.argtypes = [ffi.LLVMPassBuilderRef,]

ffi.lib.LLVMPY_CreateLLVMTimePassesHandler.restype = \
ffi.lib.LLVMPY_CreateTimePassesHandler.restype = \
ffi.LLVMTimePassesHandlerRef

ffi.lib.LLVMPY_DisposeLLVMTimePassesHandler.argtypes = [
ffi.lib.LLVMPY_DisposeTimePassesHandler.argtypes = [
ffi.LLVMTimePassesHandlerRef,]

ffi.lib.LLVMPY_SetTimePassesNPM.argtypes = [
ffi.lib.LLVMPY_EnableTimePasses.argtypes = [
ffi.LLVMPassBuilderRef,
ffi.LLVMTimePassesHandlerRef,
]

ffi.lib.LLVMPY_ReportAndResetTimingsNPM.argtypes = [
ffi.lib.LLVMPY_ReportAndDisableTimePasses.argtypes = [
ffi.LLVMTimePassesHandlerRef,
POINTER(c_char_p),
]
Expand Down
6 changes: 3 additions & 3 deletions llvmlite/tests/test_binding.py
Original file line number Diff line number Diff line change
Expand Up @@ -3071,10 +3071,10 @@ def test_time_passes(self):
def run_with_timing(speed_level):
mod = self.module()
pb = self.pb(speed_level=speed_level, size_level=0)
pb.set_time_passes()
pb.start_pass_timing()
mpm = pb.getModulePassManager()
mpm.run(mod, pb)
report = pb.report_and_reset_timings()
report = pb.finish_pass_timing()
pb.close()
return report

Expand All @@ -3091,7 +3091,7 @@ def test_empty_report(self):
pb = self.pb()
mpm = pb.getModulePassManager()
mpm.run(mod, pb)
report = pb.report_and_reset_timings()
report = pb.finish_pass_timing()
pb.close()
self.assertFalse(report)

Expand Down

0 comments on commit 86255fe

Please sign in to comment.