This patch fixes an issue where, in certain instances, when compiling code using the lrint and llrint LLVM intrinsics, LLVM can incorrectly optimize a loop to use hardware loop counters.
In terms of background, r361875 added lrint and llrint intrinsics to LLVM; however, the series only added support for instructions for AArch64, so on PPC and other platforms ll/lrint was emitted as a function call. On PPC, the hardware loop transform pass assumed that since an intrinsic was used, the ctr register would not be clobbered, and a transformation of the loop to use hardware loop intrinsics was valid. The function call clobbered ctr, resulting in incorrect code generation.