This is my attempt to address the issues in http://llvm.org/PR26815, where changes to LLVM broke check-clang because we had end-to-end tests. The patch does 2 related things:
- It removes all ARM and AArch64 assembly tests I could find, instead substituting auto-generated LLVM IR checks, including data-flow to make sure we don't swap operand order or make other mistakes along those lines. The idea is that we believe the current IR is correct so this one-time substitution shouldn't hurt.
- It converts tests that were using -O1, -O2 or -O3 into only relying on Mem2Reg (a stable pass with well-defined expectations which greatly improves readability of the output in most cases).
Does this look reasonable to people?