LLVM/project 1366911llvm/utils/gn/secondary/llvm/unittests/CodeGen BUILD.gn

[gn build] Port ff494c648aec (#215956)
DeltaFile
+1-0llvm/utils/gn/secondary/llvm/unittests/CodeGen/BUILD.gn
+1-01 files

LLVM/project e90f591llvm/utils/gn/secondary/clang/lib/Headers BUILD.gn

[gn build] Port c3792d66d2c1 (#215955)
DeltaFile
+3-0llvm/utils/gn/secondary/clang/lib/Headers/BUILD.gn
+3-01 files

LLVM/project 087eff5llvm/utils/gn/secondary/llvm/unittests/ADT BUILD.gn

[gn build] Port 1e798c1343fa (#215954)
DeltaFile
+1-0llvm/utils/gn/secondary/llvm/unittests/ADT/BUILD.gn
+1-01 files

LLVM/project f9af10cllvm/utils/gn/secondary/llvm/tools/libCASPluginTest BUILD.gn

[gn] Attempt to get CASTests passing after #214856 (#215949)

See also
https://github.com/llvm/llvm-project/pull/213331#discussion_r3772630039
DeltaFile
+2-5llvm/utils/gn/secondary/llvm/tools/libCASPluginTest/BUILD.gn
+2-51 files

LLVM/project 4b59bc2llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVectorizer] Dispatch LoadStoreVec::runOnRegion on seed kind

runOnRegion() previously assumed its seed slice was always a store chain,
unconditionally casting Bndl[0] to StoreInst. This crashed (assertion in
areConsecutive<StoreInst>) whenever -sbvec-collect-seeds included "loads",
since a load-seeded region's Aux holds LoadInsts.

Add a symmetric top-level path for load-kind seed slices: createVectorLoad()
builds the vector load, and vectorizeLoads() -- unlike a load that merely
feeds a store -- has to handle arbitrary uses, so it replaces each original
load with an extract from the vector load (VecUtils::unpack()) rather than
just discarding it. runOnRegion() determines the seed kind from Bndl[0]
(asserting the slice is homogeneous, which SeedCollection guarantees) and
dispatches to vectorizeStores()/vectorizeLoads() accordingly.

No sub-run search yet: vectorizeStores()/vectorizeLoads() are each still
tried once over the whole seed slice, same as before this commit for
stores. Sub-bundle partitioning for both kinds is a separate follow-up.


    [13 lines not shown]
DeltaFile
+96-17llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+99-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_load_seeds.ll
+24-2llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+219-193 files

LLVM/project d28009cflang/lib/Lower/OpenMP OpenMP.cpp, lldb/source/Symbol Symbol.cpp

rebase

Created using spr 1.3.7
DeltaFile
+699-0llvm/test/Transforms/ConstraintElimination/header-induction-start-bounds.ll
+70-324llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+47-285flang/lib/Lower/OpenMP/OpenMP.cpp
+315-0llvm/test/Transforms/CorrelatedValuePropagation/infer-nowrap-from-uses.ll
+206-89lldb/source/Symbol/Symbol.cpp
+138-138llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
+1,475-836366 files not shown
+5,877-3,167372 files

LLVM/project b61e59fflang/lib/Lower/OpenMP OpenMP.cpp, lldb/source/Symbol Symbol.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+699-0llvm/test/Transforms/ConstraintElimination/header-induction-start-bounds.ll
+70-324llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+47-285flang/lib/Lower/OpenMP/OpenMP.cpp
+315-0llvm/test/Transforms/CorrelatedValuePropagation/infer-nowrap-from-uses.ll
+206-89lldb/source/Symbol/Symbol.cpp
+138-138llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
+1,475-836366 files not shown
+5,877-3,167372 files

LLVM/project 2346b8dflang/lib/Lower/OpenMP OpenMP.cpp, lldb/source/Symbol Symbol.cpp

rebase

Created using spr 1.3.7
DeltaFile
+699-0llvm/test/Transforms/ConstraintElimination/header-induction-start-bounds.ll
+70-324llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+47-285flang/lib/Lower/OpenMP/OpenMP.cpp
+315-0llvm/test/Transforms/CorrelatedValuePropagation/infer-nowrap-from-uses.ll
+206-89lldb/source/Symbol/Symbol.cpp
+138-138llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
+1,475-836366 files not shown
+5,877-3,167372 files

LLVM/project e600482flang/lib/Lower/OpenMP OpenMP.cpp, lldb/source/Symbol Symbol.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+699-0llvm/test/Transforms/ConstraintElimination/header-induction-start-bounds.ll
+70-324llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+47-285flang/lib/Lower/OpenMP/OpenMP.cpp
+315-0llvm/test/Transforms/CorrelatedValuePropagation/infer-nowrap-from-uses.ll
+206-89lldb/source/Symbol/Symbol.cpp
+138-138llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
+1,475-836366 files not shown
+5,877-3,167372 files

LLVM/project a025709llvm/tools/llc llc.cpp

[llc] Respect shouldDefaultToNewPM

This makes llc respect the new TM flag that allows targets to opt in to
defaulting to the NewPM.

Reviewers: vikramRH, aengelke, arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/214572
DeltaFile
+9-1llvm/tools/llc/llc.cpp
+9-11 files

LLVM/project 44176c4flang/lib/Lower/OpenMP OpenMP.cpp, lldb/source/Symbol Symbol.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+699-0llvm/test/Transforms/ConstraintElimination/header-induction-start-bounds.ll
+70-324llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+47-285flang/lib/Lower/OpenMP/OpenMP.cpp
+315-0llvm/test/Transforms/CorrelatedValuePropagation/infer-nowrap-from-uses.ll
+206-89lldb/source/Symbol/Symbol.cpp
+138-138llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
+1,475-836366 files not shown
+5,877-3,167372 files

LLVM/project 290a0a1clang/include/clang/Basic CodeGenOptions.def CodeGenOptions.h, clang/include/clang/Options Options.td

[Clang] Make NewPM switch respect shouldDefaultToNewPM

shouldDefaultToNewPM is a new target flag that allows targets to specify
that the NewPM should be used by default for compilation. Wire it up
into clang.

Reviewers: arsenm, efriedma-quic, jansvoboda11

Pull Request: https://github.com/llvm/llvm-project/pull/214571
DeltaFile
+8-0clang/include/clang/Options/Options.td
+5-1clang/lib/CodeGen/BackendUtil.cpp
+6-0clang/include/clang/Basic/CodeGenOptions.h
+2-1clang/include/clang/Basic/CodeGenOptions.def
+1-1clang/test/CodeGen/X86/newpm.c
+22-35 files

LLVM/project 34e8b1bflang/lib/Lower/OpenMP OpenMP.cpp, llvm/lib/CodeGen/SelectionDAG LegalizeFloatTypes.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+699-0llvm/test/Transforms/ConstraintElimination/header-induction-start-bounds.ll
+70-324llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+47-285flang/lib/Lower/OpenMP/OpenMP.cpp
+315-0llvm/test/Transforms/CorrelatedValuePropagation/infer-nowrap-from-uses.ll
+138-138llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
+161-78llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
+1,430-825254 files not shown
+3,595-2,432260 files

LLVM/project 47cc2f4llvm/lib/Object GOFFObjectFile.cpp

Address comments in GOFFObjectFile.cpp
DeltaFile
+18-19llvm/lib/Object/GOFFObjectFile.cpp
+18-191 files

LLVM/project d94d03dllvm/lib/Target/RISCV RISCVISelLowering.cpp, llvm/test/CodeGen/RISCV rvp-simd-64.ll

[RISCV][P-ext] Select scalar mulhr/mulhru/mulhrsu for RV32 v2i32 (#215938)

The `combinePExtTruncate` DAGCombine bailed out on RV32 for both
`v4i16` and `v2i32` 64-bit packed types. The `v4i16` case is correct
(no paired rounding multiply-high for 16-bit lanes), but `v2i32` was
incorrectly excluded.

RV32 provides scalar `mulhr`/`mulhru`/`mulhrsu` instructions. Since
`v2i32` on RV32 is a GPRPair, splitting into two scalar operations in
the combine — while the widening multiply shape is still visible —
reuses those instructions directly.

The non-rounding forms (`mulh`/`mulhu`/`mulhsu`) already scalarize
correctly through the generic legalizer, so only the rounding case
needs explicit handling here.
DeltaFile
+8-24llvm/test/CodeGen/RISCV/rvp-simd-64.ll
+16-1llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+24-252 files

LLVM/project 69f8a33llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVectorizer] Vectorize partial store sub-bundles in LoadStoreVec

runOnRegion() previously required an entire store seed chain to vectorize
as one unit. A seed slice can legitimately fail that as a whole while a
sub-run within it is still fine, e.g. because it spans an address gap
(SeedBundle::getSlice sorts by address but doesn't guarantee contiguity)
or a sub-range fails to schedule. Add findLegalStoreRun()/isLegalStoreRun()
to search for the longest vectorizable run starting at a given position,
and have runOnRegion() call vectorizeStores() once per such run instead of
once for the whole chain. isLegalStoreRun() is purely an address/scheduling
check now -- no operand-eligibility check is needed since packOperands()
accepts any operand kind.

The search only ever shrinks a candidate length, never grows one:
Scheduler::trySchedule() permanently commits a successful multi-instruction
bundle (a later request that overlaps it and is not an exact match returns
AlreadyScheduled and fails), so starting from the longest candidate and
shrinking on failure is the only search order compatible with the
scheduler's contract.

    [18 lines not shown]
DeltaFile
+53-3llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+45-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec.ll
+19-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+0-7llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_load_seeds.ll
+117-104 files

LLVM/project 1ac0a76libcxx/include CMakeLists.txt, llvm/utils/gn/secondary/libcxx/include BUILD.gn

[gn] port 273706151fa625 (#215947)
DeltaFile
+1-1libcxx/include/CMakeLists.txt
+1-0llvm/utils/gn/secondary/libcxx/include/BUILD.gn
+2-12 files

LLVM/project 18eaec2llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVectorizer] Make LoadStoreVec::vectorizeStores direction-agnostic

Remove the AllLoads/AllConstants operand-kind gate: vectorizeStores() no
longer requires a store chain's value operands to be all loads, all
constants, or neither. Instead it always builds the vector value via
packOperands(), which packs any mix of loads, constants, or arbitrary SSA
values via extractelement/insertelement -- direction-agnostic in the sense
that it doesn't care what kind of operand it's given, unlike the
load-specific and constant-specific paths it replaces.

vectorizeLoads()/createVectorLoad(), added by the previous commit for
load-kind seed slices, are unaffected: packOperands() only replaces
vectorizeStores()'s old all-loads fast path, which duplicated the same
vector-load construction createVectorLoad() already does.

Update load_store_vec.ll, load_store_vec_mixed_types.ll, and
AMDGPU/basic.ll for the new pack-based codegen.

check-llvm Transforms/SandboxVectorizer passes (31/31).
DeltaFile
+114-36llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_types.ll
+116-32llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec.ll
+13-99llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+6-2llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/AMDGPU/basic.ll
+5-2llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+254-1715 files

LLVM/project 83f371bllvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVectorizer] Make tryEraseDeadInstrs tolerate multi-use load operands

vectorizeStores() currently only ever passes single-use load operands
to tryEraseDeadInstrs(), since isFoldableLoadOperand() guarantees this.
This is NFC today, but is prep for a follow-up commit that switches
vectorizeStores() over to packOperands(), which does not make that
guarantee.
DeltaFile
+12-6llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+12-61 files

LLVM/project 02ae6aellvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVectorizer] Add a direction-agnostic operand packer to LoadStoreVec

Add packOperands(), which packs a list of arbitrary Values into a single
vector value via extractelement/insertelement, regardless of what kind
of Value each one is (load, constant, or any other SSA value) -- unlike
vectorizeStores()'s current load-specific and constant-specific paths,
which require every operand to be uniformly one kind or the other.

Operands are combined at the granularity of their narrowest common
scalar element type (getCombinedElementType(), the same rule
VecUtils::getCombinedVectorTypeFor() uses for a mixed-type instruction
chain, generalized to arbitrary Values rather than only Instructions).
An operand wider than that granularity is split into multiple lanes via
a bitcast, matching how a vector-typed element is split into per-lane
extracts.

reinterpretSameWidth() picks bitcast, ptrtoint, or inttoptr as needed to
reinterpret an operand at the combined granularity: a plain bitcast can't
convert between pointer and non-pointer types, and inttoptr requires an

    [9 lines not shown]
DeltaFile
+133-0llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+133-01 files

LLVM/project e960aacllvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVectorizer] Dispatch LoadStoreVec::runOnRegion on seed kind

