LLVM/project 34acb4f — llvm/lib/Target/BPF BPFMIChecking.cpp, llvm/test/CodeGen/BPF atomics_locked_live_result.mir

[BPF] Check every locked atomic insn for a used result (#231550)

With `-mcpu=v3` and later, a monotonic (relaxed) `atomicrmw add`, `sub`,
`and`,
`or` or `xor` whose result is used is selected to the locked insn, which
does
not return the old value, so the program gets the operand register back
instead. The verifier accepts the program and it silently computes the
wrong
value: `next()` below returns 1 on every call instead of the previous
value of
`counter`, so anything built on it, such as an id or sequence counter,
breaks
without any error at compile or load time.

```c
long counter;
long next(void) {
  return __atomic_fetch_add(&counter, 1, __ATOMIC_RELAXED);

    [50 lines not shown]
DeltaFile
+123-0llvm/test/CodeGen/BPF/atomics_locked_live_result.mir
+26-8llvm/lib/Target/BPF/BPFMIChecking.cpp
+149-82 files

LLVM/project effdd07 — clang/lib/Headers/llvm_offload_wrappers/gpu __clang_gpu_libclc_declares.h __clang_gpu_math.h, clang/test/CodeGenCUDA offload_via_llvm_math.cu

add libclc math declarations
DeltaFile
+244-0clang/test/CodeGenCUDA/offload_via_llvm_math.cu
+212-0clang/lib/Headers/llvm_offload_wrappers/gpu/__clang_gpu_math.h
+164-0clang/lib/Headers/llvm_offload_wrappers/gpu/__clang_gpu_libclc_declares.h
+107-0offload/test/offloading/language/math.cpp
+35-0clang/test/Driver/llvmoffload-libclc.c
+12-0clang/test/Driver/gpu-libc.c
+774-07 files not shown
+804-1213 files

LLVM/project b82616e — clang/lib/CIR/CodeGen CIRGenStmtOpenMP.cpp, clang/test/CIR/CodeGenOpenMP parallel-for.c target-parallel.c

[CIR][OpenMP] Add support for the OpenMP 'for' directive

This patch adds support for wsloop in ClangIR: the `for` directive and its
combined forms `parallel for` and `target parallel for`. This is lowered to an
omp.wsloop + omp.loop_nest, nested utilizing the existing queue-based
decomposition.

Assisted-by: Cursor / Claude Sonnet 5 High
DeltaFile
+315-68clang/lib/CIR/CodeGen/CIRGenStmtOpenMP.cpp
+343-0clang/test/CIR/CodeGenOpenMP/target-parallel-for.c
+228-0clang/test/CIR/CodeGenOpenMP/for-loop-forms.c
+220-0clang/test/CIR/CodeGenOpenMP/for.c
+133-0clang/test/CIR/CodeGenOpenMP/target-parallel.c
+126-0clang/test/CIR/CodeGenOpenMP/parallel-for.c
+1,365-681 files not shown
+1,372-687 files

LLVM/project 46dad3d — llvm/test/MC/AsmParser ppc-memop-from-set.s ppc-memop-from-set-diag.s

Fix tests after ad409f3d93b8 (#233557)
DeltaFile
+1-0llvm/test/MC/AsmParser/ppc-memop-from-set.s
+1-0llvm/test/MC/AsmParser/ppc-memop-from-set-diag.s
+2-02 files

LLVM/project e0739d2 — llvm/lib/Analysis InstructionSimplify.cpp ValueTracking.cpp, llvm/test/Transforms/InstSimplify pr28725.ll compare.ll

[ValueTracking] Address plus in-object offset is never null (#231649)

LangRef guarantees that no allocated object crosses the unsigned address
space boundary, including the address one past its end, so a non-zero
offset that stays within an object cannot produce the null address, even
if the object starts at zero. Teach isNonZeroAdd about this, taking the
size from getPointerDereferenceableBytes so that globals, allocas and
dereferenceable arguments are covered; previously this was only provable
when the object's alignment supplied low zero bits. The address may be a
ptrtoaddr, or a ptrtoint at least as wide as the address.

simplifyICmpInst returns whatever ConstantFoldCompareInstOperands gives
for two constants, including nullptr, so a comparison between constants
never reaches the generic logic below. Fall through in that case. That
exposes two gaps in isKnownNonZero: it reported a GlobalAlias as non
null, contradicting evaluateICmpRelation's deliberate refusal to decide
alias comparisons (PR1646), and it reported a global as non null even
where null is a valid address. Exclude aliases and use
NullPointerIsDefined(), which subsumes the address space check.

    [5 lines not shown]
DeltaFile
+268-0llvm/test/Transforms/InstSimplify/ptrtoaddr.ll
+48-5llvm/lib/Analysis/ValueTracking.cpp
+42-0llvm/test/Transforms/PhaseOrdering/X86/ubsan-pointer-overflow.ll
+16-4llvm/test/Transforms/InstSimplify/compare.ll
+12-6llvm/lib/Analysis/InstructionSimplify.cpp
+1-5llvm/test/Transforms/InstSimplify/pr28725.ll
+387-203 files not shown
+390-239 files

LLVM/project 94f2d68 — clang/lib/Driver/ToolChains CommonArgs.cpp Clang.cpp, clang/test/Driver aarch64-uefi-constructed-args.c aarch64-security-options.c

[clang][Driver] Use the Windows ARM64 defaults for aarch64-unknown-uefi

Match the Windows ARM64 driver defaults for aarch64-unknown-uefi, which
follows the same ABI:

* char is signed, so do not pass -fno-signed-char,
* the frame chain must stay valid even when frame pointers are omitted,
  so -fomit-frame-pointer yields -mframe-pointer=reserved rather than
  none, as the backend reserves the frame pointer for UEFI as well,
* -msign-return-address selects the B key, the only one the backend
  accepts for Windows and UEFI.

Assisted-by: Claude
DeltaFile
+9-0clang/test/Driver/aarch64-uefi-constructed-args.c
+9-0clang/test/Driver/aarch64-security-options.c
+4-4clang/lib/Driver/ToolChains/CommonArgs.cpp
+4-4clang/lib/Driver/ToolChains/Clang.cpp
+26-84 files

LLVM/project eb5923c — clang/lib/Basic/Targets AArch64.h AArch64.cpp, clang/lib/Driver Driver.cpp

[clang] Add aarch64-unknown-uefi target

Add the aarch64-unknown-uefi target to clang, building on the backend
support added in the preceding patches. Like x86_64-unknown-uefi it
follows the Microsoft ABI conventions, matching the Windows ARM64 target
which is the only way EFI applications for AArch64 can be built with
Clang/LLVM today:

* add UEFIAArch64TargetInfo: LLP64 types, Microsoft C++ ABI, char*
  based va_list and the Win64 calling convention kind,
* use the Windows AArch64 ABI info in CodeGen for UEFI,
* accept aarch64 for *-uefi triples in the driver.

The UEFI toolchain already handles the linker invocation (lld-link with
/subsystem:efi_application), so no further driver changes are needed.

Assisted-by: Claude
DeltaFile
+50-0clang/lib/Basic/Targets/AArch64.cpp
+43-0clang/test/CodeGen/AArch64/uefi-abi.c
+19-0clang/test/Driver/aarch64-uefi-constructed-args.c
+14-0clang/lib/Basic/Targets/AArch64.h
+0-6clang/test/Driver/unsupported-target-arch.c
+4-2clang/lib/Driver/Driver.cpp
+130-89 files not shown
+147-915 files

LLVM/project 9f397f8 — llvm/docs ReleaseNotes.md, llvm/lib/Target/AArch64 AArch64CodeLayoutOpt.cpp AArch64MachineFunctionInfo.cpp

[AArch64] Apply the Windows SEH and CRT codegen constraints to UEFI

aarch64-unknown-uefi uses SEH unwind information and has no C runtime
library, so the remaining Windows specific codegen decisions that follow
from this apply to it too:

* do not align loops or basic blocks, since SEH unwind info generation
  needs the exact function layout before alignment padding is inserted,
* sign return addresses with the B key by default and reject A key
  signing, matching the pac_sign_lr unwind code used by the unwinder;
  the branch protection parser defaults to the B key for UEFI as well,
  so that -mbranch-protection=pac-ret keeps working,
* do not lower wide shifts to libcalls at -Oz, as those helpers are not
  available.

The corresponding Windows tests gain aarch64-unknown-uefi run lines and
the LLVM release notes announce the new target, which completes the
backend side of aarch64-unknown-uefi support.

Assisted-by: Claude
DeltaFile
+18-0llvm/unittests/TargetParser/TargetParserTest.cpp
+5-5llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+2-2llvm/lib/TargetParser/ARMTargetParserCommon.cpp
+2-2llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.cpp
+4-0llvm/docs/ReleaseNotes.md
+1-1llvm/lib/Target/AArch64/AArch64CodeLayoutOpt.cpp
+32-103 files not shown
+35-109 files

LLVM/project bcbee21 — llvm/lib/CodeGen/GlobalISel IRTranslator.cpp, llvm/lib/Target/AArch64 AArch64ISelLowering.cpp AArch64Subtarget.cpp

[AArch64] Classify global references on UEFI like Windows COFF

Apply the Windows COFF rules for global references to
aarch64-unknown-uefi, which produces the same PE/COFF images:

* classify dllimport and non-dso-local globals with MO_DLLIMPORT /
  MO_COFFSTUB, so extern_weak symbols are referenced through a stub that
  can be resolved to zero by the linker,
* keep the existing SelectionDAG, FastISel and GlobalISel handling of
  calls and tail calls to extern_weak functions in sync with that,
* default to the PIC relocation model, so jump tables and other
  references stay position independent in relocatable PE images,
* lower ifuncs on UEFI as COFF has no support for them.

The extern weak and jump table tests gain aarch64-unknown-uefi run lines,
and a new test checks that the default pipelines lower ifuncs for both
Windows and UEFI.

Assisted-by: Claude
DeltaFile
+47-0llvm/test/CodeGen/AArch64/ifunc-lower-coff.ll
+3-3llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+3-3llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+2-2llvm/lib/Target/AArch64/AArch64Subtarget.cpp
+2-1llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+3-0llvm/test/CodeGen/AArch64/windows-extern-weak.ll
+60-93 files not shown
+63-119 files

LLVM/project 457e445 — llvm/test/CodeGen/AMDGPU/GlobalISel extractelement.ll insertelement.ll, llvm/test/CodeGen/RISCV rvp-scalar-rv64.ll rv64p.ll

Rebase, address comments

Created using spr 1.3.7
DeltaFile
+3,770-0llvm/test/CodeGen/RISCV/rvp-scalar.ll
+0-1,971llvm/test/CodeGen/RISCV/rv64p.ll
+820-1,000llvm/test/CodeGen/AMDGPU/GlobalISel/insertelement.ll
+1,368-0llvm/test/CodeGen/RISCV/rvp-scalar-rv64.ll
+562-283llvm/test/CodeGen/AMDGPU/GlobalISel/extractelement.ll
+434-325llvm/test/Transforms/LoopVectorize/AArch64/sve2-histcnt.ll
+6,954-3,579888 files not shown
+37,092-11,153894 files

LLVM/project 5106966 — clang/include/clang/CodeGenUtils CallUtils.h, clang/lib/CIR/CodeGen CIRGenCall.cpp

[CIR] Honor C++17 operator-call argument evaluation order (#232779)

C++17 (P0145) sequences the right operand of an assignment before the
left, even when the assignment resolves to an overloaded operator. CIR
did not apply this to non-member operators.

CIRGenFunction::emitCall now selects the evaluation order by following
faithfully OG.

The OG changes target code sharing, and for OG those should be NFC.

The new test now is mostly a copy off `CodeGenCXX/cxx1z-eval-order.cpp`
 to CIR. The MS ABI RUN lines are dropped.
DeltaFile
+386-0clang/test/CIR/CodeGen/cxx1z-eval-order.cpp
+34-0clang/lib/CodeGenUtils/CallUtils.cpp
+28-0clang/include/clang/CodeGenUtils/CallUtils.h
+1-24clang/lib/CodeGen/CGExpr.cpp
+10-6clang/lib/CIR/CodeGen/CIRGenCall.cpp
+2-8clang/lib/CodeGen/CodeGenFunction.h
+461-386 files not shown
+475-4912 files

LLVM/project dd0a80c — llvm/lib/CodeGen/GlobalISel LegalizerHelper.cpp, llvm/test/CodeGen/AArch64/GlobalISel libcall-disable-tail-calls.ll

[GlobalISel] Honor the disable-tail-calls attribute for libcalls (#233404)

GlobalISel lowered libcalls as tail calls even when the caller had
`"disable-tail-calls"="true"`.
Check the attribute in isLibCallInTailPosition so such libcalls are not
tail called.
DeltaFile
+43-0llvm/test/CodeGen/AArch64/GlobalISel/libcall-disable-tail-calls.ll
+4-0llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+47-02 files

LLVM/project 2f274bb — clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.cpp, clang/test/CIR/Lowering unlowered-address-spaces.cir

[CIR] Reject language address spaces in DirectToLLVM pointer conversion

Reject unlowered language address spaces in pointer types when bypassing TargetLowering. Guard pointer-producing lowerings, including generated patterns, so failed conversions report legalization failures instead of silently selecting address space zero or constructing invalid LLVM operations.

Assisted-by: Codex / GPT-6
DeltaFile
+504-0clang/test/CIR/Lowering/unlowered-address-spaces.cir
+64-0clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+2-0clang/utils/TableGen/CIRLoweringEmitter.cpp
+570-03 files

LLVM/project 54d1928 — clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.cpp, clang/test/CIR/Lowering opaque-pointer-address-spaces.cir unlowered-address-spaces.cir

fix: [CIR] Check only the converted pointer's address space

Limit opaque pointer conversion to its own address space and diagnose unsupported pointee types where their layout is required. Emit type-specific errors for failed pointer conversions.

Validate pointee memory conversion before deriving copy sizes, alignments, or pointer-difference strides from CIR layout. Keep deeper pointee types opaque when their layouts are not needed.

Assisted-by: Codex / GPT-6
DeltaFile
+151-96clang/test/CIR/Lowering/unlowered-address-spaces.cir
+153-0clang/test/CIR/Lowering/opaque-pointer-address-spaces.cir
+36-55clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+2-1clang/utils/TableGen/CIRLoweringEmitter.cpp
+342-1524 files

LLVM/project 703fd8e — clang/include/clang/CIR LoweringHelpers.h, clang/include/clang/CIR/Dialect/IR CIROps.td

[CIR] Propagate initializer type adjustment failures

Reject initializers whose active members have no LLVM representation, including when an enclosing union's storage type is convertible. Propagate recursive adjustment failures before querying data layout or constructing LLVM operations.

Assisted-by: Codex / GPT-6
DeltaFile
+66-0clang/test/CIR/Lowering/unsupported-initializer-types.cir
+13-2clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+12-0clang/lib/CIR/Lowering/LoweringHelpers.cpp
+2-1clang/include/clang/CIR/LoweringHelpers.h
+1-1clang/include/clang/CIR/Dialect/IR/CIROps.td
+94-45 files

LLVM/project 5a4f675 — clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.cpp, clang/test/CIR/Lowering unsupported-type-conversions.cir

fix: [CIR] Diagnose unsupported type conversions

Emit NYI diagnostics naming the unsupported type and include symbol context when available.

Assisted-by: Codex / GPT-6
DeltaFile
+27-13clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+25-1clang/test/CIR/Lowering/unsupported-type-conversions.cir
+52-142 files

LLVM/project 150934e — clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.h LowerToLLVM.cpp, clang/test/CIR/Lowering unsupported-type-conversions.cir

[CIR] Propagate type conversion failures in DirectToLLVM

Propagate failed type and constant conversions through DirectToLLVM so unsupported types produce legalization failures instead of invalid LLVM operations or a void function result.

Assisted-by: Codex / GPT-6
DeltaFile
+199-0clang/test/CIR/Lowering/unsupported-type-conversions.cir
+57-16clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+4-3clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.h
+260-193 files

LLVM/project 9e67ce1 — clang/lib/CodeGen CGExpr.cpp, clang/test/CodeGen attr-counted-by-or-null-for-pointers.c attr-sized-by-or-null-for-pointers.c

[Clang][counted_by] Don't re-evaluate the base of a counted_by pointer access for -fsanitize=array-bounds

When indexing a 'counted_by' pointer field with -fsanitize=array-bounds,
EmitCountedByBoundsChecking was handed an invalid address and re-emitted
the field's l-value to locate the count. That re-evaluated the struct
base, duplicating its side-effects:

  struct p { int count; int *buf __counted_by(count); };
  struct p *q;
  int f(int i) { return q++->buf[i]; }   // 'q' incremented twice
  int g(int i) { return get()->buf[i]; } // 'get' called twice

i.e. enabling the sanitizer changed the program's behavior.

When the subscript base is exactly the field load, emit the field's
l-value once, load the pointer from it (as the default case of
EmitPointerWithAlignment does, through EmitLoadOfLValue so that a
'__ptrauth'-qualified field is still authenticated), and pass the
field's address to the bounds check. When there's an intervening cast (e.g.

    [6 lines not shown]
DeltaFile
+136-26clang/test/CodeGen/attr-counted-by-base-exprs.c
+50-13clang/lib/CodeGen/CGExpr.cpp
+12-12clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c
+12-12clang/test/CodeGen/attr-sized-by-for-pointers.c
+24-0clang/test/CodeGen/attr-counted-by-ptrauth.c
+6-6clang/test/CodeGen/attr-counted-by-or-null-for-pointers.c
+240-691 files not shown
+246-757 files

LLVM/project 243b847 — mlir/include/mlir/Dialect/Tosa/IR TosaProfileCompliance.h, mlir/lib/Dialect/Tosa/Transforms TosaProfileCompliance.cpp

[mlir][tosa][NFC] Replace using namespace with nested namespaces in TosaPr… (#233543)

…ofileCompliance
DeltaFile
+4-3mlir/lib/Dialect/Tosa/Transforms/TosaProfileCompliance.cpp
+4-3mlir/include/mlir/Dialect/Tosa/IR/TosaProfileCompliance.h
+8-62 files

LLVM/project 325918a — llvm/lib/Target/SystemZ/MCTargetDesc SystemZHLASMAsmStreamer.h SystemZHLASMAsmStreamer.cpp, llvm/test/CodeGen/SystemZ zos-ppa1-name.ll zos-common-global.ll

[SystemZ][z/OS] Emit fill in HLASM output (#233056)

HLASM streamer never overrode emitFill and the MCStreamer
default does nothing, so anything that went through emitZeros or a splat
came out as no bytes at all. That meant zero initialised globals and
common symbols had no storage, and struct padding was dropped so an i64
after an i8 ended up at offset 1 instead of 8. The GOFF object path was
already fine, this just makes the HLASM text match it using DC nXL1'hh',
and it errors out past X'7FFFFFFF' since that's the GOFF limit for both
the duplication factor and the location counter. The PPA1 tests change
because the padding after the function name was missing from the HLASM
side too.
DeltaFile
+23-0llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMAsmStreamer.cpp
+11-0llvm/test/CodeGen/SystemZ/zos-hlasm-out.ll
+3-0llvm/test/CodeGen/SystemZ/zos-ppa1.ll
+2-0llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMAsmStreamer.h
+1-0llvm/test/CodeGen/SystemZ/zos-ppa1-name.ll
+1-0llvm/test/CodeGen/SystemZ/zos-common-global.ll
+41-06 files

LLVM/project 31cc5fc — 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 005b769 — 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 05fa8ff — 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 42ef3e3 — 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 1ba89a6 — 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 57ddda2 — 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 e580acd — clang/lib/Driver SanitizerArgs.cpp, clang/lib/Driver/ToolChains AMDGPU.cpp CommonArgs.cpp

Comments
DeltaFile
+48-0clang/test/Driver/fsanitize-concurrency-offload.c
+27-0clang/test/Driver/fsanitize.c
+16-7clang/lib/Driver/ToolChains/Clang.cpp
+11-4clang/lib/Driver/SanitizerArgs.cpp
+5-6clang/lib/Driver/ToolChains/CommonArgs.cpp
+3-2clang/lib/Driver/ToolChains/AMDGPU.cpp
+110-195 files not shown
+112-2111 files

LLVM/project 0220052 — 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 d52231e — clang/docs ConcurrencySanitizer.md, clang/lib/CodeGen CodeGenFunction.cpp

[Clang] Add support for the `-fsanitize=concurrency` runtime

Summary:
Add the frontend sanitizer kind, function attributes, pass pipeline
integration, predefined macro, driver handling, and documentation for
ConcurrencySanitizer.
DeltaFile
+207-0clang/docs/ConcurrencySanitizer.md
+73-0clang/test/CodeGen/sanitize-concurrency.c
+32-8clang/lib/Driver/ToolChains/CommonArgs.cpp
+15-0clang/test/Driver/fsanitize.c
+10-4clang/lib/Driver/SanitizerArgs.cpp
+10-3clang/lib/CodeGen/CodeGenFunction.cpp
+347-1510 files not shown
+375-1616 files

LLVM/project afeaf3c — llvm/lib/Transforms/Instrumentation ConcurrencySanitizer.cpp, llvm/test/Instrumentation/ConcurrencySanitizer selection.ll

simplify to TSan shape and address matt comments
DeltaFile
+28-74llvm/lib/Transforms/Instrumentation/ConcurrencySanitizer.cpp
+29-8llvm/test/Instrumentation/ConcurrencySanitizer/selection.ll
+57-822 files