LLVM/project d3e9891 — clang/lib/Interpreter InterpreterValuePrinter.cpp, clang/test/Interpreter pretty-print.cpp

[clang-repl] Evaluate a void expression that has no trailing semicolon (#228334)

An expression statement without a semicolon at the end of an input is
replaced by a call to `__clang_Interpreter_SetValueNoAlloc` that
captures its value. For an expression of type `void`, the expression was
not an argument of that call and was dropped, so `f()` did not call `f`.

Build `(E, __clang_Interpreter_SetValueNoAlloc(...))` instead.

Fixes #219800.

Assisted-by: Claude Opus 5.5
DeltaFile
+15-0clang/unittests/Interpreter/InterpreterTest.cpp
+11-0clang/test/Interpreter/pretty-print.cpp
+7-3clang/lib/Interpreter/InterpreterValuePrinter.cpp
+33-33 files

LLVM/project 63ba944 — orc-rt/test/unit/bedrock SimpleNativeMemoryMapTest.cpp

[orc-rt] Use the Error matchers in SimpleNativeMemoryMapTest (#228335)

Use the Error matchers introduced in 4c8a437d0487 to clean up error
checks in SimpleNativeMemoryMapTest.
DeltaFile
+64-52orc-rt/test/unit/bedrock/SimpleNativeMemoryMapTest.cpp
+64-521 files

LLVM/project d950230 — llvm/lib/ExecutionEngine/Orc/TargetProcess RegisterEHFrames.cpp

Revert "[ORC] Use __unw_add_dynamic_eh_frame_section/__unw_remove_dyn… (#227894)

…amic_eh_ frame_section in RegisterEHFrames.cpp (#212260)"

Revert commit d49626c811c304c047e028a80cedc0d377f49dfb due to link
failures on some platforms (see discussion in PR).
DeltaFile
+1-26llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp
+1-261 files

LLVM/project f0d14b7 — llvm/test/Analysis/CostModel/AMDGPU cmp-select.ll select.ll, llvm/test/Transforms/LoopUnroll/AMDGPU unroll-cost-cmp-select.ll

[AMDGPU] Add getCmpSelInstrCost override to re-enable SimplifyCFG speculation for vector types (#208043)

Commit ["[CostModel] Handle all cost kinds in
getCmpSelInstrCost"](https://github.com/llvm/llvm-project/commit/0967957d7a94e1b5c749c6e963bdca25f3c6d749)
changed the base cost model to consider the type in the costs for
non-throughput cost kinds. This caused SimplifyCFG to stop folding
branches to selects on AMDGPU, since
vector selects now report higher costs that exceed the folding
threshold.

Add an getCmpSelInstrCost override for AMDGPU to partially restore the
old behavior by returning a constant unit cost for cost kind
`TCK_SizeAndLatency`. This affects speculative execution in SimplifyCFG
and SpeculativeExecution.
DeltaFile
+446-0llvm/test/Analysis/CostModel/AMDGPU/cmp.ll
+367-0llvm/test/Analysis/CostModel/AMDGPU/select.ll
+193-0llvm/test/Transforms/SimplifyCFG/AMDGPU/speculate-block-regpressure.ll
+178-0llvm/test/Analysis/CostModel/AMDGPU/cmp-select.ll
+58-0llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-cost-cmp-select.ll
+29-0llvm/test/Transforms/SimplifyCFG/AMDGPU/speculate-block.ll
+1,271-02 files not shown
+1,291-08 files

LLVM/project ee54351 — orc-rt/include/orc-rt/bedrock SocketConnector.h VettedPeer.h, orc-rt/include/orc-rt/bedrock/sps SimpleRemoteCAOverSocket.h

[orc-rt] Add VettedPeer, require it for the socket transport (#228336)

The controller at the other end of a channel can make the executor run
arbitrary code, so attaching to it is a trust decision.
VettedPeer<ChannelT> makes that decision explicit: it can only be made
through one of three named factories -- inherited, checked or unchecked
-- each naming the reason the peer is trusted.
createSimpleRemoteCAOverSocket now takes a VettedPeer<SocketHandle>
rather than a bare SocketHandle.

VettedPeer neither verifies nor records the reason. The factories exist
so that the decision can't be skipped by omission, and so that every
choice is visible in the source.

The socket:adopt connector trusts its socket as inherited, and documents
the resulting precondition on its callers.

Assisted-by: Claude
DeltaFile
+68-0orc-rt/include/orc-rt/bedrock/VettedPeer.h
+44-0orc-rt/test/unit/bedrock/VettedPeerTest.cpp
+8-4orc-rt/include/orc-rt/bedrock/sps/SimpleRemoteCAOverSocket.h
+10-2orc-rt/test/unit/bedrock/sps/SimpleRemoteCAOverSocketTest.cpp
+5-0orc-rt/include/orc-rt/bedrock/SocketConnector.h
+2-2orc-rt/lib/bedrock/sys/posix/sps/SimpleRemoteCAOverSocket.cpp
+137-83 files not shown
+142-99 files

LLVM/project 8c48360 — clang/cmake/caches Fuchsia.cmake Fuchsia-stage2-instrumented.cmake

[Fuchsia] Escape ';' in STAGE2_ CMake variables (#228272)

When forwarding STAGE2_* variables to EXTRA_ARGS in Fuchsia.cmake and
Fuchsia-stage2-instrumented.cmake, semicolons in list values must be
replaced with '|' to match the LIST_SEPARATOR of ExternalProject_Add.

In 70cf616b331c, 'list(APPEND EXTRA_ARGS "-D${variableName}=...")' was
added using the raw '${${variableName}}' before replacing ';' with '|',
and Fuchsia-stage2-instrumented.cmake similarly omitted the ';' to '|'
replacement.

When a list variable like STAGE2_CROSS_TOOLCHAIN_FLAGS_NATIVE contains
semicolon-separated '-D...' flags (such as CMAKE_EXE_LINKER_FLAGS),
appending it without escaping splits it into separate top-level CMake
arguments for stage2. Because STAGE2_CROSS_TOOLCHAIN_FLAGS_NATIVE sorts
alphabetically after STAGE2_CMAKE_*_LINKER_FLAGS, its split flags
overwrite the stage2 linker flags with the stage0 toolchain's libc++.a,
causing stage2 link failures on macOS.
DeltaFile
+2-1clang/cmake/caches/Fuchsia-stage2-instrumented.cmake
+1-1clang/cmake/caches/Fuchsia.cmake
+3-22 files

LLVM/project 0ff9f92 — llvm/tools/llvm-profdata llvm-profdata.cpp

[llvm-profdata] Propagate Error in loadInput and mergeWriterContexts (#228158)

[llvm-profdata] Propagate Error in loadInput and mergeWriterContexts

Propagate Error from loadInput and mergeWriterContexts in
mergeInstrProfile,
supplementInstrProfile, and overlapInstrProfile. In mergeInstrProfile's
ThreadPool, catch errors from worker threads, stop scheduling new jobs,
and return the first encountered fatal error.

Ensure ~WriterContext() consumes any pending unhandled errors in
WriterContext::Errors upon destruction.

Not NFC as destructors are run on the stack and ThreadPool workers exit
earlier on error.

With all subcommands propagating llvm::Error to main, exitWithError,
exitWithErrorCode, and the LSan leak suppression workaround are no
longer needed.

Assisted-by: Gemini
DeltaFile
+64-41llvm/tools/llvm-profdata/llvm-profdata.cpp
+64-411 files

LLVM/project 7ff7598 — orc-rt/test/unit/bedrock SessionTest.cpp

[orc-rt] Use the Error matchers in SessionTest (#228331)

Use the Error matchers introduced in 4c8a437d0487 to clean up error
checks in SessionTest.
DeltaFile
+43-29orc-rt/test/unit/bedrock/SessionTest.cpp
+43-291 files

LLVM/project 013fb4f — compiler-rt/test/msan release_origin.c

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+7-7compiler-rt/test/msan/release_origin.c
+7-71 files

LLVM/project a1596ab — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer VecUtils.h, llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h

[SandboxVec][LoadStoreVec] Support constant vectors of mixed types

createConstantVector() previously packed the constant store operands
as-is, which only worked when every store had the same element type.
Take the lane type from VecUtils::getCombinedVectorTypeFor() instead and
reinterpret each constant's bits as that type, going through an integer
of matching width via ptrtoint/inttoptr/bitcast. Constants wider than a
lane (e.g. an i64 in an <N x i32>) are split across several lanes in
memory order. Bail out when a constant cannot be reinterpreted, such as
a non-integral pointer or a relocatable address that needs splitting.

Also flatten vector-typed ConstantPointerNull into per-lane nulls, and
bail out on the remaining vector constants such as poison rather than
packing them into the result.

Co-authored-by: Cursor <cursoragent at cursor.com>
DeltaFile
+383-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_types.ll
+100-13llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+18-0llvm/lib/SandboxIR/Constant.cpp
+11-2llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/VecUtils.h
+12-0llvm/unittests/SandboxIR/SandboxIRTest.cpp
+11-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+535-153 files not shown
+541-169 files

LLVM/project f6c78b8 — llvm/include/llvm/Option LibraryOptions.td, llvm/lib/MC MCCLOptions.h MCCLOptions.td

[MC] Declare command line options in TableGen (#228321)

Move the cl::opts into MCCLOptions.td, except the -dx-* options, which
the DirectX backend reads and writes. The name avoids MCOptions, a
common variable name for MCTargetOptions.

New OptionsStruct member kinds replace cl:: features the port needs:

* OptionalBoolField, a std::optional<bool>, replaces cl::boolOrDefault
  (-use-leb128-directives)
* EnumField replaces cl::values, showing its values as the -help-hidden
  metavar
* DefaultOnOffField, an EnumField of std::optional<bool>, replaces the
  file-local Default/Enable/Disable enum (-dwarf-extended-loc), which
  DwarfDebug.cpp also defines for four options

Aided by Opus 5.5
DeltaFile
+40-9llvm/unittests/Option/LibraryOptionsTest.cpp
+6-23llvm/lib/MC/MCAsmInfo.cpp
+28-0llvm/include/llvm/Option/LibraryOptions.td
+21-0llvm/lib/MC/MCCLOptions.td
+17-0llvm/lib/MC/MCCLOptions.h
+14-1llvm/utils/TableGen/OptionParserEmitter.cpp
+126-3311 files not shown
+200-5717 files

LLVM/project 56a012b — offload/include device.h, offload/libompaccsupport device.cpp

[offload][omp] Move strict threads & groups computation to libomptarget (#222607)

Move all computation related to strict threads and strict groups to
libomptarget as it's specific to OpenMP. This also removes all refrences
to ExecutionModes from the Plugin Interface.

With this, the data from the OpenMP kernel environment being used is
ReductionDataSize used to create the KLE, and maxNumThreads used by
RecordReplay. They're are purposely left for a future PR.

Assisted by Claude.
DeltaFile
+180-3offload/libompaccsupport/device.cpp
+0-147offload/plugins-nextgen/common/src/PluginInterface.cpp
+9-63offload/plugins-nextgen/common/include/PluginInterface.h
+40-1offload/include/device.h
+9-9offload/test/offloading/ompx_bare_gridsize.c
+6-6offload/test/offloading/fortran/target-no-loop.f90
+244-22916 files not shown
+260-24722 files

LLVM/project 74b7b73 — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer VecUtils.h, llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h

[SandboxVec][LoadStoreVec] Support constant vectors of mixed types

createConstantVector() previously packed the constant store operands
as-is, which only worked when every store had the same element type.
Take the lane type from VecUtils::getCombinedVectorTypeFor() instead and
reinterpret each constant's bits as that type, going through an integer
of matching width via ptrtoint/inttoptr/bitcast. Constants wider than a
lane (e.g. an i64 in an <N x i32>) are split across several lanes in
memory order. Bail out when a constant cannot be reinterpreted, such as
a non-integral pointer or a relocatable address that needs splitting.

Also flatten vector-typed ConstantPointerNull into per-lane nulls, and
bail out on the remaining vector constants such as poison rather than
packing them into the result.

Co-authored-by: Cursor <cursoragent at cursor.com>
DeltaFile
+383-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_types.ll
+100-13llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+18-0llvm/lib/SandboxIR/Constant.cpp
+11-2llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/VecUtils.h
+12-0llvm/unittests/SandboxIR/SandboxIRTest.cpp
+11-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+535-153 files not shown
+541-169 files

LLVM/project 13c8c05 — llvm/include/llvm/IR IRBuilder.h

[IRBuilder] Propagate fast-math flags to folding in CreateBinOpFMF (#227543)

Fast-math flags are used by InstSimplifyFolder, so we need to pass them
to the folding function in CreateBinOpFMF.
DeltaFile
+1-1llvm/include/llvm/IR/IRBuilder.h
+1-11 files

LLVM/project b6df24d — orc-rt/test/unit/bedrock NativeDylibManagerTest.cpp

[orc-rt] Use the Error matchers in NativeDylibManagerTest (#228323)

Use the Error matchers introduced in 4c8a437d0487 to clean up error
checks in NativeDylibManagerTest.
DeltaFile
+48-37orc-rt/test/unit/bedrock/NativeDylibManagerTest.cpp
+48-371 files

LLVM/project 29e6b15 — compiler-rt/lib/sanitizer_common sanitizer_common_interceptors.inc, compiler-rt/test/msan getaddrinfo-positive.cpp getaddrinfo-padding.cpp

[compiler-rt][msan] Ignore addrinfo padding in getaddrinfo interceptor (#219124)

Avoid checking padding bytes in `struct addrinfo` in the `getaddrinfo`
interceptor.

The interceptor used a single `COMMON_INTERCEPTOR_READ_RANGE` for the
whole structure, which caused MSan to report uninitialized padding even
when all
named members were initialized.

Check each member separately instead.

Testing
- Added `getaddrinfo-padding.cpp` to cover the padding case
- Verified the new test fails before the fix and passes after the change
- Verified `getaddrinfo-positive.cpp` still reports uninitialized fields
- Ran `ninja -C build/runtimes/runtimes-bins check-msan` on AArch64
Linux

Fixes #162216
DeltaFile
+27-0compiler-rt/test/msan/getaddrinfo-padding.cpp
+24-2compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
+25-0compiler-rt/test/sanitizer_common/TestCases/getaddrinfo.cpp
+1-1compiler-rt/test/msan/getaddrinfo-positive.cpp
+77-34 files

LLVM/project 5b5d81c — clang/lib/AST/ByteCode Compiler.cpp

[clang][bytecode] Skip `emitInitScope` for `EvalEmitter` (#228092)

The opcode ultimately doesn't do anything in `EvalEmitter`, so try to
skip it as early as possible.
DeltaFile
+5-2clang/lib/AST/ByteCode/Compiler.cpp
+5-21 files

LLVM/project d6db026 — clang/lib/CIR/CodeGen CIRGenExprScalar.cpp, clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.cpp

[CIR] Upstream missing support for floating point unary operator (#193215)

- Add Support for `__bf16/Float16/bfloat16/float128` scalar pre/post
   increment and decrement.
- Add support for float vector increment and decrement, and add test
  cases for both float vector and integer vector.
- Add test case for __bf16/Float16/bfloat16/double/long double/
  float128 scalar unary operator with target `x86_64`.
- Part of task https://github.com/llvm/llvm-project/issues/192316
DeltaFile
+1,936-182clang/test/CIR/CodeGen/unary.cpp
+43-29clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp
+8-10clang/test/CIR/CodeGen/long-double-inc-dec.cpp
+5-10clang/lib/CodeGen/CGExprScalar.cpp
+3-2clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+2-2clang/test/CIR/CodeGenOpenACC/atomic-update.cpp
+1,997-2356 files

LLVM/project 1aeecf7 — clang/lib/AST/ByteCode Compiler.cpp

[clang][bytecode][NFC] Remove unnecessary std::move call (#228083)
DeltaFile
+1-1clang/lib/AST/ByteCode/Compiler.cpp
+1-11 files

LLVM/project f10d96f —

[bazel] Replace various genrules with bazel_skylib rules (#228170)
DeltaFile
+0-00 files

LLVM/project d6c1811 — llvm/tools/llvm-profdata llvm-profdata.cpp

[llvm-profdata] Propagate Error in loadInput and mergeWriterContexts

Propagate Error from loadInput and mergeWriterContexts in mergeInstrProfile,
supplementInstrProfile, and overlapInstrProfile. In mergeInstrProfile's
ThreadPool, catch errors from worker threads, stop scheduling new jobs,
and return the first encountered fatal error.

Ensure ~WriterContext() consumes any pending unhandled errors in
WriterContext::Errors upon destruction.

Not NFC as destructors are run on the stack and ThreadPool workers exit
earlier on error.

With all subcommands propagating llvm::Error to main, exitWithError,
exitWithErrorCode, and the LSan leak suppression workaround are no
longer needed.

Assisted-by: Gemini
DeltaFile
+64-41llvm/tools/llvm-profdata/llvm-profdata.cpp
+64-411 files

LLVM/project 9f8331d — llvm/tools/llvm-profdata llvm-profdata.cpp

[NFCI][llvm-profdata] Propagate Error in merge subcommand (#228157)

Change merge_main and its helpers to return Error and handle it
with reportError in main.

Not NFC as destructors are run on the stack.

Assisted-by: Gemini
DeltaFile
+146-127llvm/tools/llvm-profdata/llvm-profdata.cpp
+146-1271 files

LLVM/project a22dd47 — compiler-rt/lib/csan csan.cpp, compiler-rt/test/csan access-sizes.cpp

Use unaligned loads when snapshotting watched values
DeltaFile
+22-0compiler-rt/test/csan/access-sizes.cpp
+3-3compiler-rt/lib/csan/csan.cpp
+25-32 files

LLVM/project 5771c0f — compiler-rt/lib/csan csan_gpu.cpp csan.cpp, compiler-rt/test/csan volatile.cpp

Remove separate volatile entry points
DeltaFile
+49-0compiler-rt/test/csan/volatile.cpp
+22-0compiler-rt/test/csan/AMDGPU/volatile.hip
+0-4compiler-rt/lib/csan/csan_gpu.cpp
+0-4compiler-rt/lib/csan/csan.cpp
+71-84 files

LLVM/project 4d1d7ce — compiler-rt/lib/csan CMakeLists.txt, compiler-rt/lib/csan/offload csan_offload_preinit.cpp CMakeLists.txt

[compiler-rt] Remove dlsym interceptor and support `-shared-libsan` for CSan

Summary:
Follow the UBSan offload runtime. Offload now resolves HSA through the
global scope, so the `dlsym` interceptor is no longer needed. The real
HSA entry points are still taken from the loaded HSA library rather than
`RTLD_NEXT`, since every DSO with a static runtime exports the same
wrappers and they would otherwise chain back into each other.

Build `libclang_rt.csan.so` with the offload objects folded in. The
exported HSA wrappers report failure when HSA is absent and warn when HSA
was loaded ahead of the runtime. The preinit hook moves to a separate
`csan_offload-preinit` archive for executables.
DeltaFile
+34-98compiler-rt/lib/csan/offload/csan_offload_hsa_interceptors.cpp
+84-9compiler-rt/lib/csan/CMakeLists.txt
+35-0compiler-rt/test/csan/hsa-load-order.cpp
+22-4compiler-rt/lib/csan/offload/CMakeLists.txt
+24-0compiler-rt/test/csan/hsa-missing.cpp
+22-0compiler-rt/lib/csan/offload/csan_offload_preinit.cpp
+221-1115 files not shown
+241-11111 files

LLVM/project cdbaef0 — compiler-rt/cmake config-ix.cmake, compiler-rt/cmake/Modules AllSupportedArchDefs.cmake

comments
DeltaFile
+13-9compiler-rt/lib/csan/csan_gpu.cpp
+3-3compiler-rt/cmake/config-ix.cmake
+2-2compiler-rt/lib/csan/CMakeLists.txt
+1-1compiler-rt/test/csan/CMakeLists.txt
+1-1compiler-rt/lib/csan/offload/CMakeLists.txt
+1-0compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
+21-166 files

LLVM/project 9007828 — compiler-rt/lib/csan csan_watch.h csan_report.cpp, compiler-rt/lib/csan/offload csan_offload_report.cpp csan_offload_hsa_interceptors.cpp

[compiler-rt] Add 'csan' library for the concurrency sanitizer

Summary:
Adds the runtime for the concurrency sanitizer, both CPU and GPU.
Fundamentally, this works using the following pseudocode:

```c
static u64 watchpoints[N]; // Hash-indexed, zero is empty.

// Emitted before the access, so we never trip on our own write.
void check_access(volatile void *addr, u32 size, u32 type) {
    // Every access probes. A read conflicts only with a watched write, a
    // write conflicts with either.
    if (u64 *wp = find_watchpoint(addr, size, type))
        consume(wp, this_pc()); // Hand our location to the owner.

    if (!should_sample()) // Wave-uniform, 1-in-N chance.
        return;


    [17 lines not shown]
DeltaFile
+456-0compiler-rt/lib/csan/csan_gpu.cpp
+370-0compiler-rt/lib/csan/offload/csan_offload_hsa_interceptors.cpp
+334-0compiler-rt/lib/csan/csan.cpp
+279-0compiler-rt/lib/csan/csan_report.cpp
+184-0compiler-rt/lib/csan/offload/csan_offload_report.cpp
+163-0compiler-rt/lib/csan/csan_watch.h
+1,786-044 files not shown
+2,940-250 files

LLVM/project c8a0ebb — clang/lib/Driver/ToolChains CommonArgs.cpp, clang/test/Driver fsanitize.c fsanitize-concurrency-offload.c

[Clang] Support `-shared-libsan` for offload CSan

Summary:
Follow the UBSan handling. The shared runtime embeds the HSA
interceptors, so `csan_offload` is only linked with static runtimes and
executables pull in `csan_offload-preinit` to initialize early.
DeltaFile
+38-0clang/test/Driver/fsanitize-concurrency-offload.c
+9-4clang/lib/Driver/ToolChains/CommonArgs.cpp
+3-1clang/test/Driver/fsanitize.c
+50-53 files

LLVM/project 6767083 — clang/test/CodeGen sanitize-concurrency.c, clang/test/CodeGen/Inputs sanitize-concurrency-ignorelist.txt

ignore
DeltaFile
+29-0clang/test/CodeGen/sanitize-concurrency.c
+2-0clang/test/CodeGen/Inputs/sanitize-concurrency-ignorelist.txt
+31-02 files

LLVM/project 1ddebe8 — llvm/lib/Transforms/Instrumentation ConcurrencySanitizer.cpp

enum class and return Res
DeltaFile
+20-14llvm/lib/Transforms/Instrumentation/ConcurrencySanitizer.cpp
+20-141 files