LLVM/project 03d4d17 — offload/plugins-nextgen/amdgpu/src rtl.cpp

fix braces
DeltaFile
+2-1offload/plugins-nextgen/amdgpu/src/rtl.cpp
+2-11 files

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

[offload] Use HSA SVM for AMDGPU shared memory
DeltaFile
+176-29offload/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
+27-1offload/plugins-nextgen/amdgpu/dynamic_hsa/hsa_ext_amd.h
+12-0openmp/docs/design/Runtimes.md
+2-0offload/plugins-nextgen/amdgpu/dynamic_hsa/hsa.cpp
+316-301 files not shown
+317-307 files

LLVM/project 9718aba — offload/include PluginManager.h, offload/libompaccsupport device.cpp PluginManager.cpp

[offload] Copy the kernel launch environment with a direct-write memcpy

Claude assisted with this patch.
DeltaFile
+76-0offload/test/offloading/kernel_launch_environment.c
+13-0offload/libompaccsupport/PluginManager.cpp
+9-3offload/libompaccsupport/device.cpp
+6-0offload/include/PluginManager.h
+104-34 files

LLVM/project b2644ad — offload/liboffload/src OffloadImpl.cpp

fix after rebase
DeltaFile
+4-4offload/liboffload/src/OffloadImpl.cpp
+4-41 files

LLVM/project 043acd7 — llvm/docs WritingAnLLVMPass.md, llvm/include/llvm/Analysis RegionInfoImpl.h RegionInfo.h

