SuccessChanges

Summary

  1. [PM] Avoid duplicates in the Used/Preserved/Required sets (details)
  2. [SCEV] Add a test with wrong exit counts. (NFC) (details)
  3. [AArch64] Add support for the GNU ILP32 ABI (details)
Commit 985b9b7e421a16e8fcab7f038601a23a25cdfd5d by bjorn.a.pettersson
[PM] Avoid duplicates in the Used/Preserved/Required sets

The pass analysis uses "sets" implemented using a SmallVector type
to keep track of Used, Preserved, Required and RequiredTransitive
passes. When having nested analyses we could end up with duplicates
in those sets, as there was no checks to see if a pass already
existed in the "set" before pushing to the vectors. This idea with
this patch is to avoid such duplicates by avoiding pushing elements
that already is contained when adding elements to those sets.

To align with the above PMDataManager::collectRequiredAndUsedAnalyses
is changed to skip adding both the Required and RequiredTransitive
passes to its result vectors (since RequiredTransitive always is
a subset of Required we ended up with duplicates when traversing
both sets).

Main goal with this is to avoid spending time verifying the same
analysis mulitple times in PMDataManager::verifyPreservedAnalysis
when iterating over the Preserved "set". It is assumed that removing
duplicates from a "set" shouldn't have any other negative impact
(I have not seen any problems so far). If this ends up causing
problems one could do some uniqueness filtering of the vector being
traversed in verifyPreservedAnalysis instead.

Reviewed By: foad

Differential Revision: https://reviews.llvm.org/D94416
The file was modifiedllvm/lib/IR/Pass.cpp
The file was modifiedllvm/include/llvm/PassAnalysisSupport.h
The file was modifiedllvm/lib/IR/LegacyPassManager.cpp
Commit 5d718374a68fb68f3ec5ed3670b4dfa99dc42789 by chenmindong1
[SCEV] Add a test with wrong exit counts. (NFC)

This patch pre-commits a test case with wrong exit count
analysis for D92367.

Reviewed by: mkazantsev

Differential Revision: https://reviews.llvm.org/D94657
The file was addedllvm/test/Analysis/ScalarEvolution/incorrect-exit-count.ll
Commit 21bfd068b32ece1c6fbc912208e7cd1782a8c3fc by amanieu
[AArch64] Add support for the GNU ILP32 ABI

Add the aarch64[_be]-*-gnu_ilp32 targets to support the GNU ILP32 ABI for AArch64.

The needed codegen changes were mostly already implemented in D61259, which added support for the watchOS ILP32 ABI. The main changes are:
- Wiring up the new target to enable ILP32 codegen and MC.
- ILP32 va_list support.
- ILP32 TLSDESC relocation support.

There was existing MC support for ELF ILP32 relocations from D25159 which could be enabled by passing "-target-abi ilp32" to llvm-mc. This was changed to check for "gnu_ilp32" in the target triple instead. This shouldn't cause any issues since the existing support was slightly broken: it was generating ELF64 objects instead of the ELF32 object files expected by the GNU ILP32 toolchain.

This target has been tested by running the full rustc testsuite on a big-endian ILP32 system based on the GCC ILP32 toolchain.

Reviewed By: kristof.beyls

Differential Revision: https://reviews.llvm.org/D94143
The file was modifiedllvm/include/llvm/ADT/Triple.h
The file was modifiedllvm/test/MC/AArch64/arm64-ilp32.s
The file was modifiedllvm/test/MC/AArch64/arm32-elf-relocs.s
The file was modifiedllvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
The file was modifiedllvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
The file was modifiedllvm/lib/Target/AArch64/AArch64Subtarget.h
The file was modifiedllvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
The file was addedllvm/test/CodeGen/AArch64/ilp32-tlsdesc.ll
The file was modifiedllvm/test/MC/AArch64/elf-reloc-ldrlit.s
The file was addedllvm/test/CodeGen/AArch64/ilp32-va.ll
The file was modifiedllvm/test/MC/AArch64/ilp32-diagnostics.s
The file was modifiedllvm/lib/Target/AArch64/AArch64TargetMachine.cpp
The file was modifiedllvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
The file was modifiedllvm/lib/Support/Triple.cpp
The file was modifiedllvm/test/MC/AArch64/elf-reloc-uncondbrimm.s
The file was modifiedllvm/test/MC/AArch64/elf-reloc-tstb.s
The file was modifiedllvm/test/MC/AArch64/adrp-relocation.s
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp
The file was modifiedllvm/test/MC/AArch64/arm64-elf-reloc-condbr.s
The file was modifiedllvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
The file was modifiedllvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp