When the input LLVM IR has dso_local (which clang seemingly puts on all non-static functions), the result after running jlm-opt does not have the dso_local.
The LLVM LangRef says that the lack of dso_local implies dso_preemptable, which is a less strict guarantee.
The compiler must assume that the function body can be replaced at runtime.
In my testing this did not affect how function calls end up looking in the final object file, but I'm writing it down here.