The linker utilizes -mtriple, -march, and -mcpu flags for reasons that are not entirely clear, and there appears to be some ARM/AArch64-specific behavior in LLVM related to target triples
Assigning this to @zhaoshiz since he has prior experience with LLVM's handling of target triples, which will help complete the transition away from using -mtriple.
Let's begin by removing -mtriple, followed by -march, and then -mcpu, in that order.
FYI @apazos