runOnRegion() previously assumed its seed slice was always a store chain,
unconditionally casting Bndl[0] to StoreInst. This crashed (assertion in
areConsecutive<StoreInst>) whenever -sbvec-collect-seeds included "loads",
since a load-seeded region's Aux holds LoadInsts.

Add a symmetric top-level path for load-kind seed slices: createVectorLoad()
builds the vector load, and vectorizeLoads() -- unlike a load that merely
feeds a store -- has to handle arbitrary uses, so it replaces each original
load with an extract from the vector load (VecUtils::unpack()) rather than
just discarding it. runOnRegion() determines the seed kind from Bndl[0]
(asserting the slice is homogeneous, which SeedCollection guarantees) and
dispatches to vectorizeStores()/vectorizeLoads() accordingly.

No sub-run search yet: vectorizeStores()/vectorizeLoads() are each still
tried once over the whole seed slice, same as before this commit for
stores. Sub-bundle partitioning for both kinds is a separate follow-up.


    [6 lines not shown]
DeltaFile
+99-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_load_seeds.ll
+91-1llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+17-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+207-13 files

LLVM/project fa09597llvm/include/llvm/Passes CodeGenPassBuilder.h, llvm/lib/CodeGen TargetPassConfig.cpp

[CodeGen] Derive the regalloc pipeline from the allocator, remove -optimize-regalloc (#215740)

-regalloc selects the allocator and -optimize-regalloc independently
selects the pipeline, but only two combinations are meaningful: a
non-fast allocator with -optimize-regalloc=0 is a fatal error, and
-regalloc=fast with the optimized pipeline runs the full preparation
just to rewrite a vacuous VirtRegMap.

Derive the pipeline from the allocator instead: an explicit -regalloc
implies its pipeline; the default follows the optimization level.
-regalloc=greedy now works at -O0 and -regalloc=fast always uses the
fast pipeline. Update tests to name the allocator; regenerate three
that checked the hybrid output.

Aided by Fable 5
DeltaFile
+14-20llvm/lib/CodeGen/TargetPassConfig.cpp
+10-11llvm/test/CodeGen/M68k/PR57660.ll
+7-7llvm/test/CodeGen/ARM/divmod-eabi.ll
+9-4llvm/include/llvm/Passes/CodeGenPassBuilder.h
+2-2llvm/test/CodeGen/X86/phys-reg-local-regalloc.ll
+3-1llvm/test/CodeGen/LoongArch/inline-asm-clobbers-fcc.mir
+45-4529 files not shown
+75-7435 files

LLVM/project 36121b8llvm/utils/gn/secondary/clang/include/clang/Basic BUILD.gn, llvm/utils/gn/secondary/clang/unittests/CIR BUILD.gn

[gn] port 3fe75b62c3a977 (#215943)
DeltaFile
+1-0llvm/utils/gn/secondary/clang/unittests/CIR/BUILD.gn
+1-0llvm/utils/gn/secondary/clang/include/clang/Basic/BUILD.gn
+2-02 files

LLVM/project c6d0972clang/docs LanguageExtensions.md, clang/include/clang/Basic AttrDocs.td

[clang][docs] Use local links in AttrDocs
DeltaFile
+77-66clang/include/clang/Basic/AttrDocs.td
+8-0clang/docs/LanguageExtensions.md
+85-662 files

LLVM/project 2026b71llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVectorizer] Dispatch LoadStoreVec::runOnRegion on seed kind

runOnRegion() previously assumed its seed slice was always a store chain,
unconditionally casting Bndl[0] to StoreInst. This crashed (assertion in
areConsecutive<StoreInst>) whenever -sbvec-collect-seeds included "loads",
since a load-seeded region's Aux holds LoadInsts.

Add a symmetric top-level path for load-kind seed slices: createVectorLoad()
builds the vector load, and vectorizeLoads() -- unlike a load that merely
feeds a store -- has to handle arbitrary uses, so it replaces each original
load with an extract from the vector load (VecUtils::unpack()) rather than
just discarding it. runOnRegion() determines the seed kind from Bndl[0]
(asserting the slice is homogeneous, which SeedCollection guarantees) and
dispatches to vectorizeStores()/vectorizeLoads() accordingly.

No sub-run search yet: vectorizeStores()/vectorizeLoads() are each still
tried once over the whole seed slice, same as before this commit for
stores. Sub-bundle partitioning for both kinds is a separate follow-up.


    [6 lines not shown]
DeltaFile
+91-1llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+71-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_load_seeds.ll
+17-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+179-13 files

LLVM/project 923a7afllvm/test lit.cfg.py

[Profcheck] Enable MergeFunc tests (#215881)

Remove MergeFunc from the profcheck exclusion list.

All MergeFunc tests pass with LLVM_ENABLE_PROFCHECK enabled, so no
expected-failure entries are needed.
DeltaFile
+1-1llvm/test/lit.cfg.py
+1-11 files

LLVM/project 4de16aellvm/lib/Target/LoongArch LoongArchISelLowering.cpp, llvm/test/CodeGen/LoongArch pr215935.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+47-0llvm/test/CodeGen/LoongArch/pr215935.ll
+18-0llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+65-02 files

LLVM/project 5b3766allvm/docs ProgrammersManual.md

[ADT][docs] Document SortedVectorMap in ProgrammersManual (NFC) (#215930)

This patch adds a section for SortedVectorMap in the Programmer's
Manual, detailing its intended use cases (small maps, minimal memory
overhead vs DenseMap, iteration in sorted key order) and trade-offs
(O(log N) binary search lookup and O(N) insertion/deletion vs O(1) in
DenseMap).

We also add a cross-reference from the existing "A sorted 'vector'"
section.
DeltaFile
+28-1llvm/docs/ProgrammersManual.md
+28-11 files

LLVM/project c0c4da8bolt/lib/Profile CMakeLists.txt, bolt/lib/Target/AArch64 CMakeLists.txt

[BOLT] Link pthread in Profile and Target libs to fix undefined pthread_rwlock_* symbols (#215748)

MCPlusBuilder.h uses llvm::sys::RWMutex, which aliases std::shared_mutex
on non-Apple platforms. Its inline lock/unlock calls pthread_rwlock_*
directly, so any shared library that instantiates these inline functions
must link pthread explicitly under -Wl,-z,defs.

This only shows up when building with -DBUILD_SHARED_LIBS=ON. With
static libs, the missing symbols get resolved elsewhere on the final
link line, so the problem stays hidden.

LLVMBOLTCore, LLVMBOLTRewrite, LLVMBOLTPasses, and LLVMBOLTUtils already
link ${LLVM_PTHREAD_LIB}; LLVMBOLTProfile and the LLVMBOLTTarget{X86,
AArch64,RISCV} libs were missing it, causing link failures.
DeltaFile
+3-0bolt/lib/Target/X86/CMakeLists.txt
+3-0bolt/lib/Target/RISCV/CMakeLists.txt
+3-0bolt/lib/Target/AArch64/CMakeLists.txt
+3-0bolt/lib/Profile/CMakeLists.txt
+12-04 files

LLVM/project fc636bellvm/include/llvm/ExecutionEngine/Orc EPCGenericJITLinkMemoryManager.h, llvm/include/llvm/ExecutionEngine/Orc/RTBridge GenericMemoryManagerProxies.h

[ORC] Move EPCGenericJITLinkMemoryManager to RTBridge proxies (#215797)

Reimplement EPCGenericJITLinkMemoryManager's reserve/initialize/release
calls using rt::Proxy objects rather than direct
ExecutorProcessControl::callSPSWrapperAsync calls, matching
EPCGenericMemoryAccess and EPCGenericDylibManager. The manager's
behavior is unchanged.

Details:

* SymbolAddrs (five ExecutorAddrs) becomes Bindings: the allocator
instance address plus rt::Proxy handles.

* The proxy types and SPS specs are hoisted into shared headers --
RTBridge/GenericMemoryManagerProxies.h and
RTBridge/SPS/GenericMemoryManagerProxySpecs.h -- since they now need
only Shared/SPS vocabulary. Deinitialize is included in the family for
completeness though this manager does not call it.


    [9 lines not shown]
DeltaFile
+39-58llvm/lib/ExecutionEngine/Orc/EPCGenericJITLinkMemoryManager.cpp
+23-44llvm/include/llvm/ExecutionEngine/Orc/EPCGenericJITLinkMemoryManager.h
+62-0llvm/include/llvm/ExecutionEngine/Orc/RTBridge/SPS/GenericMemoryManagerProxySpecs.h
+44-0llvm/include/llvm/ExecutionEngine/Orc/RTBridge/GenericMemoryManagerProxies.h
+20-8llvm/unittests/ExecutionEngine/Orc/EPCGenericJITLinkMemoryManagerTest.cpp
+188-1105 files