LLVM/project e4bb0acopenmp/runtime/src kmp_traits.cpp kmp_traits.h, openmp/runtime/unittests/Traits MockOMP.cpp TestOMPTraitLexer.cpp

[libomp] OpenMP 6.0: Add device trait parser (#176164)

OpenMP 6.0 introduced a device trait specification language for the
environment variables OMP_AVAILABLE_DEVICES (4.3.7) and
OMP_DEFAULT_DEVICE (4.3.8).

This commit defines a grammar for that language and implements a parser
for a large part of this grammar.
DeltaFile
+1,151-0openmp/runtime/unittests/Traits/TestOMPTraits.cpp
+1,072-0openmp/runtime/unittests/Traits/TestOMPTraitParser.cpp
+497-0openmp/runtime/src/kmp_traits.h
+423-0openmp/runtime/src/kmp_traits.cpp
+350-0openmp/runtime/unittests/Traits/TestOMPTraitLexer.cpp
+24-0openmp/runtime/unittests/Traits/MockOMP.cpp
+3,517-04 files not shown
+3,530-010 files

LLVM/project 4eea911llvm/lib/Target/AMDGPU SIISelLowering.h SIISelLowering.cpp, llvm/test/Analysis/CostModel/AMDGPU minimum.ll maximum.ll

[AMDGPU] Utilize Promote action for FMINIMUM/MAX f16 (#215678)

Utilize Promote action to convert f16 FMINIMUM/FMAXIMUM to use v2f16.
Custom lowering is no longer needed.

Support for Promote from scalar to vector was added in
https://github.com/llvm/llvm-project/pull/215042.

---------

Signed-off-by: John Lu <John.Lu at amd.com>
DeltaFile
+4-33llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+2-2llvm/test/Analysis/CostModel/AMDGPU/minimum.ll
+2-2llvm/test/Analysis/CostModel/AMDGPU/maximum.ll
+0-1llvm/lib/Target/AMDGPU/SIISelLowering.h
+8-384 files

LLVM/project 3a382b0llvm/lib/Target/SPIRV SPIRVNonSemanticDebugHandler.h SPIRVNonSemanticDebugHandler.cpp, llvm/test/CodeGen/SPIRV/debug-info debug-function-definition-call-before-alloca.ll debug-function-definition-calls.ll

Add support for NSDI DebugLine and DebugNoLine.
DeltaFile
+153-0llvm/lib/Target/SPIRV/SPIRVNonSemanticDebugHandler.cpp
+82-0llvm/test/CodeGen/SPIRV/debug-info/debug-line.ll
+79-0llvm/test/CodeGen/SPIRV/debug-info/debug-no-line.ll
+32-0llvm/lib/Target/SPIRV/SPIRVNonSemanticDebugHandler.h
+15-1llvm/test/CodeGen/SPIRV/debug-info/debug-function-definition-calls.ll
+2-0llvm/test/CodeGen/SPIRV/debug-info/debug-function-definition-call-before-alloca.ll
+363-11 files not shown
+364-17 files

LLVM/project 5d4f1f2llvm/test/CodeGen/X86 debug-spilled-snippet.mir, llvm/test/DebugInfo/AArch64 dbg-value-i8.ll

[DebugInfo] Do not stop after livedebugvars (#215169)

livedebugvars is an analysis. We can only -stop-after it inside the
LegacyPM due to how the LegacyPM schedules analyses. We cannot
stop-after it inside of the NewPM given analyses are dynamically
requested within each pass. Instead, just stop before the asm printer
given we're after the last livedebugvars analysis which happens pretty
late in the pipeline and it doesn't seem like there's a vastly better
spot.
DeltaFile
+2-2llvm/test/DebugInfo/X86/sdag-combine.ll
+2-2llvm/test/DebugInfo/X86/pr34545.ll
+2-2llvm/test/DebugInfo/X86/live-debug-vars-nodebug.ll
+1-1llvm/test/DebugInfo/MSP430/sdagsplit-1.ll
+1-1llvm/test/DebugInfo/AArch64/dbg-value-i8.ll
+1-1llvm/test/CodeGen/X86/debug-spilled-snippet.mir
+9-93 files not shown
+12-129 files

LLVM/project 4c54d8eclang/include/clang/CIR/Dialect/IR CIRTypes.td, clang/lib/CIR/CodeGen CIRGenRecordLayoutBuilder.cpp

[CIR] Require every record member to specify its kind

The member kind list was optional, and an all-data list was canonicalized
to an absent one, so "nobody computed this" and "everything is data" had
the same spelling.  A producer that forgot to specify was assumed
correct.

The list is now required on both record types and the verifier demands
one kind per member.  Normalization is no longer needed and is removed.
A producer whose members all hold data says so with getAllDataKinds.
CIRGen has to compute a list too, so record lowering funnels every
appended field through addField and marks inserted padding as pad.

A data member still prints without a mark, and `data` is now accepted on
input so every kind can be written out.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+70-35clang/lib/CIR/CodeGen/CIRGenRecordLayoutBuilder.cpp
+47-45clang/unittests/CIR/RecordMemberKindTest.cpp
+28-37clang/lib/CIR/Dialect/IR/CIRTypes.cpp
+19-22clang/include/clang/CIR/Dialect/IR/CIRTypes.td
+34-1clang/test/CIR/CodeGen/no-unique-address.cpp
+23-9clang/unittests/CIR/UnionTypeSizeTest.cpp
+221-14934 files not shown
+398-25140 files

LLVM/project 30e26d3clang/lib/CIR/CodeGen CMakeLists.txt TargetInfo.h, clang/lib/CIR/CodeGen/Targets AArch64.cpp

[CIR] Add AArch64TargetCIRGenInfo (#215424)

This adds an AArch64-specific implementation of TargetCIRGenInfo and
adds handlers for the functions that require AArch64-specific handling.
I've implemented the wouldInliningViolateFunctionCallABI function
(because that seemed easier than deciding when to report NYI), generated
an NYI error for isScalarizableAsmOperand in the one case where it needs
to do something other than forward the call to the based class, and
added MissingFeatures asserts for setTargetAttributes (because CIR
doesn't support the features it wants to add attributes for yet).

Assisted-by: Cursor / various models
DeltaFile
+119-0clang/lib/CIR/CodeGen/Targets/AArch64.cpp
+56-8clang/test/CodeGen/AArch64/sme-inline-callees-streaming-attrs.c
+16-0clang/test/CIR/CodeGen/aarch64-ls64-inline-asm-nyi.c
+6-0clang/lib/CIR/CodeGen/CIRGenModule.cpp
+3-0clang/lib/CIR/CodeGen/TargetInfo.h
+1-0clang/lib/CIR/CodeGen/CMakeLists.txt
+201-81 files not shown
+202-87 files

LLVM/project b37fffdclang/test/CIR/CodeGen atomic.c

[CIR][NFC] Add atomic compare-exchange runtime order test (#215722)

Add a test for `__atomic_compare_exchange_n` when both success and
failure memory orders are runtime values. Check the nested CIR switches
across every generated memory-order combination.

Partially addresses #156747.
DeltaFile
+198-0clang/test/CIR/CodeGen/atomic.c
+198-01 files

LLVM/project 26286e7lld/MachO ICF.cpp

[lld][MachO][NFC] Move config->icfLevel dereference out of loops (#215407)
DeltaFile
+6-7lld/MachO/ICF.cpp
+6-71 files

LLVM/project d9b55cblld/MachO ICF.cpp

[lld][MachO][NFC] Remove redundant size checks (#215411)
DeltaFile
+0-4lld/MachO/ICF.cpp
+0-41 files

LLVM/project be9db1amlir/include/mlir/Dialect/Affine LoopUtils.h

[mlir] Remove dead declaration promoteSingleIterationLoops (#215738)

The corresponding function definition was removed on January 24, 2022
in a70aa7bb0d9a6066831b339e0a09a2c1bc74fe2b.
DeltaFile
+0-4mlir/include/mlir/Dialect/Affine/LoopUtils.h
+0-41 files

LLVM/project b9ca983clang/lib/CodeGen CGBuiltin.cpp

Fix comment formatting to adhere to the Coding Standards
DeltaFile
+5-3clang/lib/CodeGen/CGBuiltin.cpp
+5-31 files

LLVM/project 976b6d0flang/include/flang/Evaluate char.h

Reformat
DeltaFile
+13-7flang/include/flang/Evaluate/char.h
+13-71 files

LLVM/project c5c4f80llvm Maintainers.md

[LLVM][Maintainers] Volunteer for LoadStoreVectorizer (#214025)

I have been contributing to and reviewing changes to the
LoadStoreVectorizer for over a year now, figured I should formalize
this.
DeltaFile
+5-0llvm/Maintainers.md
+5-01 files

LLVM/project e75890fclang/lib/CodeGen CGBuiltin.cpp, clang/test/CodeGen builtin-clear-padding-codegen.c

[Clang] Fix BitInt padding clearing on big-endian targets

This patch fixes the padding clearing logic of `_BitInt`s.

Before this patch, the clearing logic assumed little endian. But the
memory layout of BitInts differs between little and big endian:

 - In LE, the occupied bits start from the lowest address and go on
   contiguously up until the BitInt's declared size. The padding bits
   then start from that point and go contiguously until the end of the
   storage unit.
 - In BE, since the byte order is reversed, the occupied bit interval
   is not contiguous if the storage unit is larger than the BitInt's
   size.

Therefore, the logic must tell the two cases apart and perform the
calculations accordingly.
DeltaFile
+81-0clang/test/CodeGenCXX/builtin-clear-padding-codegen.cpp
+81-0clang/test/CodeGen/builtin-clear-padding-codegen.c
+43-0clang/lib/CodeGen/CGBuiltin.cpp
+205-03 files

LLVM/project 6a8a09blldb/packages/Python/lldbsuite/test decorators.py, lldb/test/API/functionalities/builtin-debugtrap TestBuiltinDebugTrap.py

[lldb] Add a reason for all requireNot* decorators. (#214701)

Previously, tests using the @requireNot* decorators documented by the
test was skipped using a trailing comment that never made it to the test
report.

Change the decorator to take a required `reason` parameter, as the test
should have a reason why it is not required.
DeltaFile
+23-13lldb/packages/Python/lldbsuite/test/decorators.py
+8-8lldb/test/API/tools/lldb-server/vCont-threads/TestSignal.py
+5-5lldb/test/API/tools/lldb-server/TestGdbRemoteAuxvSupport.py
+4-3lldb/test/API/lang/cpp/pointer_to_member_type_depending_on_parent_size/TestPointerToMemberTypeDependingOnParentSize.py
+4-3lldb/test/API/functionalities/completion/TestCompletion.py
+4-3lldb/test/API/functionalities/builtin-debugtrap/TestBuiltinDebugTrap.py
+48-3577 files not shown
+137-11883 files

LLVM/project b0d4ae3llvm/lib/Analysis InlineCost.cpp, llvm/test/Transforms/Inline/AMDGPU cold-callsite-in-kernel.ll

[Inliner] Don't apply the cold-callsite threshold in non-callable functions (#211255)

Partially addresses #211132.

`InlineCostCallAnalyzer::updateThreshold` clamps the threshold to
`-inline-cold-callsite-threshold` (45) when BFI says the callsite is
cold. The reasoning behind the clamp, that cold code does not need to be
fast so it is not worth the code size, does not hold when the caller is
a hardware entry point rather than something callable. Register
allocation there is whole-function and occupancy is set by the worst
case over it, so a call left out of line costs the hot path too, however
cold the call itself is.

So guard the clamp with `isCallableCC(Caller->getCallingConv())`. This
is not AMDGPU-specific: it picks up `SPIR_KERNEL` and `PTX_Kernel` on
the same reasoning. An earlier revision of this PR added a
`TTI::applyColdCallSiteThreshold` hook and returned false from AMDGPU
for entry functions; that was dropped in review in favour of the calling
convention, which states the actual property directly and needs no new

    [47 lines not shown]
DeltaFile
+59-0llvm/test/Transforms/Inline/AMDGPU/cold-callsite-in-kernel.ll
+7-1llvm/lib/Analysis/InlineCost.cpp
+66-12 files

LLVM/project b7758efllvm/lib/Support KnownFPClass.cpp, llvm/test/Transforms/Attributor nofpclass-trig.ll

[KnownFPClass] Refine sNaN handling for asin/acos (#215159)

Addresses
https://github.com/llvm/llvm-project/pull/213812#pullrequestreview-4877840442

`asin` and `acos` can only produce `sNaN` if the source is `sNaN`.
Otherwise finite arguments outside the range `-1.0 <= x <= +1.0` will
still produce `qNaN`.
DeltaFile
+4-4llvm/test/Transforms/Attributor/nofpclass-trig.ll
+6-0llvm/lib/Support/KnownFPClass.cpp
+2-2llvm/unittests/CodeGen/GlobalISel/KnownFPClassTest.cpp
+12-63 files

LLVM/project 2a0c335mlir/lib/Dialect/Arith/IR ArithOps.cpp, mlir/test/Transforms constant-fold.mlir

[mlir][arith] Fold ceildivsi with MININT operands (#214637)

`CeilDivSIOp::fold` computes the ceiling by negating operands so that
the
division runs on two non-negative values. Negating `MININT` overflows,
so the
folder gives up on any `MININT` operand, even when the result is
perfectly
representable:

```mlir
// i8, MININT = -128. ceil(-128 / 7) = -18, which fits, but does not fold.
%0 = arith.constant 7 : i8
%min = arith.constant -128 : i8
%1 = arith.ceildivsi %min, %0 : i8
```

The existing TODO on the folder mentions only a `MININT` dividend, but a
`MININT` divisor is affected the same way, since that operand gets

    [181 lines not shown]
DeltaFile
+89-20mlir/test/Transforms/constant-fold.mlir
+21-53mlir/lib/Dialect/Arith/IR/ArithOps.cpp
+110-732 files

LLVM/project aa8d5ecoffload/plugins-nextgen/amdgpu/dynamic_hsa hsa.h hsa_ext_amd.h, offload/plugins-nextgen/amdgpu/src rtl.cpp

[offload] Use HSA SVM for AMDGPU shared memory
DeltaFile
+277-11offload/plugins-nextgen/amdgpu/src/rtl.cpp
+68-0offload/test/api/omp_device_managed_memory_ops.c
+31-0offload/test/api/amdgpu_managed_memory_accessible.c
+15-0offload/plugins-nextgen/amdgpu/dynamic_hsa/hsa_ext_amd.h
+13-0openmp/docs/design/Runtimes.rst
+1-0offload/plugins-nextgen/amdgpu/dynamic_hsa/hsa.h
+405-111 files not shown
+406-117 files

LLVM/project 2cce9ecllvm/lib/CodeGen/GlobalISel LegalizerHelper.cpp, llvm/test/CodeGen/AMDGPU/GlobalISel fp-int-conversions.ll legalize-unmerge-values-float-src.mir

[GlobalISel] emit G_BITCAST in widenScalarUnmergeValues when SrcTy is float (#204541)

widenScalarUnmergeValues emits G_LSHR and G_TRUNC to extract
sub-register pieces from the source. The shift amount and the shift
itself are built with SrcTy, so when the source is a floating-point
scalar (e.g. bf16) the extraction ends up in the float domain:

```
  %1:_(bf16) = G_CONSTANT i16 8
  %2:_(bf16) = G_LSHR %0:_(bf16), %1:_(bf16)
```

**Fix:** Before the shift/trunc extraction sequence, check if SrcTy is a
float type and bitcast it to the corresponding integer type.
DeltaFile
+72-0llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-unmerge-values-float-src.mir
+42-0llvm/test/CodeGen/AMDGPU/GlobalISel/fp-int-conversions.ll
+5-0llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+119-03 files

LLVM/project d83fdd7bolt/lib/Utils CommandLineOpts.cpp

[BOLT] Default heatmap block sizes to cache line, pages and hugepage (#215427)

The defaults were 64, 4K, 256K. 4K is the page size only on x86-64 and
on
AArch64 kernels built that way; AArch64 also runs 16K and 64K base
pages, and
256K corresponds to nothing in particular on either.

Use 64, 4K, 16K, 64K, 2M: the cache line, the three base page sizes in
use, and
the PMD hugepage above a 4K base page. Each granularity then maps onto a
real
capacity, which is what makes the working set numbers comparable to one
-- L1i
lines, iTLB and L2 TLB entries, frontend region-table entries.

Two more granularities cost two more passes over an already-built map,
no extra
decoding.

    [5 lines not shown]
DeltaFile
+7-2bolt/lib/Utils/CommandLineOpts.cpp
+7-21 files

LLVM/project 6f1f2efbolt/include/bolt/Profile Heatmap.h, bolt/include/bolt/Utils CommandLineOpts.h

[BOLT] Keep the spelling of input heatmap block sizes (#215426)

The block-size parser turns "64K" into 65536 and discards the original
text,
keeping it only for error messages. The working set log then has to
either
reprint the raw value or reformat it back, and reformatting invents a
spelling
the user did not choose: "1MiB" comes back as "1M".

Store the spelling next to the value and echo it. Heatmap file names
keep using
the numeric value, matching the existing "dumping heatmap with bucket
size N"
message and the -<size> suffix that tests already expect.

Test Plan:
updated heatmap-preagg.test


    [6 lines not shown]
DeltaFile
+5-5bolt/lib/Profile/DataAggregator.cpp
+4-4bolt/lib/Profile/Heatmap.cpp
+6-2bolt/lib/Utils/CommandLineOpts.cpp
+7-1bolt/include/bolt/Utils/CommandLineOpts.h
+2-2bolt/include/bolt/Profile/Heatmap.h
+1-1bolt/test/X86/heatmap-preagg.test
+25-156 files

LLVM/project 9ae71f3flang/include/flang/Semantics openmp-modifiers.h, flang/lib/Semantics openmp-modifiers.cpp

[OpenMP][flang] Use auto-generated data for modifier verification

Introduce descriptors of OpenMP clauses and modifiers, auto-generated
from OpenMP specification data[*].

This replaces the preexisting modifier descriptors used in flang,
the code using it is adjusted to use the new definitions.

[*] This does not contain any actual auto-generation infrastructure.
The descriptors were generated by a custom script from the exported
OpenMP definitions.
DeltaFile
+2,369-0llvm/lib/Frontend/OpenMP/OMPDescriptors.inc
+0-823flang/lib/Semantics/openmp-modifiers.cpp
+140-113flang/include/flang/Semantics/openmp-modifiers.h
+125-0llvm/include/llvm/Frontend/OpenMP/OMPDescriptors.h
+118-0llvm/include/llvm/Frontend/OpenMP/OMPDescriptors.h.inc
+80-0llvm/lib/Frontend/OpenMP/OMPDescriptors.cpp
+2,832-93613 files not shown
+2,873-1,01819 files

LLVM/project c4b6202llvm/docs LangRef.md, llvm/include/llvm/Transforms/Vectorize LoopVectorizationLegality.h

Enforce single-operand form for llvm.loop.vectorize.scalable metadata (#215742)

Replace the two-operand boolean form
!{!"llvm.loop.vectorize.scalable.enable", i1 0/1} with a single-operand
enable/disable pair:

  !{!"llvm.loop.vectorize.scalable.enable"}
  !{!"llvm.loop.vectorize.scalable.disable"}

The Verifier rejects the two-operand form, AutoUpgrade rewrites old
bitcode, and the readers and producers in LLVM, Clang and MLIR are
updated.

RFC:

https://discourse.llvm.org/t/rfc-enforce-single-operand-format-for-all-enable-metadata-nodes/90571
DeltaFile
+41-0llvm/test/Verifier/llvm.loop.vectorize.scalable.ll
+37-0llvm/test/Bitcode/upgrade-loop-vectorize-scalable-enable.ll
+16-15llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+8-8llvm/test/Transforms/LoopVectorize/AArch64/scalable-vf-hint.ll
+8-8llvm/include/llvm/Transforms/Vectorize/LoopVectorizationLegality.h
+4-7llvm/docs/LangRef.md
+114-3876 files not shown
+208-12582 files

LLVM/project 77bebf4clang/include/clang/AST ASTContext.h, clang/lib/AST ASTContext.cpp

[NFC][AST] Make nullability attributed-type construction const (#215756)

Make the nullability-specific `ASTContext::getAttributedType` overload
`const` and remove a now-unneeded `const_cast` from array-decay
handling.

This addresses feedback from
https://github.com/llvm/llvm-project/pull/215266#discussion_r3751285430.

Reviewers: @j-hui @Xazax-hun @egorzhdan
DeltaFile
+2-3clang/lib/AST/ASTContext.cpp
+1-1clang/include/clang/AST/ASTContext.h
+3-42 files

LLVM/project 771defeclang/lib/CodeGen BackendUtil.cpp, llvm/include/llvm/Analysis RuntimeLibcallInfo.h

CodeGen: Remove TargetOptions::FloatABIType

This is now fully replaced with the "float-abi" module flag.
If the module flag is not present, the default is computed
from the triple. Consumers are updated to read the module flag.

RuntimeLibraryAnalysis now defers analysis until run() on a Module,
instead of during the pass constructor as before. This requires copying
all of the remaining relevant TargetOptions so they are available
when the module is seen.

Unfortunately, ARM still depends on TargetOptions for determining
the float-abi. -target-abi=aapcs16 still changes the default float-abi,
but an explicit module flag wins.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+45-0llvm/test/LTO/ARM/float-abi-module-flag.ll
+19-17llvm/include/llvm/Analysis/RuntimeLibcallInfo.h
+15-20llvm/lib/Target/ARM/ARMTargetMachine.cpp
+28-0llvm/test/Transforms/Util/DeclareRuntimeLibcalls/float-abi-module-flag.ll
+5-18llvm/lib/Analysis/RuntimeLibcallInfo.cpp
+3-14clang/lib/CodeGen/BackendUtil.cpp
+115-6923 files not shown
+174-12629 files

LLVM/project 97773f2llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/AArch64 uniform-args-call-variants.ll scalable-strict-fadd.ll

[LV] Use wide lane masks as the canonical form when tail-folding & interleaving (#209484)

Previously, when passing -enable-wide-lane-mask to request the use of wide
lane masks, tryToReplaceALMWithWideALM would attempt to replace several
ActiveLaneMasks created during unrolling with a single mask + extracts.

This PR removes tryToReplaceALMWithWideALM from VPTransforms and makes
wide lane masks the canonical form when interleaving a tail-folded loop
which uses ActiveLaneMask for control flow, as discussed on #193757.

During unrolling, the multiplier is set to UF for ActiveLaneMask and one
ExtractSubvectorForPart instruction for each part is created. Unnecessary
ExtractSubvectorForParts are removed during the generate stage if the loop
is not unrolled, otherwise this creates an extract subvector for each part.

This does not change the default behaviour for tail-folded loops, which
are still not considered for interleaving by default. The decision on
whether to use a single wide active lane mask with extracts or to split
it up into multiple smaller masks is now left to the backend.
DeltaFile
+328-0llvm/test/Transforms/LoopVectorize/AArch64/sve-wide-mask-outside-use.ll
+114-189llvm/test/Transforms/LoopVectorize/AArch64/sve-wide-lane-mask.ll
+187-30llvm/test/Transforms/LoopVectorize/AArch64/fixed-wide-lane-mask.ll
+36-93llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+48-51llvm/test/Transforms/LoopVectorize/AArch64/scalable-strict-fadd.ll
+47-45llvm/test/Transforms/LoopVectorize/AArch64/uniform-args-call-variants.ll
+760-40821 files not shown
+1,098-57527 files

LLVM/project 98b4c5fbolt/lib/Utils CommandLineOpts.cpp

[BOLT] Default heatmap block sizes to cache line, pages and hugepage

The defaults were 64, 4K, 256K. 4K is the page size only on x86-64 and on
AArch64 kernels built that way; AArch64 also runs 16K and 64K base pages, and
256K corresponds to nothing in particular on either.

Use 64, 4K, 16K, 64K, 2M: the cache line, the three base page sizes in use, and
the PMD hugepage above a 4K base page. Each granularity then maps onto a real
capacity, which is what makes the working set numbers comparable to one -- L1i
lines, iTLB and L2 TLB entries, frontend region-table entries.

Two more granularities cost two more passes over an already-built map, no extra
decoding.
DeltaFile
+7-2bolt/lib/Utils/CommandLineOpts.cpp
+7-21 files

LLVM/project e927810bolt/include/bolt/Profile Heatmap.h, bolt/include/bolt/Utils CommandLineOpts.h

[BOLT] Keep the spelling of each heatmap block size

The block-size parser turns "64K" into 65536 and discards the original text,
keeping it only for error messages. The working set log then has to either
reprint the raw value or reformat it back, and reformatting invents a spelling
the user did not choose: "1MiB" comes back as "1M".

Store the spelling next to the value and echo it. Heatmap file names keep using
the numeric value, matching the existing "dumping heatmap with bucket size N"
message and the -<size> suffix that tests already expect.

Test Plan:
updated heatmap-preagg.test
DeltaFile
+5-5bolt/lib/Profile/DataAggregator.cpp
+4-4bolt/lib/Profile/Heatmap.cpp
+6-2bolt/lib/Utils/CommandLineOpts.cpp
+7-1bolt/include/bolt/Utils/CommandLineOpts.h
+2-2bolt/include/bolt/Profile/Heatmap.h
+1-1bolt/test/X86/heatmap-preagg.test
+25-156 files

LLVM/project c366d93llvm/lib/Target/AMDGPU AMDGPURewriteOutArguments.cpp, llvm/test/CodeGen/AMDGPU rewrite-out-arguments-2.ll

[AMDGPU] Account for aliasing reads in RewriteOutArguments (#209908)

Fix AMDGPURewriteOutArguments incorrectly moving an out-argument store
past a potentially aliasing read.

Use the full ModRef result when scanning intervening memory accesses, so
the rewrite is rejected for both reads and writes that may access the
out-argument location.

Fixes #207969.
DeltaFile
+43-21llvm/test/CodeGen/AMDGPU/rewrite-out-arguments-2.ll
+2-3llvm/lib/Target/AMDGPU/AMDGPURewriteOutArguments.cpp
+45-242 files