LLVM/project db7356dlibcxx/src new.cpp, libcxx/src/include overridable_function.h

[libc++] Partially revert #208330 (#209928)

We found out that the new mechanism for detecting overriden functions
does not support Arm Pointer Authentication (PAuth). Addressing this
limitation is going to require changes to Clang. In the meantime, we
switched back to the old mechanism when PAuth is enabled.
DeltaFile
+67-8libcxx/src/include/overridable_function.h
+4-4libcxx/src/new.cpp
+4-4libcxxabi/src/stdlib_new_delete.cpp
+75-163 files

LLVM/project 18fc5a8llvm/lib/Target/RISCV RISCVSubtarget.cpp, llvm/test/TableGen MacroFusion.td

[TableGen][RISCV] Generate pre/post-RA statistics for macro fusions (#209394)

Teach `MacroFusionPredicatorEmitter` to emit `Statistic` counters
recording how often each macro fusion is matched, and wire them
up for RISC-V.

This is based on the idea in #186499, generalized so counters are
generated automatically for any target using the emitter.

Because both the pre-RA and post-RA schedulers run MacroFusion,
a single counter would conflate the two. Counters are split into
pre-RA/post-RA variants, distinguished by the `NoVRegs` property,
addressing the double-counting concern from #186499:

```cpp
  STATISTIC(NumTuneLDADDFusionPreRA,  "Times TuneLDADDFusion Triggered (pre-ra)");
  STATISTIC(NumTuneLDADDFusionPostRA, "Times TuneLDADDFusion Triggered (post-ra)");
  ...
    if (SecondMI.getMF()->getProperties().hasNoVRegs())

    [8 lines not shown]
DeltaFile
+41-10llvm/test/TableGen/MacroFusion.td
+24-0llvm/utils/TableGen/MacroFusionPredicatorEmitter.cpp
+7-3llvm/lib/Target/RISCV/RISCVSubtarget.cpp
+72-133 files

LLVM/project 3d87de8mlir/include/mlir/Dialect/Tosa/IR TosaComplianceData.h.inc TosaOps.td, mlir/test/Dialect/Tosa tosa-validation-version-1p1-valid.mlir ops.mlir

[mlir][tosa] Add support for MXFP in CONCAT (#209719)

Adds support to profile compliance for MXFP variants of CONCAT

Signed-off-by: Philip Wilkinson <philip.wilkinson at arm.com>
DeltaFile
+25-1mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc
+8-0mlir/test/Dialect/Tosa/tosa-validation-version-1p1-valid.mlir
+8-0mlir/test/Dialect/Tosa/ops.mlir
+7-0mlir/test/Dialect/Tosa/tosa-validation-version-1p0-invalid.mlir
+5-1mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td
+1-1mlir/test/Dialect/Tosa/availability.mlir
+54-36 files

LLVM/project 8866215llvm/include/llvm-c Orc.h

[Orc] Update the comment so it doesn't mention TargetTriple argument that no longer exists (#210023)

Completes the fix for the
https://github.com/llvm/llvm-project/issues/80097
DeltaFile
+4-5llvm/include/llvm-c/Orc.h
+4-51 files

LLVM/project 3faf46dorc-rt/include/orc-rt Session.h InProcessControllerAccess.h, orc-rt/lib/executor InProcessControllerAccess.cpp

[orc-rt] Session::OnCallControllerReturnFn, comments. NFC. (#210035)

Rename Session::OnCallHandlerCompleteFn to
Session::OnControllerCallReturnFn and add a comment to clarify its
purpose: This callback is used to handle retured values from calls to
the controller.
DeltaFile
+8-6orc-rt/include/orc-rt/Session.h
+5-5orc-rt/test/unit/SessionTest.cpp
+4-3orc-rt/include/orc-rt/InProcessControllerAccess.h
+3-3orc-rt/lib/executor/InProcessControllerAccess.cpp
+20-174 files

LLVM/project 5e4f440clang/test/CodeGen amdgpu-builtin-is-invocable.c amdgpu-builtin-processor-is.c, clang/test/CodeGenCXX dynamic-cast-address-space.cpp

[AMDGPU] Clean up GFX13 feature list (#208416)

GFX13 features were previously mostly inherited from GFX12/GFX1250.
- define an explicit gfx13 target parser feature list, including
gfx13-insts and cvt-pknorm-vop3-insts.
- remove transpose load F4/F6 support from gfx13 (previously copied from
gfx12)
DeltaFile
+43-3llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+0-16llvm/test/MC/AMDGPU/gfx13_asm_vds.s
+2-2clang/test/CodeGenCXX/dynamic-cast-address-space.cpp
+1-1clang/test/CodeGen/amdgpu-builtin-is-invocable.c
+1-1clang/test/CodeGen/amdgpu-builtin-processor-is.c
+0-1llvm/lib/Target/AMDGPU/AMDGPU.td
+47-246 files

LLVM/project 57ceb12llvm/include/llvm/DebugInfo/PDB/Native LinePrinter.h

[DebugInfo][NFC] Fix PDB/Native/LinePrinter.h build warning -Wmicrosoft-unqualified-friend (#209715)

Fix build warning on Windows, which is error under -Werror: unqualified
friend declaration referring to type outside of the nearest enclosing
namespace is a Microsoft extension; add a nested name specifier
[-Wmicrosoft-unqualified-friend]
DeltaFile
+2-1llvm/include/llvm/DebugInfo/PDB/Native/LinePrinter.h
+2-11 files

LLVM/project 5a98e96flang/test/Driver fakeflang.F, flang/tools CMakeLists.txt

[Flang][CMake] Use fakeflang as dispatcher (#209482)

With #203481 where `runtimes-configure` does not depend on `flang`
anymore, the following race could happen in incremental builds: While
ninja/make builds some of the libFortran*.so libraries in a
BUILD_SHARED_LIBS=ON build, CMake tries to execute flang which tries to
load the .so libraries while they are linked. This race condition can
only happen in incremental builds because before the real bin/flang is
built completely the first time, it points to fakeflang which would be
working. Only in an incremental build, would the real bin/flang already
been built created before, pointing to the currently re-built flang.
I did not think this would be possible because CMake only needs to probe
flang once and thereafter (in the incremental build) remembers the probe
result in `CMakeFiles/<version>/CMakeFortranCompiler.cmake`. CMake does
not support changing the compiler once configured and errors-out if you
try to change `CMAKE_Fortran_COMPILER`. I do not know why/when CMake is
re-probing the compiler in some incremental builds, but has been
reported to do so in #205360.


    [11 lines not shown]
DeltaFile
+67-21flang/tools/fakeflang/fakeflang.cpp
+25-3flang/test/Driver/fakeflang.F
+3-18flang/tools/fakeflang/CMakeLists.txt
+0-18flang/tools/flang-driver/CMakeLists.txt
+0-13flang/tools/fakeflang/ensure_flang_exists.cmake
+2-6flang/tools/CMakeLists.txt
+97-791 files not shown
+104-807 files

LLVM/project 83eac37flang/include/flang/Lower PFTBuilder.h, flang/lib/Lower PFTBuilder.cpp

[flang][PFT] record every target of multiway branches (#210012)

The Evaluation node stored branch targets in a single `Evaluation *`
(`controlSuccessor`). `markBranchTarget` therefore silently dropped
every target after the first when lowering a computed `GO TO` or
arithmetic `IF`, so any analysis that consulted `controlSuccessor` to
enumerate branch targets saw only the first label.

Add `extraControlSuccessors` alongside
`controlSuccessor`. `markBranchTarget` still fills `controlSuccessor`
with the first target, but appends each subsequent distinct target to
`extraControlSuccessors`. Extend the PFT dumper to print the extra
targets after the first ("-> N, M, K"), so PFT dumps expose every branch
target.

Co-Authored-By: Claude Sonnet 4.6 <noreply at anthropic.com>

Co-authored-by: Claude Sonnet 4.6 <noreply at anthropic.com>
DeltaFile
+41-0flang/test/Lower/pre-fir-tree-multiway-branch.f90
+15-3flang/lib/Lower/PFTBuilder.cpp
+11-4flang/include/flang/Lower/PFTBuilder.h
+2-2flang/test/Lower/pre-fir-tree02.f90
+69-94 files

LLVM/project 20a86a2offload/unittests/OffloadAPI/program olCreateProgram.cpp

[offload] fix failure of olCreateProgramTest.TruncatedBinary (#210024)

https://github.com/llvm/llvm-project/pull/207208 caused a CI failure on
openmp-offload-amdgpu-clang-flang in the
olCreateProgramTest.TruncatedBinary test.

This PR removes this test case, as it's unclear whether guarding against
such cases is worth it.
DeltaFile
+0-12offload/unittests/OffloadAPI/program/olCreateProgram.cpp
+0-121 files

LLVM/project ad792fallvm/lib/Transforms/Vectorize/SLPVectorizer SLPUtils.cpp

[SLP][NFC] Address follow-up cleanups in SLPUtils (#210016)

Follow-up to #206881, addressing deferred review comments:
- Assert VL is non-empty in allSameType before consume_front.
- Use llvm::all_of instead of std::all_of in allSameOpcode.
- Rewrite isVectorLikeInstWithConstOps as a dyn_cast + opcode switch.

---------

Co-authored-by: Antonio Frighetto <me at antoniofrighetto.com>
DeltaFile
+13-9llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPUtils.cpp
+13-91 files

LLVM/project ac18363llvm/lib/Transforms/Scalar Reassociate.cpp, llvm/test/CodeGen/AMDGPU reassoc-uniform-e2e.ll

review
DeltaFile
+0-141llvm/test/CodeGen/AMDGPU/reassoc-uniform-e2e.ll
+10-27llvm/lib/Transforms/Scalar/Reassociate.cpp
+1-0llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
+1-0llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
+1-0llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
+1-0llvm/test/Other/new-pm-defaults.ll
+14-1683 files not shown
+17-1689 files

LLVM/project 59d7709polly/lib/Transform DeLICM.cpp, polly/test/DeLICM outofquota-greedycollapse.ll

Bound ISL operations during DeLICM scalar collapsing (#203073)

The IslMaxOperationsGuard in DeLICM previously covered only the zone
analysis performed in computeZone(). The subsequent greedyCollapse() ->
collapseScalarsToStore() path calls computeScalarReachingOverwrite(),
which performs an unbounded ISL lexmin().
Share a single[already present], dormant IslMaxOperationsGuard across
both regions and arm it narrowly around each operation intensive
computation via IslQuotaScope, so the same operations budget covers both
computeZone() and the scalar collapsing. When the quota is exceeded
during scalar collapsing, bail out cleanly: increment DeLICMOutOfQuota
and emit an "OutOfQuota" analysis remark.

Fixes: https://github.com/llvm/llvm-project/issues/202045
DeltaFile
+70-0polly/test/DeLICM/outofquota-greedycollapse.ll
+48-6polly/lib/Transform/DeLICM.cpp
+118-62 files

LLVM/project 3f23bcdclang/test/OpenMP teams_distribute_parallel_for_simd_if_openmp52_codegen.cpp target_teams_distribute_parallel_for_simd_if_openmp52_codegen.cpp, llvm/test/CodeGen/AMDGPU/GlobalISel legalize-llvm.amdgcn.image.sample.a16.ll legalize-store-global.mir

Merge main into users/mariusz-sikora-at-amd/gfx13/clean-up-feature-list
DeltaFile
+23,904-12llvm/test/CodeGen/RISCV/clmul.ll
+6,603-5,923llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-llvm.amdgcn.image.sample.a16.ll
+12,190-0clang/test/OpenMP/teams_distribute_parallel_for_simd_if_openmp52_codegen.cpp
+12,098-0clang/test/OpenMP/target_teams_distribute_parallel_for_simd_if_openmp52_codegen.cpp
+4,743-4,743llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-store-global.mir
+4,076-4,028llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-llvm.amdgcn.image.dim.a16.ll
+63,614-14,70610,346 files not shown
+446,333-303,33010,352 files

LLVM/project 04de370llvm/include/llvm/Analysis DependenceAnalysis.h, llvm/lib/Analysis DependenceAnalysis.cpp

[DA] Rewrite BanerjeeMIV test with safe APInt interval arithmetic

The old banerjeeMIVtest computed inequality bounds using SCEV
arithmetic on 64-bit integers. Intermediate operations like
$(A^{-} - B^{+}) \times Iterations$ could overflow i64 even when all individual
coefficients and loop bounds fit, producing unsound results.

Replace the symbolic bound machinery with a self-contained APInt
interval arithmetic implementation. Key design decisions:

- BanerjeeInterval holds [Lower, Upper] signed-inclusive bounds.
  Operations use APInt arithmetic at WideBits, chosen to guarantee no
  intermediate overflow:
  $$
    WideBits = max(8, 2 \times BaseBits + MaxLevels + 8)
  $$
  This is provably sufficient, each term product needs at most `2 \times BaseBits + 1`
  bits, and summing across MaxLevels terms needs at most ceil($\log_2 (MaxLevels)$)
  extra bits.

    [15 lines not shown]
DeltaFile
+415-417llvm/lib/Analysis/DependenceAnalysis.cpp
+104-3llvm/test/Analysis/DependenceAnalysis/banerjee-overflow.ll
+20-50llvm/include/llvm/Analysis/DependenceAnalysis.h
+2-4llvm/test/Analysis/DependenceAnalysis/gcd-miv-overflow.ll
+1-1llvm/test/Analysis/DependenceAnalysis/PR51512.ll
+542-4755 files

LLVM/project 40be4f9clang/lib/Driver/ToolChains FreeBSD.cpp, clang/test/Driver freebsd.c hie-fpie-option-freebsd.hip

fixup! [Clang] Switch to Default PIE on FreeBSD
DeltaFile
+27-29clang/test/Driver/freebsd.c
+0-38clang/test/Driver/hie-fpie-option-freebsd.hip
+36-0clang/test/Driver/hip-fpie-option-freebsd.hip
+9-3clang/lib/Driver/ToolChains/FreeBSD.cpp
+2-2flang/test/Driver/linker-options.f90
+2-2clang/test/Driver/freebsd-mips-as.c
+76-749 files not shown
+77-9015 files

LLVM/project 83582cfclang/lib/CodeGen CGExprScalar.cpp, clang/test/CodeGen c11atomics.c

[clang][CodeGen] Do not use atomicrmw in compound assignments with FP conversions (#209114)

Per C11 6.5.16.2p1, when the left operand of operator `+=` has atomic
type, the right shall have arithmetic type. Do not try the `atomicrmw`
fast-path when FP conversion, arithmetic and truncation are required, as
a single atomic operation may not correctly capture the combined
semantics.

Fixes: https://github.com/llvm/llvm-project/issues/208997.
DeltaFile
+17-5clang/lib/CodeGen/CGExprScalar.cpp
+21-0clang/test/CodeGen/c11atomics.c
+38-52 files

LLVM/project 9b5ad6eoffload/plugins-nextgen/amdgpu/src rtl.cpp, offload/plugins-nextgen/cuda/dynamic_cuda cuda.h

[offload] add translation of plugin-specific error codes to Offload API ECs (#207208)

liboffload plugins would not always exhaustively map the underlying
API's error values to ol_errc_t, resulting in unintended behavior - e.g.
olCreateProgram, given an invalid binary, would return OL_ERRC_UNKNOWN
instead of OL_ERRC_INVALID_BINARY.

This patch largely eliminates the most glaring cases of this by
assigning an ol_errc_t value to every error code of the underlying API
in every plugin. The proper granularity for this mapping is per-API
call, but that is a large rework that belongs in a separate patch.

Assisted-by: Claude
DeltaFile
+96-0offload/plugins-nextgen/cuda/dynamic_cuda/cuda.h
+61-5offload/plugins-nextgen/level_zero/include/L0Trace.h
+38-12offload/plugins-nextgen/cuda/src/rtl.cpp
+42-5offload/unittests/OffloadAPI/program/olCreateProgram.cpp
+27-14offload/plugins-nextgen/amdgpu/src/rtl.cpp
+23-16offload/plugins-nextgen/level_zero/src/L0Program.cpp
+287-525 files not shown
+340-6311 files

LLVM/project 65180a5llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/RISCV strided-accesses.ll

[VPlan] Relax address constraints during stride analysis (#209168)

VPlanTransforms::convertToStridedAccesses() only handled loads whose
address was a VPWidenGEPRecipe, missing pointer-induction loops where
the address is computed differently. Analyze the address VPValue
directly so these cases are also converted to strided loads.

Fixed #207171
DeltaFile
+2-5llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+5-1llvm/test/Transforms/LoopVectorize/RISCV/strided-accesses.ll
+7-62 files

LLVM/project 983ad0dllvm/docs AMDGPUDMAOperations.md

immediate, wave-uniform
DeltaFile
+22-22llvm/docs/AMDGPUDMAOperations.md
+22-221 files

LLVM/project 9277129llvm/test/CodeGen/AMDGPU hsa-generic-target-features.ll generic-targets-require-v6.ll

AMDGPU: Use subarch in tests using generic arches (#209870)

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+21-21llvm/test/CodeGen/AMDGPU/hsa-generic-target-features.ll
+18-18llvm/test/CodeGen/AMDGPU/generic-targets-require-v6.ll
+1-1llvm/test/CodeGen/AMDGPU/convergent.mir
+40-403 files

LLVM/project adc0f68llvm/test/CodeGen/AMDGPU pr155452.ll fmuladd.f32.ll, llvm/test/CodeGen/AMDGPU/GlobalISel flat-scratch-init.ll

AMDGPU: Convert tests to use subarch from triples in the file (#209869)

This set was using target triple in the source rather than command
line arguments.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+51-55llvm/test/CodeGen/AMDGPU/pr155452.ll
+14-15llvm/test/CodeGen/AMDGPU/fmuladd.f32.ll
+2-5llvm/test/CodeGen/AMDGPU/GlobalISel/flat-scratch-init.ll
+2-4llvm/test/CodeGen/AMDGPU/addrspacecast.ll
+2-4llvm/test/CodeGen/AMDGPU/callee-special-input-vgprs-packed.ll
+2-3llvm/test/CodeGen/AMDGPU/debug-independence-adjustSchedDependency.ll
+73-8617 files not shown
+94-12423 files

LLVM/project 2b8125cclang/docs ReleaseNotes.md, clang/include/clang/Basic OpenCLExtensions.def

[Clang][OpenCL] Promote a few extensions to OpenCL 3.1 core (#204330)

Following 6 OpenCL extensions are promoted to core features in 3.1:
https://github.com/KhronosGroup/OpenCL-Docs/commit/9fff1a87a975
- cl_khr_extended_bit_ops
- cl_khr_integer_dot_product
- cl_khr_subgroup_extended_types
- cl_khr_subgroup_rotate
- cl_khr_subgroup_shuffle
- cl_khr_subgroup_shuffle_relative

A target claiming OpenCL C 3.1 conformance without supporting one of
these features is now diagnosed.
Updated release notes for the change.

Assisted-by: Claude
DeltaFile
+8-8clang/include/clang/Basic/OpenCLExtensions.def
+8-0clang/test/Misc/amdgcn.unsupported_core_3.1.cl
+6-0clang/docs/ReleaseNotes.md
+2-0clang/test/SemaOpenCL/extension-version.cl
+24-84 files

LLVM/project c1ba7d0clang/lib/AST/ByteCode Pointer.cpp Interp.h, clang/test/AST/ByteCode virtual-bases.cpp cxx11.cpp

Reapply "[clang][bytecode] Diagnose pointer subtractions of elements … (#209998)

…of different arrays" (#209969)

This reverts commit 745b946cbbf30708044b4a2c4a7726d0c02ca0de.

Use only one `fold()` for the virtual base offset assertions.
The pointer subtraction _is_ invalid, but the current interpreter
doesn't diagnose it since the `LValueDesignator`s are invalid.
DeltaFile
+39-3clang/lib/AST/ByteCode/Pointer.cpp
+12-12clang/test/AST/ByteCode/virtual-bases.cpp
+19-0clang/test/AST/ByteCode/cxx11.cpp
+9-1clang/lib/AST/ByteCode/Interp.h
+1-1clang/lib/AST/ByteCode/Pointer.h
+80-175 files

LLVM/project 119fbaeflang/lib/Lower PFTBuilder.cpp, flang/test/Lower do_loop_execute_region_wrap.f90

[flang][PFT] check every branch target in wrappability analyses

Co-Authored-By: Claude Sonnet 4.6 <noreply at anthropic.com>
DeltaFile
+38-0flang/test/Lower/do_loop_execute_region_wrap.f90
+24-7flang/lib/Lower/PFTBuilder.cpp
+62-72 files

LLVM/project d32614fflang/lib/Lower PFTBuilder.cpp, flang/test/Lower do_loop_unstructured.f90 do_loop_execute_region_wrap.f90

[flang][PFT-to-MLIR] Wrap unstructured Fortran constructs in scf.execute_region

Extend the PFT-to-MLIR (HLFIR/FIR) lowering so unstructured DO and IF
constructs are emitted inside scf.execute_region, hiding their multi-block
CFG behind a single op. OpenACC and OpenMP lowerings that reject
multi-block content (e.g. the "unstructured do loop in combined acc
construct" TODO in OpenACC.cpp) now see a structured op instead.

Flag: -mmlir --wrap-unstructured-constructs-in-execute-region (default on).

An evaluation is wrappable iff all of the following hold:

  * wrap flag on
  * eval is parser::DoConstruct or parser::IfConstruct
  * eval.isUnstructured
  * branchesAreInternal(eval) -- every controlSuccessor in the subtree
    targets a nested eval or the constructExit
  * !hasIncomingBranch(eval) -- no outside eval branches into the body
    (PFT's synthetic IfConstruct around `if(c) goto X` absorbs label

    [29 lines not shown]
DeltaFile
+234-2flang/lib/Lower/PFTBuilder.cpp
+103-102flang/test/Lower/OpenMP/unstructured.f90
+177-24flang/test/Lower/OpenACC/acc-unstructured.f90
+38-87flang/test/Lower/do_loop_unstructured.f90
+111-0flang/test/Lower/do_loop_execute_region_wrap.f90
+47-61flang/test/Lower/mixed_loops.f90
+710-27621 files not shown
+1,058-51727 files

LLVM/project fb2feebllvm/include/llvm/Analysis TargetTransformInfo.h, llvm/lib/Analysis TargetTransformInfo.cpp

[RISCV][VPlan] Cost vp.merges that are likely to be folded away as free (#209387)

A vp.merge is lowered to a PseudoVMERGE_VVM on RISC-V, and
RISCVVectorPeehole usually folds away PseudoVMERGE_VVMs when its true
operand is a binary op.

This accounts for this in the cost model and plumbs it through the loop
vectorizer. The following reduction loop was previously considered
unprofitable to vectorize, but after this change is now vectorized, and
folds away all its vp.merges:

    void three_gathers(const long *a, const long *c, const long *d,
                       const long *b, long n, long *out) {
      long s1 = 0, s2 = 0, s3 = 0;
      for (long i = 0; i < n; i++) {
        long j = b[i];
        s1 += a[j];
        s2 += c[j];
        s3 += d[j];

    [12 lines not shown]
DeltaFile
+23-15llvm/include/llvm/Analysis/TargetTransformInfo.h
+17-8llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-reduction-cost.ll
+6-7llvm/lib/Analysis/TargetTransformInfo.cpp
+9-1llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+8-0llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
+1-1llvm/test/Transforms/LoopVectorize/RISCV/force-vect-msg.ll
+64-326 files

LLVM/project a4728f4flang/include/flang/Lower PFTBuilder.h, flang/lib/Lower PFTBuilder.cpp

[flang][PFT] record every target of multiway branches

The Evaluation node stored branch targets in a single `Evaluation *`
(`controlSuccessor`). `markBranchTarget` therefore silently dropped every
target after the first when lowering a computed `GO TO` or arithmetic `IF`,
so any analysis that consulted `controlSuccessor` to enumerate branch
targets saw only the first label.

Add `extraControlSuccessors` alongside
`controlSuccessor`. `markBranchTarget` still fills `controlSuccessor` with the
first target, but appends each subsequent distinct target to
`extraControlSuccessors`. Extend the PFT dumper to print the extra targets
after the first ("-> N, M, K"), so PFT dumps expose every branch target.

Co-Authored-By: Claude Sonnet 4.6 <noreply at anthropic.com>
DeltaFile
+41-0flang/test/Lower/pre-fir-tree-multiway-branch.f90
+15-3flang/lib/Lower/PFTBuilder.cpp
+11-4flang/include/flang/Lower/PFTBuilder.h
+2-2flang/test/Lower/pre-fir-tree02.f90
+69-94 files

LLVM/project e9a8eb5llvm/unittests/Frontend OpenMPIRBuilderTest.cpp, llvm/unittests/Target/AMDGPU AMDGPUUnitTests.cpp DwarfRegMappings.cpp

AMDGPU: Use subarch triples in more unit tests

Avoid looking up the target by the cpu name with the legacy
amdgcn name.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+38-32llvm/unittests/Target/AMDGPU/AMDGPUUnitTests.cpp
+8-6llvm/unittests/Target/AMDGPU/DwarfRegMappings.cpp
+2-3llvm/unittests/Target/AMDGPU/UniformityAnalysisTest.cpp
+2-2llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+2-1llvm/unittests/Target/AMDGPU/AMDGPUUnitTests.h
+1-1llvm/unittests/Target/AMDGPU/AMDGPUMCExprTest.cpp
+53-455 files not shown
+58-5011 files

LLVM/project d94df00llvm/test/tools/llvm-reduce/mir preserve-max-call-frame-size.mir preserve-mem-operands.mir

AMDGPU: Convert llvm-reduce tests to new subarch triples (62) (#209868)

Pick arbitrary real subarch
DeltaFile
+1-1llvm/test/tools/llvm-reduce/mir/preserve-max-call-frame-size.mir
+1-1llvm/test/tools/llvm-reduce/mir/preserve-mem-operands.mir
+1-1llvm/test/tools/llvm-reduce/mir/preserve-reg-hints.mir
+1-1llvm/test/tools/llvm-reduce/mir/reduce-instruction-flags.mir
+1-1llvm/test/tools/llvm-reduce/mir/reduce-instruction-unreachable-block.mir
+1-1llvm/test/tools/llvm-reduce/mir/reduce-register-defs.mir
+6-619 files not shown
+25-2525 files