Most targets in LLVM have some set of library calls.
ARM has a particularly large set of library calls that need to be initialized along with additional information on the calling convention and predication of the calls. Hexagon too has a significant number of calls that get setup, followed closely by SPARC. The other targets seem to not have as many library calls that need to be setup when the target is being setup.
I made a change to the ARM backend to make the library call setup be more table driven, and Renato pointed out that this might be something that might be more useful across the other targets.
We could make this more generic and handle it more similar to the vector cost tables if the general consensus is that this is something sufficiently useful on all targets to unify.