There is a fundamental problem here.
I work on another project where we use LLVM as code generator. When dealing with half-precision floating point, the code generator may emit calls to the builtin conversion functions. We will generate an object file, which may then be linked against other object files generated by clang (i.e. the standalone compiler). If the version of the clang doesn’t match the version of the code generator, we can have a situation where __extendhfsf2
expects uint16_t
, but gets _Float16
, and we have no way of telling the user that this is happening.