llvmlite icon indicating copy to clipboard operation
llvmlite copied to clipboard

restype missing for all llvm APIs that return void

Open yashssh opened this issue 1 year ago • 1 comments

Although this haven't caused any problems until now, it might lead to hidden hard to debug failures in the future. Few examples from the codebase that need fixing.

  • LLVMPY_PrintValueToString, LLVMPY_SetValueName, LLVMPY_SetLinkage, etc from ffi/value.cpp
  • LLVMPY_GetHostCPUName, LLVMPY_GetDefaultTargetTriple, etc from ffi/targets.cpp
  • Similarly many from passmanagers.cpp, newpassmanagers.cpp, transfroms.cpp

It seems like it's a practice in the codebase to not declare restype for llvm functions returning void.

If this is to be fixed a question I have is what should be the restype for these functions, None or c_int?

yashssh avatar Oct 14 '24 09:10 yashssh

For short term fixing the issue, the best practice is to set restype to None for void returning function.

For long term avoiding the issue, it was suggested in today's numba triage meeting to add a API like how ctypes.CFUNCTYPE(restype, *argtypes) would forces one to insert a restype.

sklam avatar Oct 15 '24 14:10 sklam