LLVM/project 5bf0ddellvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 adox.ll

[X86] Fix ADOX miscompile by restricting COND_O optimization when EFLAGS are used (#220117)

This patch fixes a miscompile where the X86 DAGCombiner aggressively
folds an `ADD` node into an `ADOX` instruction even when the Zero Flag
(ZF) produced by the `ADD` is used by a subsequent branch (e.g., `je`).
DeltaFile
+61-0llvm/test/CodeGen/X86/adox.ll
+5-3llvm/lib/Target/X86/X86ISelLowering.cpp
+66-32 files

LLVM/project d933171llvm/lib/Target/VE VEISelLowering.cpp

[VE] Create TS1AM with getMemIntrinsicNode (#220151)

isa<AtomicSDNode> returns false on the built node: the lookup key and
SDNode::Profile disagree and the node never CSEs (see #219911).

CodeGen/VE/Scalar/atomic_swap.ll will break when we add an assert to
FoldingSet::insert that the `nodeProfile()` output matches `Token`.

Fix with getMemIntrinsicNode (`def ts1am` carries SDNPMemOperand).
DeltaFile
+12-10llvm/lib/Target/VE/VEISelLowering.cpp
+12-101 files

LLVM/project 39cd42flibc/src/__support/math CMakeLists.txt, libc/test/src/math/smoke fminimumf128_test.cpp fmaximumf128_test.cpp

nits
DeltaFile
+2-2libc/test/src/math/smoke/CMakeLists.txt
+2-2libc/src/__support/math/CMakeLists.txt
+1-1libc/test/src/math/smoke/fminimumf128_test.cpp
+1-1libc/test/src/math/smoke/fmaximumf128_test.cpp
+6-64 files

LLVM/project edfb6e8clang/docs ReleaseNotes.md, clang/lib/CodeGen/Targets X86.cpp

[Clang][CodeGen][X86] Fix crash on __int128 bit-field access units (#216777)

Fixes #202205

The x86-64 SysV classifier skipped every unnamed bit-field as padding,
so an eightbyte holding nothing but a non-zero-width unnamed bit-field
stayed `NO_CLASS`. GCC treats that storage as INTEGER. The crash falls
out of this: a run of `__int128` bit-fields is lowered to a single
`i128` access unit spanning both eightbytes, but with only one of them
classified INTEGER the `i128` gets queried at offset 8 and hits
`assert(IROffset == 0)` in `GetINTEGERTypeAtOffset` — or `assert(Hi ==
Integer)` in the callers, depending on which eightbyte holds the named
field. It also silently diverges from GCC on ordinary shapes like
`struct { long : 64; long a; }`, which clang passed in one register
where GCC uses two.

The fix skips only zero-length bit-fields and classifies the rest like
named ones, matching GCC. Both eightbytes of an `__int128` bit-field run
then come out `INTEGER`, so the existing asserts hold unchanged. The

    [9 lines not shown]
DeltaFile
+52-0clang/test/CodeGen/X86/x86_64-arguments.c
+19-0clang/test/CodeGen/X86/x86_64-union-abi.c
+4-3clang/lib/CodeGen/Targets/X86.cpp
+7-0clang/docs/ReleaseNotes.md
+3-1llvm/lib/ABI/Targets/X86.cpp
+85-45 files

LLVM/project cd94327flang/lib/Lower/OpenMP ClauseProcessor.cpp OpenMP.cpp, flang/lib/Semantics resolve-directives.cpp

[flang][OpenMP] Fix use_device_addr handling for COMMON blocks in target data (#217105)

Related to #217112

Flang already handles `use_device_addr` for regular variables on `target
data`,
but named COMMON blocks had two gaps: combining a COMMON block in `map`
and
`use_device_addr` was incorrectly rejected, and whole-COMMON
`use_device_addr`
could leave references in the region bound to the host COMMON instead of
the
returned device address.

This fixes the COMMON-block semantic handling and lowering so the valid
`map`/`use_device_addr` combination is accepted and COMMON members use
the
correct target-data bindings.


    [3 lines not shown]
DeltaFile
+232-0flang/test/Lower/OpenMP/target-data-use-device-addr-common-block.f90
+148-0flang/test/Semantics/OpenMP/use-device-addr-common-block.f90
+93-0offload/test/offloading/fortran/target-data-use-device-addr-common-block.f90
+27-4flang/lib/Lower/OpenMP/OpenMP.cpp
+24-1flang/lib/Lower/OpenMP/ClauseProcessor.cpp
+22-1flang/lib/Semantics/resolve-directives.cpp
+546-66 files

LLVM/project 2a24ebbllvm/lib/Target/DirectX DXILOpLowering.cpp DXILCBufferAccess.cpp, llvm/test/CodeGen/DirectX llc-pipeline.ll

[NFC][DirectX] Fix memory leaks exposed by ASAN (#220152)

This PR should fix ASAN errors from
https://lab.llvm.org/buildbot/#/builders/52/builds/19811

There are three sources of leaks:

1. TargetPassConfig not being `PM.add()`ed
```
   Direct leak of 136 byte(s) in 1 object(s) allocated from:
     #1 ...createPassConfig(...)      DirectXTargetMachine.cpp:216:10   <- return new DirectXPassConfig(*this, PM);
     #2 ...addPassesToEmitFile(...)   DirectXTargetMachine.cpp:177:34   <- TargetPassConfig *PassConfig = createPassConfig(PM);
   Indirect leak of 144 byte(s) in 1 object(s) allocated from:
     #1 llvm::TargetPassConfig::TargetPassConfig(...)  TargetPassConfig.cpp:604:10  <- Impl = new PassConfigImpl();
     #2 DirectXPassConfig                              DirectXTargetMachine.cpp:112:9
 ```
 
2. MachineModuleInfoWrapperPass not being `PM.add()`ed
```

    [18 lines not shown]
DeltaFile
+6-3llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
+2-1llvm/test/CodeGen/DirectX/llc-pipeline.ll
+1-1llvm/lib/Target/DirectX/DXILOpLowering.cpp
+1-1llvm/lib/Target/DirectX/DXILCBufferAccess.cpp
+10-64 files

LLVM/project 0fa6182openmp/runtime/src kmp_barrier.h kmp_barrier.cpp

[OpenMP][libomp] Fix dist barrier arrival synchronization (#213845)

Make distributedBarrier::stillNeed atomic and use release/acquire
ordering for distributed barrier gather arrival flags.

The old volatile stillNeed flag did not synchronize an arriving thread's
pre-barrier writes with the thread that observed its arrival. On weakly
ordered architectures, a group leader could observe stillNeed == 0
before the arriving thread's pre-barrier writes were visible. This
allowed another thread to pass the barrier and read stale data written
before the barrier.

Use release stores when publishing stillNeed == 0. Keep the spin loops
on relaxed loads, then perform one acquire fence after all expected zero
values have been observed. This connects the arriving threads'
pre-barrier writes to the observer through the standard release/acquire
happens-before chain, without using acquire loads on every poll.

The same pattern is used when a group leader publishes its own stillNeed

    [106 lines not shown]
DeltaFile
+24-11openmp/runtime/src/kmp_barrier.cpp
+1-1openmp/runtime/src/kmp_barrier.h
+25-122 files

LLVM/project 2a1fb82llvm/include/llvm/CodeGen TriggerCrashMachineFunction.h, llvm/include/llvm/Passes TriggerCrashPasses.h

Fix layering violation from #220073 (#220150)

That PR introduced circular dependencies LLVMTransformUtils <->
LLVMPasses. Move Trigger*CrashPasses into LLVMPasses.

Move TriggerCrashFunctionLegacyPass alongside the one usage
`-codegen-pipeline-trigger-crash` just to prevent a tiny .cpp file.
DeltaFile
+63-0llvm/include/llvm/Passes/TriggerCrashPasses.h
+0-59llvm/include/llvm/Transforms/Utils/TriggerCrashPass.h
+0-57llvm/lib/Transforms/Utils/TriggerCrashPass.cpp
+45-0llvm/lib/Passes/TriggerCrashPasses.cpp
+0-25llvm/include/llvm/CodeGen/TriggerCrashMachineFunction.h
+0-18llvm/lib/CodeGen/TriggerCrashMachineFunction.cpp
+108-15910 files not shown
+129-16916 files

LLVM/project d770d1eclang/lib/AST/ByteCode Function.cpp Function.h

[clang][bytecode][NFC] Reorder Function members (#220001)

Order them by size to save a few bytes and clarify some comments.
DeltaFile
+9-7clang/lib/AST/ByteCode/Function.h
+2-2clang/lib/AST/ByteCode/Function.cpp
+11-92 files

LLVM/project e5bbcd0clang/lib/AST/ByteCode Context.cpp

[clang][bytecode][NFC] reserve() ParamDescriptors (#219981)

We know the size the vector is going to have in the success case, so
reserve that.
DeltaFile
+3-1clang/lib/AST/ByteCode/Context.cpp
+3-11 files

LLVM/project 3613554llvm/lib/Target/SPIRV SPIRVModuleAnalysis.cpp SPIRVUtils.h, llvm/test/CodeGen/SPIRV concat-vectors.ll

[SPIR-V] Always reject OpTypeVector with a non-standard width (#212685)

SPV_EXT_long_vector does not widen OpTypeVector past 4 components. Those
widths need OpTypeVectorIdEXT, so requesting the extension here was
wrong
DeltaFile
+11-11llvm/test/CodeGen/SPIRV/concat-vectors.ll
+10-7llvm/lib/Target/SPIRV/SPIRVUtils.h
+6-0llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
+27-183 files

LLVM/project 937e353llvm/docs ProgrammersManual.md, llvm/include/llvm/ADT FoldingSet.h

[ADT][TableGen] Add UniquingSet, a FoldingSet with typed keys (#219630)

FoldingSet serializes a key into a FoldingSetNodeID to look a node up
and rebuilds the stored node's profile to compare against it. Where a
key can be read out of a node, neither is necessary.

UniquingSet reuses FoldingSetBase's storage, growth, removal and insert
token and replaces only the key: the node's `getKey()` supplies it, the
key type's `operator==` compares it, and DenseMapInfo hashes it inline.
An Info parameter overrides the key type or its hash. The hash cached on
each node keeps growth and erasure from calling `getKey()`, which a
DenseSet cannot avoid.

Prefer `UniquingSet` where a key can be read out of a node in O(1) and
the lookup key is built beside `getKey()`; keep FoldingSet for keys that
are wide, polymorphic or assembled at many call sites, where one Profile
helper keeps both sides consistent. insert asserts that a node hashes as
its lookup did.


    [18 lines not shown]
DeltaFile
+173-0llvm/unittests/ADT/FoldingSet.cpp
+87-0llvm/include/llvm/ADT/FoldingSet.h
+10-73llvm/lib/TableGen/Record.cpp
+32-0llvm/docs/ProgrammersManual.md
+19-8llvm/include/llvm/TableGen/Record.h
+321-815 files

LLVM/project 4c176c4clang/docs StandardCPlusPlusModules.md

[docs] [C++20] [Modules] Mentioning tricks to use std module without touching the code (#220147)

This commit introduces two tricks to use std module without changing
user's code.
DeltaFile
+281-3clang/docs/StandardCPlusPlusModules.md
+281-31 files

LLVM/project 2bc9411llvm/lib/Analysis Loads.cpp, llvm/lib/Transforms/Vectorize VPlanConstruction.cpp LoopVectorizationLegality.cpp

Revert "[CSSPGO] Don't let pseudo probes block early-exit vectorization" (#220146)

Reverts llvm/llvm-project#219872

This was accidentally merged without approval
DeltaFile
+0-114llvm/test/Transforms/LoopVectorize/early_exit_pseudo_probe_legality.ll
+0-83llvm/test/Transforms/LoopVectorize/early_exit_pseudo_probe.ll
+2-38llvm/unittests/Analysis/LoadsTest.cpp
+0-10llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+0-8llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
+0-4llvm/lib/Analysis/Loads.cpp
+2-2576 files

LLVM/project 3d7b99bclang/docs conf.py

[clang][docs] Suppress Sphinx highlighting failure warnings in conf.py (#220118)

Following the upgrade to Sphinx 8.2 (#219299), Pygments syntax
highlighting fallbacks (e.g. on custom C++ attribute syntaxes like
`[[clang::...]]`) emit `[misc.highlighting_failure]` warnings when
retrying in relaxed mode. Because sphinx-build runs with `-W`, these
warnings abort the documentation build.

Mirror the configuration in `llvm/docs/conf.py` by setting
`suppress_warnings = ["misc.highlighting_failure"]`.

AI tool usage: An AI assistant was used to help research and draft the
documentation updates.
DeltaFile
+5-0clang/docs/conf.py
+5-01 files

LLVM/project c3c6e28mlir/include/mlir/Dialect/Arith/Transforms Passes.td Passes.h, mlir/lib/Dialect/Arith/Transforms ExpandOps.cpp

[mlir][arith] Expand ops for F8E4M3FN and F8E5M2 type. (#216653)

Patch to add support for arith op (`arith.truncf`) to truncate `f32/f16`
type to `f8E4M3FN/f8E5M2`.
DeltaFile
+306-26mlir/lib/Dialect/Arith/Transforms/ExpandOps.cpp
+223-1mlir/test/Dialect/Arith/expand-ops.mlir
+184-2mlir/test/Integration/Dialect/Arith/CPU/test-arith-expand-truncf-extf.mlir
+7-0mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
+4-0mlir/include/mlir/Dialect/Arith/Transforms/Passes.td
+724-295 files

LLVM/project a36244alld/MachO ICF.cpp, lld/test/MachO icf-referent-offset.s

[lld][MachO] Compare referent offsets in ICF (#219960)

ICF::equalsConstant() compared only the addends of relocations that
reference symbols in ConcatInputSections, not the symbols' offsets
within their sections. The ICF hash merely sums the referent symbols'
offsets, so two code sections whose relocations reference the same input
section at swapped offsets have equal hashes, pass both the constant and
the variable comparison, and are folded together even though they
reference different data.

Compare the symbol value plus the addend instead, as the ELF backend
does.

This issue was found by LLM while investigating why identical LSDAs were
not being folded. It has not been observed in a real-world link, and the
regression test is synthetic.
DeltaFile
+60-0lld/test/MachO/icf-referent-offset.s
+1-1lld/MachO/ICF.cpp
+61-12 files

LLVM/project 0622134llvm/lib/Analysis Loads.cpp, llvm/lib/Transforms/Vectorize VPlanConstruction.cpp LoopVectorizationLegality.cpp

Revert "[CSSPGO] Don't let pseudo probes block early-exit vectorization (#219…"

This reverts commit 2bf4ef05f69afae8a6377ac870b4e257fe0a2b0b.
DeltaFile
+0-114llvm/test/Transforms/LoopVectorize/early_exit_pseudo_probe_legality.ll
+0-83llvm/test/Transforms/LoopVectorize/early_exit_pseudo_probe.ll
+2-38llvm/unittests/Analysis/LoadsTest.cpp
+0-10llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+0-8llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
+0-4llvm/lib/Analysis/Loads.cpp
+2-2576 files

LLVM/project 3a94285flang/lib/Lower Allocatable.cpp, flang/test/Lower/CUDA cuda-allocatable-component.cuf

[flang][cuda] Propagate CUDA attrs from parent variable to component deallocs (#220059)

This is a follow up to
[#206614](https://github.com/llvm/llvm-project/pull/206614), which made
`allocate(foo(i)%arr(...))` inherit `foo`'s CUDA memory attribute, but
did not add the equivalent inheritance for `deallocate(foo(i)%arr)`. The
deallocation still lowered to an inlined `fir.freemem`, so memory
obtained from a CUDA allocator was released with libc `free()`.

The allocate side already walked the `DataRef` chain for a
CUDA-attributed parent, but the helpers were private to
`AllocateStmtHelper` and unreachable from the deallocate path. This
patch hoists `findCUDAAttrInDataRef` to file scope, adds
`getCUDAAttrParentSymbol(AllocateObject)` beside it, and reduces the
existing member to a thin wrapper. The allocate behavior is unchanged.

`genDeallocate` gains an optional `cudaSymbol` used only for the CUDA
decisions (`isCudaSymbol` and the `genCudaDeallocate` call).
`genDeallocateStmt` supplies the parent symbol, which is non-null only

    [9 lines not shown]
DeltaFile
+69-42flang/lib/Lower/Allocatable.cpp
+53-2flang/test/Lower/CUDA/cuda-allocatable-component.cuf
+122-442 files

LLVM/project bf498b1llvm/lib/Target/WebAssembly WebAssemblyInstrSIMD.td, llvm/test/CodeGen/WebAssembly reg-stackify.ll

[WebAssembly] Mark SIMD min and max as commutable (#219812)

Vector add/mul and scalar floating-point min/max are already marked as
commutable. This extends the same property to floating-point vector
min/max, allowing better WebAssembly register stackification.

Should avoid any locals as per what's happening now
```
.local v128

call      red
local.set 0

call      green
local.get 0

f32x4.min
```
DeltaFile
+46-2llvm/test/CodeGen/WebAssembly/reg-stackify.ll
+2-0llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td
+48-22 files

LLVM/project 33a4a48llvm/include/llvm/CodeGen SelectionDAGNodes.h, llvm/lib/CodeGen/SelectionDAG SelectionDAG.cpp

[SelectionDAG] Fix CSE keys that disagree with SDNode::Profile (#219911)

A getNode helper builds its lookup ID by hand; matching it later
rebuilds one from the node with AddNodeIDCustom.  Where the two disagree
the compare always fails and the node never CSEs.  Fix whichever side is
wrong: the labels, DEACTIVATION_SYMBOL, GET/SET_FPENV_MEM and
EXPERIMENTAL_VECTOR_HISTOGRAM have no case; getLifetimeNode keys on a
frame index operand 1 already carries, getStridedLoadVP on the result
type instead of the memory type, and getPseudoProbeNode drops the
attributes its case profiles.

Ask AtomicSDNode instead of an opcode list stale since ATOMIC_LOAD_FADD,
and add the two opcodes its own classof was missing.

AddNodeIDCustom now takes the opcode to profile under, so MorphNodeTo's
pre-morph lookup keys on what the morph produces.  Machine opcodes
profile nothing: the morph overlays MachineSDNode's memory references on
the fields the MemSDNode checks read.


    [2 lines not shown]
DeltaFile
+41-38llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+9-20llvm/unittests/CodeGen/SelectionDAGCSETest.cpp
+9-0llvm/include/llvm/CodeGen/SelectionDAGNodes.h
+1-2llvm/test/CodeGen/PowerPC/merge_stores_dereferenceable.ll
+60-604 files

LLVM/project 8ad72c6clang/lib/Sema HLSLExternalSemaSource.cpp

[NFC][HLSL] Refactor texture type declaration (#219561)

Fixes https://github.com/llvm/llvm-project/issues/219542

Refactors texture type declaration in `HLSLExternalSemaSource.cpp` so
that new
texture types can more easily be added without adding a bunch of new
helper
functions.

This is accomplished with the introduction of a new `TextureTypeInfo`
struct
to record the properties of each texture type, as well as its
capabilities
indicated by the `TexCap` bitmask enum.

Adding a new texture type to be declared should, in most cases, only
require
appending a new entry to the static `TextureTypes` array of

    [12 lines not shown]
DeltaFile
+143-207clang/lib/Sema/HLSLExternalSemaSource.cpp
+143-2071 files

LLVM/project 2bf4ef0llvm/lib/Analysis Loads.cpp, llvm/lib/Transforms/Vectorize VPlanConstruction.cpp LoopVectorizationLegality.cpp

[CSSPGO] Don't let pseudo probes block early-exit vectorization (#219872)

llvm.pseudoprobe is modeled as accessing inaccessible memory, so
mayReadFromMemory()/mayWriteToMemory() return true even though the
intrinsic
carries no real memory dependence. An otherwise vectorizable early-exit
loop
is therefore rejected as soon as it contains a pseudo probe.

This patch skips pseudo probes in isVectorizableEarlyExitLoop(),
isReadOnlyLoop() and
areAllLoadsDereferenceable() so the three checks agree and such loops
vectorize as they would without pseudo probe instrumentation.

Discussion:
https://discourse.llvm.org/t/csspgo-unblocking-pseudo-probe-safe-optimizations/90946
DeltaFile
+114-0llvm/test/Transforms/LoopVectorize/early_exit_pseudo_probe_legality.ll
+83-0llvm/test/Transforms/LoopVectorize/early_exit_pseudo_probe.ll
+38-2llvm/unittests/Analysis/LoadsTest.cpp
+10-0llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+8-0llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
+4-0llvm/lib/Analysis/Loads.cpp
+257-26 files

LLVM/project f34700cllvm/include/llvm/ExecutionEngine/Orc LookupAndApply.h RecordProxy.h, llvm/unittests/ExecutionEngine/Orc LookupAndApplyTest.cpp ProxyTest.cpp

[ORC] Add SymbolStringPtr overloads for recordAddr/recordProxy (#220125)

Allow clients to pass symbol names as SymbolStringPtrs (in addition to
StringRefs).
DeltaFile
+61-0llvm/unittests/ExecutionEngine/Orc/ProxyTest.cpp
+30-0llvm/include/llvm/ExecutionEngine/Orc/RecordProxy.h
+29-0llvm/unittests/ExecutionEngine/Orc/LookupAndApplyTest.cpp
+13-0llvm/include/llvm/ExecutionEngine/Orc/LookupAndApply.h
+133-04 files

LLVM/project 5b60fdellvm/test/CodeGen/AMDGPU amdgcn.bitcast.320bit.ll fptosi-sat-vector.ll

[AMDGPU] Allow combining uniform OR/AND to V_PERM (#220048)

Allow the OR/AND -> V_PERM DAG combine for values, even if they are
uniform.

Co-authored by Brendon Cahoon and Cursor
DeltaFile
+2,115-2,484llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+611-829llvm/test/CodeGen/AMDGPU/calling-conventions.ll
+567-723llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+276-366llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.256bit.ll
+191-235llvm/test/CodeGen/AMDGPU/fptosi-sat-vector.ll
+190-214llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll
+3,950-4,85123 files not shown
+4,959-5,97829 files

LLVM/project 01cc74dclang/lib/Driver/ToolChains CommonArgs.cpp, clang/test/Driver fsanitize-undefined-offload.c

[Clang] Honor -Xarch_gfx* when linking the UBSan offload runtime

Empty bound architecture misses per-GPU sanitizer flags, so inspect each
offload arch when deciding whether the host interceptor is required.
DeltaFile
+16-0clang/test/Driver/fsanitize-undefined-offload.c
+7-4clang/lib/Driver/ToolChains/CommonArgs.cpp
+23-42 files

LLVM/project e78d18fclang/lib/Driver/ToolChains CommonArgs.cpp, clang/test/Driver fsanitize-undefined-offload.c

Device only and -shared fix
DeltaFile
+26-0clang/test/Driver/fsanitize-undefined-offload.c
+15-9clang/lib/Driver/ToolChains/CommonArgs.cpp
+41-92 files

LLVM/project ac36319clang/lib/Driver/ToolChains UEFI.cpp Solaris.cpp, clang/test/Driver fsanitize-undefined-device-offload.c

[Clang] Enable UBSan for AMDGPU device offload

Summary:
This enables the device UBSan runtime for AMDGPU decides. Primarily this
required modifications to the `addSanitizerRuntime` interface so we can
query the compilation's offload status. Also need to forward it through
the linker wrapper interface. Works on all AMDGPU offload, slight hacks
around the other targets as they do not advertise sanitizer
runtimes properly.

This is linked in via a new `-u __ubsan_device_initialize` hook to pull
in the side library. This is standard behavior and keeps the core logic
mostly unchanged and re-used.
DeltaFile
+50-0clang/test/Driver/fsanitize-undefined-device-offload.c
+32-3clang/lib/Driver/ToolChains/CommonArgs.cpp
+2-2clang/lib/Driver/ToolChains/Hexagon.cpp
+2-1clang/lib/Driver/ToolChains/Clang.cpp
+1-1clang/lib/Driver/ToolChains/UEFI.cpp
+1-1clang/lib/Driver/ToolChains/Solaris.cpp
+88-813 files not shown
+98-1819 files

LLVM/project 18f4212clang/lib/Driver/ToolChains CommonArgs.cpp, clang/test/Driver fsanitize-undefined-device-offload.c fsanitize-undefined-offload.c

[Clang] Link libclang_rt.ubsan_offload.a for device offload

Match the compiler-rt rename of the host interceptor and the
-u __ubsan_offload_init hook.
DeltaFile
+0-50clang/test/Driver/fsanitize-undefined-device-offload.c
+50-0clang/test/Driver/fsanitize-undefined-offload.c
+5-5clang/lib/Driver/ToolChains/CommonArgs.cpp
+0-0clang/test/Driver/Inputs/resource_dir_with_amdgpu_per_target_subdir/lib/x86_64-unknown-linux-gnu/libclang_rt.ubsan_device.a
+0-0clang/test/Driver/Inputs/resource_dir_with_amdgpu_per_target_subdir/lib/x86_64-unknown-linux-gnu/libclang_rt.ubsan_offload.a
+55-555 files

LLVM/project 7159010llvm/lib/Target/LoongArch LoongArchLASXInstrInfo.td, llvm/test/CodeGen/LoongArch/lasx vec-zext-invec.ll vec-sext-invec-mask.ll

[LoongArch] Add omitted LASX patterns for vector extend (#219351)

Adds omitted 128-bit to 256-bit patterns for `sign_extend_vector_inreg`,
including `v16i8 -> v4i64` and `v8i16 -> v4i64`, which will generate by
the combination of `icmp + or/and/xor + zext/sext`, all related tests
are added.

Fix: https://github.com/llvm/llvm-project/issues/219224
DeltaFile
+251-0llvm/test/CodeGen/LoongArch/lasx/vec-sext-invec-mask.ll
+57-0llvm/test/CodeGen/LoongArch/lasx/vec-zext-invec.ll
+20-8llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td
+328-83 files