LLVM/project 6b36d39bolt/include/bolt/Profile DataAggregator.h, bolt/unittests/Profile DataAggregator.cpp

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.4

[skip ci]
DeltaFile
+208-2bolt/unittests/Profile/DataAggregator.cpp
+1-0bolt/include/bolt/Profile/DataAggregator.h
+209-22 files

LLVM/project 29cecd0bolt/include/bolt/Profile DataAggregator.h, bolt/lib/Profile DataReader.cpp DataAggregator.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.4
DeltaFile
+248-2bolt/unittests/Profile/DataAggregator.cpp
+8-3bolt/lib/Profile/DataReader.cpp
+4-2bolt/lib/Profile/DataAggregator.cpp
+1-0bolt/include/bolt/Profile/DataAggregator.h
+261-74 files

LLVM/project e6ef412bolt/include/bolt/Profile DataAggregator.h, bolt/unittests/Profile DataAggregator.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.4
DeltaFile
+208-2bolt/unittests/Profile/DataAggregator.cpp
+1-0bolt/include/bolt/Profile/DataAggregator.h
+209-22 files

LLVM/project 98449cbcompiler-rt/lib/hwasan hwasan_allocator.cpp hwasan_flags.inc, compiler-rt/test/hwasan/TestCases tag_mask_smoke.c