[IR] Remove RegionPass and RGPassManager (#233988)

They are unused in-tree since f337c83bbc7c converted legacy
StructurizeCFG to a FunctionPass.
DeltaFile
+0-314llvm/lib/Analysis/RegionPass.cpp
+0-128llvm/include/llvm/Analysis/RegionPass.h
+2-53llvm/docs/WritingAnLLVMPass.md
+0-15llvm/include/llvm/Analysis/RegionInfo.h
+1-10llvm/include/llvm/Analysis/RegionInfoImpl.h
+1-3llvm/lib/CodeGen/MachineRegionInfo.cpp
+4-5238 files not shown
+7-53414 files

LLVM/project cc050ac — clang/lib/Driver/ToolChains FreeBSD.cpp, clang/test/Driver freebsd.c

[clang][Driver]: Skip crti.o/crtn.o on LoongArch FreeBSD (#228689)

FreeBSD will not provides crti.o and crtn.o for LoongArch: the
_init/_fini interface they assemble is obsolete, and constructors and
destructors run exclusively through .init_array/.fini_array.

Skip both objects when the target is loongarch FreeBSD. Other FreeBSD
architectures are unchanged, and LoongArch on other operating systems is
not affected.

FreeBSD reference: https://reviews.freebsd.org/D59892

Signed-off-by: xiaoqiang zhao <zxq_yx_007 at 163.com>
DeltaFile
+21-0clang/test/Driver/freebsd.c
+5-2clang/lib/Driver/ToolChains/FreeBSD.cpp
+26-22 files

LLVM/project 657da1d — clang/include/clang/Interpreter Interpreter.h, clang/lib/Interpreter Interpreter.cpp

[clang-repl] Added -hip option (#231783)

This PR adds a hidden `-hip` option to clang-repl, with `-rocm-path` for
the SDK location. It sets up the HIP host and device compilers and the
HIP device parser. HIP code doesn't execute yet, because binary
generation is still a stub that returns an unsupported error. That will
come in follow-up PRs.

I have also added a lit test in `clang/test/Interpreter/HIP` which runs
clang repl with the option hip and expects for not supported message for
now. This test will be removed in the future PR when the HIP kernel will
be built.

Prerequisite PR : #231391

Assisted by Claude Sonnet 5.5
DeltaFile
+37-20clang/lib/Interpreter/Interpreter.cpp
+31-19clang/tools/clang-repl/ClangRepl.cpp
+21-8clang/unittests/Interpreter/DeviceOffloadTest.cpp
+11-9clang/include/clang/Interpreter/Interpreter.h
+12-0clang/test/Interpreter/HIP/lit.local.cfg
+10-0clang/test/Interpreter/HIP/hip-not-supported.hip
+122-566 files

LLVM/project 566a9bf — llvm/lib/Target/LoongArch LoongArchInstrInfo.td LoongArchSchedLA464.td

[LoongArch] Add scheduler definitions for LoongArch with schedule model for LA464/LA664 (#226064)

This patch adds full scheduler definitions for LoongArch backend and
schedule models for LA464/LA664, covering basic instructions and
LSX/LASX SIMD instructions, along with a series of `llvm-mca` tests.

The model are base on a Chip and Cheese microarchitecture analysis
article, [Loongson 3A6000: A Star among Chinese
CPUs](https://chipsandcheese.com/p/loongson-3a6000-a-star-among-chinese-cpus/),
which has a detailed analysis for LA464/LA664 microarchitecture. The
latency/throughput numbers were measured from actual machine, so many of
them depend on estimate.

`PostRAScheduler` was not set because we found that it will cause
regression on SPEC CPU2006 470.lbm testcase. `MispredictPenalty` is also
based on a raw guess. Besides, even if `LoopMicroOpBufferSize` will have
a positive impact on performance due to loop unrolling, these
microarchitecture details is still unknown, so I would perfer override
the `getUnrollingPreferences` in future TTI patches, or waiting for more

    [55 lines not shown]
DeltaFile
+1,363-735llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td
+1,308-716llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td
+1,291-0llvm/lib/Target/LoongArch/LoongArchScheduleV.td
+1,143-0llvm/lib/Target/LoongArch/LoongArchSchedLA664.td
+1,104-0llvm/lib/Target/LoongArch/LoongArchSchedLA464.td
+342-209llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
+6,551-1,66023 files not shown
+8,595-1,82229 files

LLVM/project 565cc23 — offload/include PluginManager.h, offload/libompaccsupport device.cpp PluginManager.cpp

[offload] Copy the kernel launch environment with a direct-write memcpy

Claude assisted with this patch.
DeltaFile
+76-0offload/test/offloading/kernel_launch_environment.c
+13-0offload/libompaccsupport/PluginManager.cpp
+9-3offload/libompaccsupport/device.cpp
+6-0offload/include/PluginManager.h
+104-34 files

LLVM/project c86953a — offload/liboffload/API Memory.td, offload/liboffload/src OffloadImpl.cpp

wording; bitfield
DeltaFile
+2-2offload/liboffload/src/OffloadImpl.cpp
+2-1offload/plugins-nextgen/common/include/PluginInterface.h
+1-1offload/liboffload/API/Memory.td
+5-43 files

LLVM/project 3be32b4 — offload/plugins-nextgen/amdgpu/src rtl.cpp

implement feedback
DeltaFile
+76-68offload/plugins-nextgen/amdgpu/src/rtl.cpp
+76-681 files

LLVM/project cd24c2a — offload/liboffload/src OffloadImpl.cpp, offload/plugins-nextgen/amdgpu/src rtl.cpp

[offload] Pass host-to-device transfer flags to plugins as a struct
DeltaFile
+12-6offload/plugins-nextgen/common/include/PluginInterface.h
+7-8offload/liboffload/src/OffloadImpl.cpp
+2-3offload/plugins-nextgen/common/src/PluginInterface.cpp
+2-2offload/plugins-nextgen/amdgpu/src/rtl.cpp
+1-1offload/plugins-nextgen/level_zero/src/L0Device.cpp
+1-1offload/plugins-nextgen/level_zero/include/L0Device.h
+25-212 files not shown
+27-238 files

LLVM/project 71b880e — mlir/include/mlir/TableGen EnumInfo.h, mlir/lib/TableGen EnumInfo.cpp

[mlir][tblgen] Define enum `FieldParser` specializations out-of-line (#233730)

The `FieldParser` specializations generated for every enum were defined
inline in the enum declarations header. Since their bodies do not depend
on the `ParserT` template parameter, they are type-checked eagerly in
every translation unit including the header, which instantiates
`FailureOr<E>`, `FailureOr<std::optional<E>>` and their `std::optional`
bases and type traits for every enum. Only a small fraction of these
specializations is ever used, and only from the generated attribute and
op parsers of the dialect itself.

This patch changes `parse` to a non-template taking an `AsmParser &`,
declares it in the header and emits its definition into the enum
definitions file instead.

Compiling all of MLIR (clang 18 with 64 cores) takes 4.5% less CPU time,
with the median translation unit compiling 2.8% faster and some up to
15% faster. The summed peak memory usage of all translation units drops
by 4.5% and the largest peak memory usage of a single translation unit

    [6 lines not shown]
DeltaFile
+189-151mlir/tools/mlir-tblgen/EnumsGen.cpp
+42-31mlir/test/mlir-tblgen/enums-gen.td
+14-0mlir/lib/TableGen/EnumInfo.cpp
+10-0mlir/include/mlir/TableGen/EnumInfo.h
+1-1mlir/tools/mlir-tblgen/OpFormatGen.cpp
+1-1mlir/tools/mlir-tblgen/AttrOrTypeFormatGen.cpp
+257-1843 files not shown
+260-1849 files

LLVM/project 1f2ae6b — offload/liboffload/API Memory.td, offload/liboffload/src OffloadImpl.cpp

[offload] Add direct-write memcpys to liboffload and implement them on AMDGPU

olMemcpy gets a variant with a flag parameter. The flags are an enum and
DIRECT_WRITE is the first member of it. Specifying DIRECT_WRITE means
that the olMemcpy may issue the copy as a direct H2D write, which means
that it will be unordered with respect to the currently enqueued
operations. It will, however, be completed upon completion of olMemcpy,
so it will not be unordered with respect to operations that get enqueued
afterwards.

The AMDGPU implementation is a transfer of the ROCr/HIP implementation.
It more or less boils down to a std::memcpy with fences around it.

Claude assisted with this patch.
DeltaFile
+135-2offload/plugins-nextgen/amdgpu/src/rtl.cpp
+104-0offload/unittests/OffloadAPI/memory/olMemcpyWithFlags.cpp
+36-0offload/liboffload/API/Memory.td
+22-3offload/liboffload/src/OffloadImpl.cpp
+22-0offload/plugins-nextgen/amdgpu/dynamic_hsa/hsa_ext_amd.h
+7-3offload/plugins-nextgen/common/include/PluginInterface.h
+326-86 files not shown
+339-1412 files

LLVM/project cb55bb6 — lldb/source/Plugins/Process/gdb-remote ThreadGDBRemote.cpp GDBRemoteCommunicationClient.h, lldb/test/API/functionalities/gdb_remote_client TestGDBRemoteClient.py

[lldb] Select the thread before reading its siginfo (#233814)

qXfer:siginfo:read returns the siginfo of the thread selected by the Hg
packet (that's how gdb uses it, and it's also what lldb-server expects),
but ThreadGDBRemote::GetSiginfo didn't select the thread. This meant we
returned the siginfo of whichever thread happened to be selected last.
With lldb-server, that's usually (but not always) the thread which
caused the stop.

This hasn't been a big problem so far, as the siginfo was only used by
the "thread siginfo" command, but I'd like to use it to compute the stop
descriptions of crashing threads, where this matters more.

Assisted-by: Claude
DeltaFile
+41-0lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py
+13-0lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
+3-0lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
+1-1lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp
+58-14 files

LLVM/project 862eeab — llvm/lib/CodeGen MachineFunction.cpp, llvm/test/CodeGen/X86 reset-machine-function-call-info.mir

[CodeGen] Clear call site info when resetting a MachineFunction (#229331)

MachineFunction::clear() deletes the instructions but keeps the call
site info and called globals that refer to them. After
ResetMachineFunction, which GlobalISel uses to fall back to
SelectionDAG, the entries point to deleted instructions, and printing
the MIR hangs. Clear both maps with the rest of the function, as is done
for the variable debug info that GlobalISel records.

No GlobalISel target records call site info yet, so the test resets a
MIR function marked failedISel.
DeltaFile
+23-0llvm/test/CodeGen/X86/reset-machine-function-call-info.mir
+2-0llvm/lib/CodeGen/MachineFunction.cpp
+25-02 files

LLVM/project d725388 — llvm/include/llvm/IR ProfDataUtils.h MDBuilder.h, llvm/lib/IR ProfDataUtils.cpp Function.cpp

[IR] Remove SyntheticFunctionEntryCount label (#233351)

And everything that uses it. Synthetic profile counts have been mostly
removed at this point, so this is unnecessary to keep around.
DeltaFile
+2-6llvm/lib/IR/MDBuilder.cpp
+2-5llvm/lib/IR/Verifier.cpp
+2-3llvm/include/llvm/IR/MDBuilder.h
+1-2llvm/lib/IR/Function.cpp
+0-2llvm/lib/IR/ProfDataUtils.cpp
+0-1llvm/include/llvm/IR/ProfDataUtils.h
+7-196 files

LLVM/project 3d88cd2 — llvm/lib/Transforms/IPO DeadArgumentElimination.cpp, llvm/test/Transforms/DeadArgElim musttail-tailcc.ll

[DAE] Fix always true condition (#233919)
DeltaFile
+88-0llvm/test/Transforms/DeadArgElim/musttail-tailcc.ll
+4-4llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp
+92-42 files

LLVM/project 16010ab — mlir/lib/Interfaces ControlFlowInterfaces.cpp, mlir/unittests/Interfaces ControlFlowInterfacesTest.cpp

[mlir] Fix false positive loops in RegionBranchOpInterface::hasLoop

hasLoop reported a loop whenever its traversal popped a region it had
already visited. The worklist gets one entry per successor of each
terminator, so a region reachable along two paths was popped twice even
without a cycle, for example when two terminators of a region branch to
the same successor region.

hasLoop now reports a loop only if a region reachable from the parent op
can reach itself, which is the check isRepetitiveRegion already does.
Drop the now unused visited argument of the traversal stop condition.

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+83-1mlir/unittests/Interfaces/ControlFlowInterfacesTest.cpp
+16-37mlir/lib/Interfaces/ControlFlowInterfaces.cpp
+99-382 files

LLVM/project 0b4ac27 — clang/lib/Sema SemaDecl.cpp, clang/test/SemaCUDA device-rtti.cu call-stack-for-deferred-err.cu

[Sema][CUDA][HIP] Report deferred diagnostics of force-emitted functions (#229008)

Deferred diagnostics of a __host__ __device__ function are reported once
the function is known to be emitted, which Sema decided from its uses
and external linkage. CodeGen also emits a function regardless of its
uses if it has the used, constructor or destructor attribute, or with
-femit-all-decls, so such inline functions were emitted without their
diagnostics. Treat these functions as emitted, like what
ASTContext::DeclMustBeEmitted does.

Assisted-by: Claude Opus 5.5

---------

Signed-off-by: Steffen Holst Larsen <sholstla at amd.com>
DeltaFile
+277-0clang/test/SemaCUDA/deferred-diags-forced-emission.cu
+36-1clang/lib/Sema/SemaDecl.cpp
+25-0clang/test/SemaCUDA/call-stack-for-deferred-err.cu
+23-1clang/test/SemaCUDA/device-rtti.cu
+361-24 files

LLVM/project 45ed46a — clang/lib/CodeGen CodeGenFunction.cpp CGExpr.cpp

Remove redundant CGExpr.cpp changes and add 4th PR

Created using spr 2.0.0-beta.1
DeltaFile
+1-3clang/lib/CodeGen/CGExpr.cpp
+0-1clang/lib/CodeGen/CodeGenFunction.cpp
+1-42 files

LLVM/project 4aede38 — llvm/test/Analysis/CostModel/LoongArch shuffle-extract.ll, llvm/test/CodeGen/AMDGPU wave-reduce-live-scc.ll

Remove redundant CGExpr.cpp changes and add 4th PR

Created using spr 2.0.0-beta.1
DeltaFile
+1,439-0llvm/test/tools/dsymutil/AArch64/odr-unnamed-types-nested.test
+119-0llvm/test/Analysis/CostModel/LoongArch/shuffle-extract.ll
+107-0llvm/test/Transforms/SLPVectorizer/LoongArch/nbody-forces.ll
+33-33llvm/test/CodeGen/MLRegAlloc/Inputs/reference-log-noml.txt
+66-0llvm/test/CodeGen/AMDGPU/wave-reduce-live-scc.ll
+0-52llvm/test/Transforms/GlobalOpt/deadfunction-comdat.ll
+1,764-8547 files not shown
+2,087-32353 files

LLVM/project acf5e54 — llvm/test/Analysis/CostModel/LoongArch shuffle-extract.ll, llvm/test/CodeGen/AMDGPU wave-reduce-live-scc.ll

Remove redundant CGExpr.cpp changes and add 4th PR

Created using spr 2.0.0-beta.1
DeltaFile
+1,439-0llvm/test/tools/dsymutil/AArch64/odr-unnamed-types-nested.test
+119-0llvm/test/Analysis/CostModel/LoongArch/shuffle-extract.ll
+107-0llvm/test/Transforms/SLPVectorizer/LoongArch/nbody-forces.ll
+33-33llvm/test/CodeGen/MLRegAlloc/Inputs/reference-log-noml.txt
+66-0llvm/test/CodeGen/AMDGPU/wave-reduce-live-scc.ll
+0-52llvm/test/Transforms/GlobalOpt/deadfunction-comdat.ll
+1,764-8547 files not shown
+2,087-32253 files

LLVM/project 0d564b8 — llvm/test/Analysis/CostModel/LoongArch shuffle-extract.ll, llvm/test/CodeGen/AMDGPU wave-reduce-live-scc.ll

Remove redundant CGExpr.cpp changes and add 4th PR

Created using spr 2.0.0-beta.1
DeltaFile
+1,439-0llvm/test/tools/dsymutil/AArch64/odr-unnamed-types-nested.test
+119-0llvm/test/Analysis/CostModel/LoongArch/shuffle-extract.ll
+107-0llvm/test/Transforms/SLPVectorizer/LoongArch/nbody-forces.ll
+33-33llvm/test/CodeGen/MLRegAlloc/Inputs/reference-log-noml.txt
+66-0llvm/test/CodeGen/AMDGPU/wave-reduce-live-scc.ll
+0-52llvm/test/Transforms/GlobalOpt/deadfunction-comdat.ll
+1,764-8546 files not shown
+2,087-32152 files

LLVM/project 30f0b6d — llvm/lib/Target/RISCV/GISel RISCVInstructionSelector.cpp, llvm/test/CodeGen/RISCV/GlobalISel zilsd.ll

[RISCV][GlobalISel] Support i64 load/store for RV32+Zilsd (#221148)

Extend the legalizer, register bank info, and instruction selector to
handle i64 load/store via LD_RV32/SD_RV32.

Assisted-by: Claude

---------

Co-authored-by: Craig Topper <craig.topper at sifive.com>
DeltaFile
+779-0llvm/test/CodeGen/RISCV/GlobalISel/zilsd.ll
+181-0llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-store-rv32-zilsd.mir
+171-0llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-load-rv32-zilsd.mir
+78-8llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp
+76-0llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/zilsd-load-store-rv32.mir
+70-0llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/zilsd-load-store-rv32.mir
+1,355-82 files not shown
+1,412-218 files

LLVM/project 31f3cd6 — llvm/include/llvm/ProfileData SampleProf.h, llvm/test/tools/llvm-profgen/X86 cs-preinline-inline-attributes.test

[CSPreInliner] Use always_inline/noinline attributes in pre-inliner

Teach the CSSPGO pre-inliner to respect the always_inline and noinline
attributes encoded in pseudo probe descriptors
(-preinliner-use-inline-attributes, default off). The attributes are stamped
onto the context profiles of each function. shouldInline() never inlines a
noinline callee and always inlines an always_inline one, since the compiler
enforces both whatever the plan says.

An always_inline callee is not charged to the caller's size budget, and it is
admitted even when that budget is exhausted: the budget loop used to stop
before shouldInline() was reached, so the plan recorded the callee as not
inlined while the compiler inlines it anyway.
-preinliner-charge-always-inline-size (default off) charges an always_inline
callee's size to the budget instead, so an always_inline subtree can crowd out
ordinary candidates; the callee itself is still always inlined.
DeltaFile
+109-0llvm/test/tools/llvm-profgen/X86/Inputs/cs-preinline-inline-attributes.perfscript
+109-0llvm/test/tools/llvm-profgen/X86/cs-preinline-inline-attributes.test
+58-2llvm/tools/llvm-profgen/CSPreInliner.cpp
+3-0llvm/tools/llvm-profgen/ProfiledBinary.h
+2-0llvm/include/llvm/ProfileData/SampleProf.h
+281-25 files

LLVM/project 56f4969 — mlir/include/mlir/Dialect/LLVMIR LLVMTypes.td, mlir/unittests/Dialect/LLVMIR LLVMTypeTest.cpp

[mlir][LLVM] Verify LLVMStructType element types in get()

`using Base::verifyInvariants` pulled in StorageUserBase's variadic no-op
verifier. `StorageUserBase::get` passes a `unique_function` emitter, which
binds to that template exactly, so `getLiteral` skipped the element type
check even in assertions builds.

Drop the `using` and add a storage-key overload. Sub-element replacement
needs it because it rebuilds literal structs with `Base::get(ctx, key)`.

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+10-0mlir/unittests/Dialect/LLVMIR/LLVMTypeTest.cpp
+8-1mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.td
+18-12 files

LLVM/project fcfded0 — clang/test/CIR/CodeGen call-conv-lowering-amdgpu-cxx-records.cpp call-conv-lowering-amdgpu-return-types.c, clang/test/CIR/CodeGenHIP cleanup-alloca-addrspace.hip lambda-reference-var.hip

[CIR] Enable CallConvLowering for AMDGPU triples
DeltaFile
+165-0clang/test/CIR/CodeGen/call-conv-lowering-amdgpu-arg-types.c
+158-0clang/test/CIR/CodeGen/call-conv-lowering-amdgpu-return-types.c
+137-0clang/test/CIR/CodeGenHIP/call-conv-lowering-amdgpu-kernel-args.hip
+74-0clang/test/CIR/CodeGen/call-conv-lowering-amdgpu-cxx-records.cpp
+4-4clang/test/CIR/CodeGenHIP/cleanup-alloca-addrspace.hip
+6-2clang/test/CIR/CodeGenHIP/lambda-reference-var.hip
+544-63 files not shown
+558-129 files

LLVM/project 3502400 — clang/include/clang/CIR/Dialect/IR CIRTypes.td CIRTypeConstraints.td, clang/lib/CIR/Dialect/IR CIRTypes.cpp

[CIR] Reject void record members, array elements and union padding

!cir.void has no data layout, so a record or array that holds one has
none either. The verifiers accepted such types, and the first size query
crashed. CallConvLowering hit a DataLayout fatal error on a union
argument, and LowerToLLVM asserted in LLVMStructType::setBody.

The record and array verifiers now reject void, so no consumer has to
guard against it. CallConvLowering still accepts void as a parameter
type, which the x86_64 classifier ignores.

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+31-0clang/test/CIR/IR/invalid-void-member.cir
+17-0clang/lib/CIR/Dialect/IR/CIRTypes.cpp
+4-0clang/include/clang/CIR/Dialect/IR/CIRTypeConstraints.td
+1-1clang/include/clang/CIR/Dialect/IR/CIRTypes.td
+53-14 files

LLVM/project 5240afe — llvm/include/llvm/IR PseudoProbe.h, llvm/lib/MC MCPseudoProbe.cpp

[PseudoProbe] Encode inline attributes in probe descriptor

Record a function's always_inline and noinline attributes in its pseudo probe
descriptor, so that the profile generator can see them. The
!llvm.pseudo_probe_desc metadata gets a trailing i8 attributes operand (GUID,
hash, name, attributes); a descriptor without it, from older IR, has no
attributes. In the .pseudo_probe_desc section the attributes take bits [60:63]
of the 64-bit hash field, which the function hash leaves free, and
MCPseudoProbeDecoder splits them back into MCPseudoProbeFuncDesc::Attributes
and the hash.
DeltaFile
+68-0llvm/test/Transforms/SampleProfile/pseudo-probe-desc-attr.ll
+46-0llvm/test/tools/llvm-profgen/X86/pseudo-probe-desc-attributes.test
+15-2llvm/include/llvm/IR/PseudoProbe.h
+6-6llvm/test/Transforms/SampleProfile/pseudo-probe-call-vs-invoke-hash.ll
+7-4llvm/lib/MC/MCPseudoProbe.cpp
+9-1llvm/lib/Target/TargetLoweringObjectFile.cpp
+151-139 files not shown
+181-2515 files