GCC recently started setting constructor priority on init_have_lse_atomics [1]
to avoid undefined initialization order with respect to other initializers,
causing accidental use of ll/sc intrinsics on targets where this was not
intended (which presents a minor performance problem as well as a
compatibility problem for users wanting to use the rr debugger). compiler-rt
does not have the same issue as libgcc, since we're already setting init
priority on the constructor. However, our choice of init priority
is the highest application priority (101), while as a compiler support
library, it would be better to use one of the priority levels reserved
for system libraries (1-100, lower integers are higher priority).
GCC ended up using 90, so this commit aligns the value in compiler-rt
to the same value to ensure that there are no subtle initialization order
differences between libgcc and compiler-rt. I do not know of a case
where this currently causes a problem, but because binary builds of these
libraries can have long lifespans in toolchains, I think this is a
prudent, conservative change.
[1] https://github.com/gcc-mirror/gcc/commit/75c4e4909ae2667f56487434f99c2915b4570794