[HWASan] [compiler-rt] Add tag_bits option to HWASan alloc (#192386)

This can be used to make sure the allocator does not use the top bit of
the pointer. This is useful when HWASan is used in combination with
signed-integer-overflow detection. Some code uses arithmetic on intptr_t
that overflows for sufficiently large pointers.
DeltaFile
+21-0compiler-rt/test/hwasan/TestCases/tag_mask_smoke.c
+14-2compiler-rt/lib/hwasan/hwasan_allocator.cpp
+2-0compiler-rt/lib/hwasan/hwasan_flags.inc
+37-23 files

LLVM/project 57e973bllvm/lib/Target/AMDGPU AMDGPUAsmPrinter.cpp, llvm/lib/Target/AMDGPU/AsmParser AMDGPUAsmParser.cpp

[AMDGPU] Add `.amdgpu.info` section for per-function metadata

AMDGPU object linking requires the linker to propagate resource usage
(registers, stack, LDS) across translation units. To support this, the compiler
must emit per-function metadata and call graph edges in the relocatable object
so the linker can compute whole-program resource requirements.

This PR introduces a `.amdgpu.info` ELF section using a tagged, length-prefixed
binary format: each entry is encoded as:

```
[kind: u8] [len: u8] [payload: <len> bytes]
```

A function scope is opened by an `INFO_FUNC` entry (containing a symbol
reference), followed by per-function attributes (register counts, flags, private
segment size) and relational edges (direct calls, LDS uses, indirect call
signatures). String data such as function type signatures is stored in a
companion `.amdgpu.strtab` section.

    [4 lines not shown]
DeltaFile
+197-0llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
+172-2llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+121-0llvm/test/MC/AMDGPU/amdgpu-info-roundtrip.s
+117-0llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+83-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen-prototype.ll
+63-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen-indirect.ll
+753-28 files not shown
+1,033-1214 files

LLVM/project 8521c90llvm/lib/Target/AMDGPU AMDGPUAsmPrinter.cpp SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU lds-link-time-codegen.ll lds-link-time-codegen-named-barrier.ll

[AMDGPU] Emit the relocation symbol for LDS and named barrier when object linking is enabled
DeltaFile
+50-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen.ll
+35-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen-named-barrier.ll
+12-3llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+10-0llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+107-34 files

LLVM/project db3c8cdcompiler-rt/lib/hwasan hwasan_allocator.cpp hwasan_flags.inc, compiler-rt/test/hwasan/TestCases tag_mask_smoke.c

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+21-0compiler-rt/test/hwasan/TestCases/tag_mask_smoke.c
+14-2compiler-rt/lib/hwasan/hwasan_allocator.cpp
+2-0compiler-rt/lib/hwasan/hwasan_flags.inc
+37-23 files

LLVM/project 9816a91compiler-rt/lib/hwasan hwasan_allocator.cpp hwasan_flags.inc, compiler-rt/test/hwasan/TestCases tag_mask_smoke.c

[HWASan] [compiler-rt] Add tag_bits option to HWASan alloc (#191089)

This can be used to make sure the allocator does not use the top bit of
the pointer. This is useful when HWASan is used in combination with
signed-integer-overflow detection. Some code uses arithmetic on intptr_t
that overflows for sufficiently large pointers.
DeltaFile
+21-0compiler-rt/test/hwasan/TestCases/tag_mask_smoke.c
+14-2compiler-rt/lib/hwasan/hwasan_allocator.cpp
+2-0compiler-rt/lib/hwasan/hwasan_flags.inc
+37-23 files

LLVM/project b848e99clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/non-overloaded vpaire.c vpairo.c, clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/overloaded vpairo.c

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+6,877-0llvm/test/tools/llvm-mca/AArch64/Cortex/C1Ultra-sve-instructions.s
+5,336-0llvm/test/tools/llvm-mca/AArch64/Cortex/C1Ultra-writeback.s
+3,167-0llvm/test/tools/llvm-mca/AArch64/Cortex/C1Ultra-neon-instructions.s
+2,723-0clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/overloaded/vpairo.c
+2,723-0clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/non-overloaded/vpaire.c
+2,723-0clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/non-overloaded/vpairo.c
+23,549-0646 files not shown
+86,047-9,587652 files

LLVM/project 78cefa3llvm/lib/Target/AMDGPU AMDGPUAsmPrinter.cpp, llvm/lib/Target/AMDGPU/AsmParser AMDGPUAsmParser.cpp

[AMDGPU] Add `.amdgpu.info` section for per-function metadata

AMDGPU object linking requires the linker to propagate resource usage
(registers, stack, LDS) across translation units. To support this, the compiler
must emit per-function metadata and call graph edges in the relocatable object
so the linker can compute whole-program resource requirements.

This PR introduces a `.amdgpu.info` ELF section using a tagged, length-prefixed
binary format: each entry is encoded as:

```
[kind: u8] [len: u8] [payload: <len> bytes]
```

A function scope is opened by an `INFO_FUNC` entry (containing a symbol
reference), followed by per-function attributes (register counts, flags, private
segment size) and relational edges (direct calls, LDS uses, indirect call
signatures). String data such as function type signatures is stored in a
companion `.amdgpu.strtab` section.

    [4 lines not shown]
DeltaFile
+197-0llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
+172-2llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+121-0llvm/test/MC/AMDGPU/amdgpu-info-roundtrip.s
+117-0llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+83-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen-prototype.ll
+63-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen-indirect.ll
+753-28 files not shown
+1,038-1314 files

LLVM/project 9ae35fcllvm/lib/Target/AMDGPU AMDGPUAsmPrinter.cpp, llvm/lib/Target/AMDGPU/AsmParser AMDGPUAsmParser.cpp

[AMDGPU] Add `.amdgpu.info` section for per-function metadata

AMDGPU object linking requires the linker to propagate resource usage
(registers, stack, LDS) across translation units. To support this, the compiler
must emit per-function metadata and call graph edges in the relocatable object
so the linker can compute whole-program resource requirements.

This PR introduces a `.amdgpu.info` ELF section using a tagged, length-prefixed
binary format: each entry is encoded as:

```
[kind: u8] [len: u8] [payload: <len> bytes]
```

A function scope is opened by an `INFO_FUNC` entry (containing a symbol
reference), followed by per-function attributes (register counts, flags, private
segment size) and relational edges (direct calls, LDS uses, indirect call
signatures). String data such as function type signatures is stored in a
companion `.amdgpu.strtab` section.

    [4 lines not shown]
DeltaFile
+192-0llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
+172-2llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+121-0llvm/test/MC/AMDGPU/amdgpu-info-roundtrip.s
+117-0llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+83-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen-prototype.ll
+63-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen-indirect.ll
+748-28 files not shown
+1,033-1314 files

LLVM/project 0e5e975llvm/lib/CodeGen InlineSpiller.cpp LiveRangeEdit.cpp, llvm/lib/Target/X86 X86InstrInfo.cpp

[X86][APX] Reset SubReg for dst and check isVirtual before getInterval/getPhys (#191765)

We have made sure dst operand never has a SubReg. We need to make sure
register is virtual when calling getInterval/getPhys.
DeltaFile
+287-0llvm/test/CodeGen/X86/apx/add.ll
+219-0llvm/test/CodeGen/X86/apx/sub.ll
+9-5llvm/lib/Target/X86/X86InstrInfo.cpp
+5-2llvm/lib/CodeGen/InlineSpiller.cpp
+5-2llvm/lib/CodeGen/LiveRangeEdit.cpp
+525-95 files

LLVM/project 3f5a247clang/include/clang/AST ASTContext.h, clang/lib/AST ASTContext.cpp ItaniumMangle.cpp

[clang] implement CWG2064: ignore value dependence for decltype

The 'decltype' for a value-dependent (but non-type-dependent) should be known,
so this patch makes them non-opaque instead.

This patch also implements what's neceessary to allow overloading
on pure differences in instantiation dependence, making `std::void_t`
usable for SFINAE purposes.

This also readds a few test cases from da98651, which was a previous attempt
at resolving CWG2064.

Fixes #8740
Fixes #61818
Fixes #190388
DeltaFile
+889-175clang/lib/AST/ASTContext.cpp
+313-12clang/test/SemaTemplate/instantiation-dependence.cpp
+151-93clang/lib/AST/ItaniumMangle.cpp
+76-68clang/lib/AST/Type.cpp
+77-48clang/lib/Sema/SemaTemplate.cpp
+93-16clang/include/clang/AST/ASTContext.h
+1,599-41281 files not shown
+2,324-75787 files

LLVM/project d85709cllvm/lib/Target/AMDGPU AMDGPUAsmPrinter.cpp SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU lds-link-time-codegen.ll lds-link-time-codegen-named-barrier.ll

[AMDGPU] Emit the relocation symbol for LDS and named barrier when object linking is enabled
DeltaFile
+51-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen.ll
+35-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen-named-barrier.ll
+12-3llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+10-0llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+108-34 files

LLVM/project c340f60offload/libomptarget omptarget.cpp, offload/plugins-nextgen/common/src RecordReplay.cpp

[offload] Fix asserts in kernel record replay (#192379)

This commit fixes issues introduced in PR #190588
DeltaFile
+2-2offload/libomptarget/omptarget.cpp
+2-2offload/plugins-nextgen/common/src/RecordReplay.cpp
+4-42 files

LLVM/project 90fc0ccllvm/lib/Target/AMDGPU AMDGPUAsmPrinter.cpp SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU lds-link-time-codegen.ll lds-link-time-codegen-named-barrier.ll

[AMDGPU] Emit the relocation symbol for LDS and named barrier when object linking is enabled
DeltaFile
+43-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen.ll
+36-0llvm/test/CodeGen/AMDGPU/lds-link-time-codegen-named-barrier.ll
+12-3llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+10-0llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+101-34 files

LLVM/project c87a60fllvm/lib/Target/RISCV/MCTargetDesc RISCVMatInt.cpp

[RISCV] Replace Unsigned flag in generateInstSeqImpl with ShiftOpc. NFC (#192363)

Changed ShiftAmount from int to unsigned.
DeltaFile
+5-6llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp
+5-61 files

LLVM/project de5a7f1llvm/lib/Target/RISCV/MCTargetDesc RISCVMatInt.cpp, llvm/test/MC/RISCV rv32p-aliases-valid.s

[RISCV] Prefer LUI over PLUI.H on RV32. (#192340)

I don't think any of the cases PLUI.H can handle would be eligible for
C.LUI, but still figured it was best to use base ISA instructions when
possible.
DeltaFile
+7-3llvm/test/MC/RISCV/rv32p-aliases-valid.s
+3-1llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp
+10-42 files

LLVM/project 53cf0d5clang/test/Driver serenity.cpp

[clang] Make serenity.cpp tests pass on clang-with-thin-lto-ubuntu (#192231)

LTO_FULL-NOT was definitely too generic and prone to matching unrelated
content. It would, as an example, match against the build path on
clang-with-thin-lto-ubuntu builder [1].

Making the match more restrictive should avoid this kind of issues.

[1] https://lab.llvm.org/buildbot/#/builders/127/builds/6956
DeltaFile
+1-1clang/test/Driver/serenity.cpp
+1-11 files

LLVM/project dea55c9mlir/lib/Dialect/NVGPU/IR NVGPUDialect.cpp, mlir/test/Dialect/NVGPU invalid.mlir

[mlir][NVGPU] Validate mmaShape has 3 elements in MmaSyncOp/MmaSparseSyncOp (#190928)

Add validation in MmaSyncOp::verify and MmaSparseSyncOp::verify to
ensure `mmaShape` contains exactly 3 elements before calling
getMmaShapeAsArray() to avoid crash. Fixes
https://github.com/llvm/llvm-project/issues/173378.
DeltaFile
+34-0mlir/test/Dialect/NVGPU/invalid.mlir
+7-0mlir/lib/Dialect/NVGPU/IR/NVGPUDialect.cpp
+41-02 files

LLVM/project 3089120clang/lib/Index CommentToXML.cpp, clang/lib/Sema SemaDeclAttr.cpp SemaAvailability.cpp

Redesign handling of anyAppleOS availability attribute (#190817)

Previously, when processing an anyAppleOS availability attribute, clang
replaced it with an implicit platform-specific attribute (e.g., ios,
macos) inferred for the current target. Only the introduced version of
the original anyAppleOS attribute was preserved (as a field on the
inferred attr). This was insufficient for clients such as Swift that
need access to the full original attribute, including deprecated,
obsoleted, and message fields.

This patch preserves the original anyAppleOS attribute on the decl and
attaches the inferred platform-specific attribute to it as a child via
the new InferredAttr field. Most callers use getEffectiveAttr() to
transparently get the inferred attr when present, preserving existing
behavior. Fix-it hints use the presence of an inferred attr to decide
whether to emit "anyAppleOS" or a platform-specific name in the
@available expression. The one behavioral change is in documentation
XML, where availability info is now emitted for both the anyAppleOS attr
and the inferred platform-specific attr.

    [4 lines not shown]
DeltaFile
+67-28clang/lib/Sema/SemaDeclAttr.cpp
+43-40clang/lib/Index/CommentToXML.cpp
+56-0clang/test/Sema/attr-availability-anyappleos.c
+52-3clang/utils/TableGen/ClangAttrEmitter.cpp
+31-17clang/test/Sema/attr-availability-anyappleos-ast.c
+22-21clang/lib/Sema/SemaAvailability.cpp
+271-10910 files not shown
+357-12816 files

LLVM/project 493edebclang/include/clang/AST ASTContext.h, clang/lib/AST ASTContext.cpp ItaniumMangle.cpp

[clang] implement CWG2064: ignore value dependence for decltype

The 'decltype' for a value-dependent (but non-type-dependent) should be known,
so this patch makes them non-opaque instead.

This patch also implements what's neceessary to allow overloading
on pure differences in instantiation dependence, making `std::void_t`
usable for SFINAE purposes.

This also readds a few test cases from da98651, which was a previous attempt
at resolving CWG2064.

Fixes #8740
Fixes #61818
Fixes #190388
DeltaFile
+890-175clang/lib/AST/ASTContext.cpp
+287-12clang/test/SemaTemplate/instantiation-dependence.cpp
+151-93clang/lib/AST/ItaniumMangle.cpp
+76-68clang/lib/AST/Type.cpp
+77-48clang/lib/Sema/SemaTemplate.cpp
+93-16clang/include/clang/AST/ASTContext.h
+1,574-41281 files not shown
+2,303-75287 files

LLVM/project cf88f06llvm/test/CodeGen/AArch64 ragreedy-csr.ll, llvm/test/CodeGen/X86 lsr-addrecloops.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+257-94llvm/test/Transforms/LoopStrengthReduce/X86/bin_power.ll
+111-116llvm/test/CodeGen/AArch64/ragreedy-csr.ll
+70-37llvm/test/Transforms/LoopStrengthReduce/X86/normalization-during-scev-expansion.ll
+106-0llvm/test/Transforms/LoopStrengthReduce/X86/lcssa-preservation-regression.ll
+84-5llvm/test/Transforms/LoopStrengthReduce/X86/2011-12-04-loserreg.ll
+34-37llvm/test/CodeGen/X86/lsr-addrecloops.ll
+662-28941 files not shown
+933-43147 files

LLVM/project ea26f42llvm/test/CodeGen/AArch64 ragreedy-csr.ll, llvm/test/CodeGen/X86 lsr-addrecloops.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+257-94llvm/test/Transforms/LoopStrengthReduce/X86/bin_power.ll
+111-116llvm/test/CodeGen/AArch64/ragreedy-csr.ll
+70-37llvm/test/Transforms/LoopStrengthReduce/X86/normalization-during-scev-expansion.ll
+84-5llvm/test/Transforms/LoopStrengthReduce/X86/2011-12-04-loserreg.ll
+34-37llvm/test/CodeGen/X86/lsr-addrecloops.ll
+34-22llvm/test/Transforms/LoopStrengthReduce/X86/postinc-iv-used-by-urem-and-udiv.ll
+590-31141 files not shown
+862-43147 files

LLVM/project f6c6be1clang/include/clang/AST ASTContext.h, clang/lib/AST ASTContext.cpp ItaniumMangle.cpp

[clang] implement CWG2064: ignore value dependence for decltype

The 'decltype' for a value-dependent (but non-type-dependent) should be known,
so this patch makes them non-opaque instead.

This patch also implements what's neceessary to allow overloading
on pure differences in instantiation dependence, making `std::void_t`
usable for SFINAE purposes.

This also readds a few test cases from da98651, which was a previous attempt
at resolving CWG2064.

Fixes #8740
Fixes #61818
Fixes #190388
DeltaFile
+890-175clang/lib/AST/ASTContext.cpp
+287-12clang/test/SemaTemplate/instantiation-dependence.cpp
+151-93clang/lib/AST/ItaniumMangle.cpp
+76-68clang/lib/AST/Type.cpp
+77-48clang/lib/Sema/SemaTemplate.cpp
+93-16clang/include/clang/AST/ASTContext.h
+1,574-41281 files not shown
+2,303-75287 files

LLVM/project 47b5ad2mlir/lib/Transforms CSE.cpp

[mlir][CSE] Fix dominanceInfo analysis preservation (#192279)

The CSE pass calls `markAnalysesPreserved<DominanceInfo,
PostDominanceInfo>()` at the end. While CSE erases operations, it does
not remove their corresponding dominator trees, causing them to be
unnecessarily preserved in memory. This PR addresses the issue by
explicitly calling invalidate within CSE to clean up the dominator trees
for those erased operations.
DeltaFile
+6-2mlir/lib/Transforms/CSE.cpp
+6-21 files

LLVM/project 12a4adfoffload/plugins-nextgen/common/include RecordReplay.h PluginInterface.h, offload/plugins-nextgen/common/src PluginInterface.cpp RecordReplay.cpp

[offload] Fix kernel record/replay and add extensible mechanism (#190588)

This commit fixes the kernel record replay on both AMD and CUDA devices. It
also re-organizes the record replay code, moves the whole code to separate
files, and makes it extensible to support other record formats (potentially in
the future). The environment variables for controlling the recording have also
been modified.
DeltaFile
+43-384offload/plugins-nextgen/common/src/PluginInterface.cpp
+328-0offload/plugins-nextgen/common/src/RecordReplay.cpp
+258-0offload/plugins-nextgen/common/include/RecordReplay.h
+63-116offload/plugins-nextgen/cuda/src/rtl.cpp
+96-57offload/tools/kernelreplay/llvm-omp-kernel-replay.cpp
+97-14offload/plugins-nextgen/common/include/PluginInterface.h
+885-57115 files not shown
+1,282-64221 files

LLVM/project 4a24c68llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/ARM setcc-logic.ll

[DAGCombiner] Fold (or (seteq X, 0), (seteq X, -1)) to (setult (add X, 1), 2) (#192183)

This is the De Morgan dual of the existing fold:
    (and (setne X, 0), (setne X, -1)) --> (setuge (add X, 1), 2)

The or-of-equalities version checks if X is either 0 or -1, which is
equivalent to (X+1) < 2 (unsigned). This reduces two comparisons and
an or to one add and one comparison.

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply at anthropic.com>
DeltaFile
+14-0llvm/test/CodeGen/ARM/setcc-logic.ll
+4-4llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+18-42 files

LLVM/project 7780e54llvm/include/llvm/CodeGen AsmPrinterAnalysis.h

[AsmPrinter] Fix AsmPrinterAnalysis::Result::invalidate to take PreservedAnalyses by const reference (#191742)

The invalidate method was taking PreservedAnalyses by value instead of
by const reference, causing an unnecessary copy on every invalidation
query. All other analysis invalidate methods in LLVM use const
reference.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply at anthropic.com>
DeltaFile
+1-1llvm/include/llvm/CodeGen/AsmPrinterAnalysis.h
+1-11 files

LLVM/project 2dc9e4dclang/include/clang/AST ASTContext.h, clang/lib/AST ASTContext.cpp ItaniumMangle.cpp

[clang] implement CWG2064: ignore value dependence for decltype

The 'decltype' for a value-dependent (but non-type-dependent) should be known,
so this patch makes them non-opaque instead.

This patch also implements what's neceessary to allow overloading
on pure differences in instantiation dependence, making `std::void_t`
usable for SFINAE purposes.

This also readds a few test cases from da98651, which was a previous attempt
at resolving CWG2064.

Fixes #8740
Fixes #61818
Fixes #190388
DeltaFile
+887-175clang/lib/AST/ASTContext.cpp
+287-12clang/test/SemaTemplate/instantiation-dependence.cpp
+151-93clang/lib/AST/ItaniumMangle.cpp
+76-68clang/lib/AST/Type.cpp
+77-48clang/lib/Sema/SemaTemplate.cpp
+93-16clang/include/clang/AST/ASTContext.h
+1,571-41279 files not shown
+2,279-75085 files