LLVM/project 97aa2ae — orc-rt/include/orc-rt/bedrock Session.h, orc-rt/lib/bedrock Session.cpp

[orc-rt] Make Session's constructor noexcept. (#229962)

Session's constructor shouldn't be throwing exceptions.
DeltaFile
+1-1orc-rt/lib/bedrock/Session.cpp
+1-1orc-rt/include/orc-rt/bedrock/Session.h
+2-22 files

LLVM/project cfd532c — llvm/lib/Transforms/InstCombine InstCombineMulDivRem.cpp, llvm/test/Transforms/InstCombine fdiv.ll

[InstCombine] Fold fdiv by splat of pow/exp/powi into fmul (#227238)

Extend foldFDivPowDivisor to look through a one-use splat divisor. The
exponent is negated on the scalar and the result is splatted again:

$$\frac{Z}{\mathrm{splat}(x^{y})} \to Z \cdot \mathrm{splat}(x^{-y})$$

$$\frac{Z}{\mathrm{splat}(e^{y})} \to Z \cdot \mathrm{splat}(e^{-y})$$

$$\frac{Z}{\mathrm{splat}(2^{y})} \to Z \cdot \mathrm{splat}(2^{-y})$$

$$\frac{Z}{\mathrm{splat}(x^{n})} \to Z \cdot \mathrm{splat}(x^{-n}),
\quad n \in \mathbb{Z}\ (\mathrm{powi})$$

Same FMF requirements as the scalar fold: reassoc and arcp, plus ninf
for powi. This removes the reciprocal, e.g. v_rcp on AMDGPU.

AMDGPU example: https://godbolt.org/z/nvWc38GTx
DeltaFile
+28-10llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
+15-10llvm/test/Transforms/InstCombine/fdiv.ll
+43-202 files

LLVM/project ad97dfd — orc-rt/include/orc-rt/support SymbolLookupSet.h, orc-rt/include/orc-rt/support/sps SPSSymbolLookupSet.h

[orc-rt] Add SymbolLookupFlags and SymbolLookupSet utilities (#229958)

Move NativeDylibManager's nested LookupFlags enum and SymbolLookupSet
typedef out into reusable support utilities:

- SymbolLookupFlags.h: enum class SymbolLookupFlags, with the existing
RequiredSymbol and WeaklyReferencedSymbol values.
- SymbolLookupSet.h: SymbolLookupSet and SymbolLookupResult, thin
wrappers around std::vector<std::pair<std::string, SymbolLookupFlags>>
and std::vector<std::optional<void*>> respectively.
- sps/SPSSymbolLookupSet.h: SPS serialization for all three. The flags
serialization (previously private to NativeDylibManagerSPSCI.cpp, and
duplicated in its unit test) is unchanged: RequiredSymbol serializes as
true, matching llvm::orc::RemoteSymbolLookupSetElement's 'Required'
field.

NativeDylibManager::lookup now takes a SymbolLookupSet and reports a
SymbolLookupResult, and sys::lookupLibrarySymbols takes the
SymbolLookupSet directly, saving lookup a copy of the names.

Assisted-by: Claude
DeltaFile
+94-0orc-rt/include/orc-rt/support/SymbolLookupSet.h
+92-0orc-rt/include/orc-rt/support/sps/SPSSymbolLookupSet.h
+84-0orc-rt/test/unit/support/SymbolLookupSetTest.cpp
+74-0orc-rt/test/unit/support/sps/SPSSymbolLookupSetTest.cpp
+10-46orc-rt/test/unit/bedrock/sps/NativeDylibManagerSPSCITest.cpp
+1-31orc-rt/lib/bedrock/sps/NativeDylibManagerSPSCI.cpp
+355-779 files not shown
+420-12215 files

LLVM/project b29df80 — clang/test/CIR/IR coro-alloc.cir coro-id.cir

[CIR][NFC] Add round trip tests for coroutine intrinsics (#229947)

Add round-trip tests for coroutine intrinsics

The tests cover the following intrinsics:

* `coro.alloc`
* `coro.begin`
* `coro.destroy`
* `coro.done`
* `coro.end`
* `coro.free`
* `coro.id`
* `coro.promise`
* `coro.resume`
DeltaFile
+16-0clang/test/CIR/IR/coro-end.cir
+16-0clang/test/CIR/IR/coro-promise.cir
+15-0clang/test/CIR/IR/coro-id.cir
+15-0clang/test/CIR/IR/coro-begin.cir
+15-0clang/test/CIR/IR/coro-free.cir
+14-0clang/test/CIR/IR/coro-alloc.cir
+91-03 files not shown
+133-09 files

LLVM/project 25da5b6 — clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/CodeGen CIRGenFunction.h CIRGenBuiltin.cpp

[CIR] Add cir.coro.suspend intrinsic (#228310)

Implement `cir.coro.suspend` and lower __builtin_coro_suspend to the CIR
coroutine suspend intrinsic.
DeltaFile
+30-2clang/test/CIR/CodeGenCoroutines/coro-builtins.cpp
+26-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+15-0clang/test/CIR/IR/coro-suspend.cir
+10-0clang/lib/CIR/CodeGen/CIRGenCoroutine.cpp
+5-3clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
+1-0clang/lib/CIR/CodeGen/CIRGenFunction.h
+87-56 files

LLVM/project b2bf9e6 — llvm/include/llvm/CodeGen SlotIndexes.h, llvm/lib/CodeGen RegAllocGreedy.cpp LiveIntervals.cpp

[CodeGen] Drop dead SlotIndexes before allocation

SlotIndexes keeps the index list entry of an erased instruction and only
clears its instruction pointer. Live range sizes are measured in slot
indexes and greedy ranks ranges by size, so the leftovers inflate some
ranges more than others and reorder allocation, spilling heavily on
register-starved functions.

Add SlotIndexes::compactIndexes() to erase them. Erased entries are
unlinked, so LiveIntervals first reports the indexes it holds via
appendReferencedIndexes().

Off by default behind -greedy-compact-slot-indexes, since it changes
allocation across much of the test suite.
DeltaFile
+221-0llvm/unittests/CodeGen/SlotIndexesTest.cpp
+46-0llvm/lib/CodeGen/SlotIndexes.cpp
+32-0llvm/test/CodeGen/AMDGPU/greedy-compact-slot-indexes.ll
+23-6llvm/include/llvm/CodeGen/SlotIndexes.h
+29-0llvm/lib/CodeGen/LiveIntervals.cpp
+12-1llvm/lib/CodeGen/RegAllocGreedy.cpp
+363-71 files not shown
+367-77 files

LLVM/project 1a5b507 — lldb/source/API SystemInitializerFull.cpp, lldb/source/Plugins/ScriptInterpreter/Python ScriptInterpreterPython.cpp

[lldb] Don't fail initialization when Python can't be loaded (#229891)

SystemInitializerFull::Initialize returns early when the Python runtime
loader fails, preventing remaining plugins (like the platform) to be
initialized.

Both with the statically and dynamically linked plugins, not finding
Python at that point is non-fatal. The error can be more appropriately
handled later, when initializing the plugin as all the subsystems (i.e.
logging) have been initialized.

rdar://188858954
DeltaFile
+10-12lldb/source/API/SystemInitializerFull.cpp
+12-0lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+22-122 files

LLVM/project a95c073 — lldb/include/lldb/Utility ArchSpec.h, lldb/source/Plugins/Process/Utility StopInfoMachException.h StopInfoMachException.cpp

[lldb] Add support for arm64e.x1 (#229946)
DeltaFile
+51-0lldb/unittests/Utility/ArchSpecTest.cpp
+24-0lldb/source/Utility/ArchSpec.cpp
+23-0lldb/source/Plugins/Process/Utility/StopInfoMachException.cpp
+2-0lldb/source/Plugins/Process/Utility/StopInfoMachException.h
+2-0lldb/include/lldb/Utility/ArchSpec.h
+102-05 files

LLVM/project cd4e847 — clang/test/AST attr-counted-by-or-null-struct-ptrs.c attr-sized-by-struct-ptrs.c, clang/test/Sema attr-sized-by-struct-ptrs.c attr-sized-by-or-null-struct-ptrs.c

Update tests
DeltaFile
+0-26clang/test/AST/attr-counted-by-struct-ptrs.c
+0-24clang/test/AST/attr-sized-by-struct-ptrs.c
+0-24clang/test/AST/attr-sized-by-or-null-struct-ptrs.c
+0-23clang/test/AST/attr-counted-by-or-null-struct-ptrs.c
+11-5clang/test/Sema/attr-sized-by-struct-ptrs.c
+11-5clang/test/Sema/attr-sized-by-or-null-struct-ptrs.c
+22-1074 files not shown
+56-12710 files

LLVM/project 7ff07ab — clang/lib/Sema SemaDecl.cpp SemaDeclAttr.cpp

[BoundsSafety] Handle the counted_by family as a type attribute

counted_by / sized_by (and their _or_null variants) were handled as a
declaration-position attribute through handleCountedByAttrField.

Build the type during type construction instead and properly handle as a
type-position attribute. Building the node in type position also allows
the new way of late-parsing for type attributes: creates a type node
in place and fills it in once late parsing is done, which will be
enabled in the follow-up commits.

Assisted-by: Opus 4.8
DeltaFile
+3-106clang/lib/Sema/SemaBoundsSafety.cpp
+63-3clang/lib/Sema/SemaType.cpp
+21-27clang/lib/Sema/SemaDeclAttr.cpp
+19-0clang/lib/Sema/SemaDecl.cpp
+106-1364 files

LLVM/project 15c983a — clang/test/CIR/IR invalid-register-exit-dtor.cir

[CIR] Address reviewer feedback

Assisted-by: Cursor / claude-opus-5-5
DeltaFile
+21-0clang/test/CIR/IR/invalid-register-exit-dtor.cir
+21-01 files

LLVM/project 6cc5b59 — clang/lib/CIR/Dialect/IR CIRDialect.cpp, clang/test/CIR/CodeGen try-catch.cpp

[CIR] Classify reference-to-pointer catch parameters in CIRGen (#229579)

When a handler catches a reference to a pointer, __cxa_begin_catch
returns the caught pointer by value instead of the address of the
exception object, and how the reference is bound depends on whether the
pointer points to a class. The CIR type of the catch parameter cannot
always tell whether it is a reference to a pointer, or whether the
pointee is a class. CIRGen now records both facts from the AST in two
new InitCatchKind values, reference_to_pointer and
reference_to_record_pointer. The Itanium EH lowering switches on the
kind alone, the way classic codegen does.

Assisted-by: Claude Code / Claude Opus 5.5
DeltaFile
+258-0clang/test/CIR/IR/invalid-init-catch-param.cir
+216-0clang/test/CIR/Transforms/eh-abi-lowering-catch-param-ref.cir
+198-8clang/test/CIR/CodeGen/try-catch.cpp
+173-0clang/test/CIR/IR/construct-catch-param.cir
+86-2clang/test/CIR/Transforms/eh-abi-lowering-construct-catch-invalid.cir
+82-4clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+1,013-144 files not shown
+1,148-4610 files

LLVM/project 3991c3d — clang/bindings/python/clang cindex.py, clang/bindings/python/tests/cindex test_code_completion.py

[libclang/python] Fold CCRStructure into CodeCompletionResults (#224678)

This completes the fifth and last step of
https://github.com/llvm/llvm-project/issues/156680
This change is a follow-up to
https://github.com/llvm/llvm-project/pull/177764, following the release
branching, to ensure a one release-cycle deprecation period.
DeltaFile
+16-44clang/bindings/python/clang/cindex.py
+5-0clang/docs/ReleaseNotes.md
+0-2clang/bindings/python/tests/cindex/test_code_completion.py
+21-463 files

LLVM/project 683cd5f — libcxx/test/support test_allocator.h

[libcxx][test-support] Improve thread_unsafe_shared_ptr (#195932)

Adapting test support class `thread_unsafe_shared_ptr` for future use
with `fancy_pointer_allocator`, in particular, in constant evaluation.

* Implementing the rule of 5;
* Annotating `noexcept` methods
DeltaFile
+33-12libcxx/test/support/test_allocator.h
+33-121 files

LLVM/project ac2f555 — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 aarch64-mixed-ptr-sizes.ll

[AArch64] Preserve store width for ptr32 address spaces (#229181)

When handling stores for `ptr32` address spaces, we didn't check if they
were already truncating stores and emitted an ordinary store. This
widened `i8` and `i16` writes to 32 bits and could overwrite adjacent
fields.

Fix is to build a truncating store that preserves the memory type.

Fixes #228782

Assisted-by: GPT-6 Sol (via VS Code)
DeltaFile
+48-3llvm/test/CodeGen/AArch64/aarch64-mixed-ptr-sizes.ll
+4-3llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+52-62 files

LLVM/project d84c1fe — lldb/include/lldb/Core Module.h, lldb/source/Core Module.cpp ModuleList.cpp

[lldb] Cache the symbol table for memory-read modules by default (#229305)

When lldb debugs a process on a remote system/device, there may be
binaries loaded in the process that it cannot find on the debug host. It
will read the object file header / load commands (mach-o terminology)
and symbol table out of memory at ObjectFile/Module creation time. The
symbol table may involve many separate reads to complete, and can be a
serious performance issue. We've traditionally worked hard to always
have binaries for the remote target present on the host computer,
because it was such a poor user experience, but in practice it's never
perfect.

This PR adds a new setting,
`symbols.enable-lldb-index-cache-memory-modules`, which is defaulted to
on. With this change, when lldb reads a remote binary out of memory, it
will create a DataFileCache symtab serialization of its symbol table on
the host computer.

I'm open to discussions about changing the expiration-days default. I

    [35 lines not shown]
DeltaFile
+154-0lldb/test/API/macosx/memory-read-module-symtab/TestMemoryReadModuleSymtab.py
+56-0lldb/test/API/macosx/memory-read-module-symtab/main.c
+6-6lldb/source/Plugins/SymbolFile/DWARF/ManualDWARFIndex.cpp
+8-4lldb/include/lldb/Core/Module.h
+12-0lldb/source/Core/ModuleList.cpp
+8-2lldb/source/Core/Module.cpp
+244-124 files not shown
+256-1510 files

LLVM/project 11edbd4 — libcxx/test/std/ranges/range.adaptors/range.concat/iterator ctor.default.pass.cpp

[libc++][test] Remove spurious `REQUIRES: has-fblocks` (#227972)

As drive-by, also update the lengthy `UNSUPPORTED` lit comment to
`REQUIRES: std-at-least-c++26`.
DeltaFile
+1-2libcxx/test/std/ranges/range.adaptors/range.concat/iterator/ctor.default.pass.cpp
+1-21 files

LLVM/project 736d4fc — clang/lib/CodeGen CGHLSLBuiltins.cpp, clang/lib/Sema HLSLExternalSemaSource.cpp

[HLSL] Allow Interlocked original values with different types (#228262)

Fix HLSL `Interlocked*` overloads to treat `original_value` as an `out`
parameter. This permits writeback conversions, including signedness
changes.

Add semantic and code generation regression tests.

Fixes #224151.
Assisted by: Github Copilot

---------

Copilot-Session: f6814fd7-47e6-4edf-af68-4a69514a2212
DeltaFile
+28-8clang/test/SemaHLSL/BuiltIns/InterlockedAdd-errors.hlsl
+28-5clang/test/CodeGenHLSL/builtins/InterlockedCompareExchange.hlsl
+19-0clang/test/CodeGenHLSL/builtins/InterlockedAdd.hlsl
+15-3clang/lib/Sema/HLSLExternalSemaSource.cpp
+14-2clang/lib/CodeGen/CGHLSLBuiltins.cpp
+8-3clang/test/SemaHLSL/BuiltIns/InterlockedCompareExchange-errors.hlsl
+112-217 files not shown
+166-3513 files

LLVM/project fe469af — llvm/lib/Target/AMDGPU AMDGPUTargetTransformInfo.cpp, llvm/test/Analysis/CostModel/AMDGPU fptrunc.ll

[AMDGPU] Price vector f32 to f16 fptrunc by its packing form

The base cost scalarizes the conversion and charges 4, 10, 22 and 46
for 2, 4, 8 and 16 lanes. The backend rounds every lane with
v_cvt_f16_f32 and packs the halves in pairs, which takes N + N/2
instructions. A packed conversion rounds a pair per instruction and
true16 writes a lane into either half of a register, which gives
ceil(N/2) and N.

Co-authored-by: Michael Selehov <michael.selehov at amd.com>
Assisted-By: Claude Code Opus 5
DeltaFile
+42-49llvm/test/Transforms/SLPVectorizer/AMDGPU/fptrunc-f16-stores.ll
+25-25llvm/test/Analysis/CostModel/AMDGPU/fptrunc.ll
+13-0llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
+80-743 files

LLVM/project c751631 — llvm/test/Analysis/CostModel/AMDGPU fptrunc.ll, llvm/test/Transforms/SLPVectorizer/AMDGPU fptrunc-f16-stores.ll

[NFC][AMDGPU] Add tests for the cost of vector f32 to f16 fptrunc

Assisted-By: Claude Code Opus 5
DeltaFile
+115-0llvm/test/Transforms/SLPVectorizer/AMDGPU/fptrunc-f16-stores.ll
+114-0llvm/test/Analysis/CostModel/AMDGPU/fptrunc.ll
+229-02 files

LLVM/project 21cd6e7 — clang/test/AST attr-counted-by-or-null-struct-ptrs.c attr-sized-by-struct-ptrs.c, clang/test/Sema attr-counted-by-struct-ptrs.c attr-counted-by-or-null-struct-ptrs.c

Update tests
DeltaFile
+0-26clang/test/AST/attr-counted-by-struct-ptrs.c
+0-24clang/test/AST/attr-sized-by-struct-ptrs.c
+0-24clang/test/AST/attr-sized-by-or-null-struct-ptrs.c
+0-23clang/test/AST/attr-counted-by-or-null-struct-ptrs.c
+11-5clang/test/Sema/attr-counted-by-struct-ptrs.c
+11-5clang/test/Sema/attr-counted-by-or-null-struct-ptrs.c
+22-1074 files not shown
+56-12710 files

LLVM/project 0a0c105 — clang/lib/Sema SemaDecl.cpp SemaDeclAttr.cpp

[BoundsSafety] Handle the counted_by family as a type attribute

counted_by / sized_by (and their _or_null variants) were handled as a
declaration-position attribute through handleCountedByAttrField.

Build the type during type construction instead and properly handle as a
type-position attribute. Building the node in type position also allows
the new way of late-parsing for type attributes: creates a type node
in place and fills it in once late parsing is done, which will be
enabled in the follow-up commits.

Assisted-by: Opus 4.8
DeltaFile
+3-109clang/lib/Sema/SemaBoundsSafety.cpp
+73-3clang/lib/Sema/SemaType.cpp
+21-27clang/lib/Sema/SemaDeclAttr.cpp
+21-0clang/lib/Sema/SemaDecl.cpp
+118-1394 files

LLVM/project ba5908f — llvm/include/llvm/Analysis LoopAccessAnalysis.h, llvm/lib/Analysis VectorUtils.cpp LoopAccessAnalysis.cpp

[LAA] Avoid stray predicates from replaceSymStrides (#216350)

To avoid stray predicates being added from the use of
replaceSymbolicStridesSCEV, simply add an optional Predicates argument
to be filled in when the caller doesn't want fresh predicates to be
added to PSE directly. This allows us to drop some stray predicates when
vectorizing.
DeltaFile
+83-139llvm/test/Transforms/LoopVectorize/vplan-based-stride-mv.ll
+62-0llvm/test/Analysis/LoopAccessAnalysis/symbolic-stride.ll
+21-12llvm/lib/Analysis/LoopAccessAnalysis.cpp
+10-17llvm/test/Transforms/LoopVectorize/version-stride-with-integer-casts.ll
+7-4llvm/include/llvm/Analysis/LoopAccessAnalysis.h
+1-1llvm/lib/Analysis/VectorUtils.cpp
+184-1736 files

LLVM/project fc7c506 — llvm/test/TableGen atomic-store-trunc-patfrags.td, llvm/utils/TableGen GlobalISelEmitter.cpp

TableGen: Allow IsTruncStore predicates on atomic PatFrags (#229687)

Atomic stores can be truncating in the same way as regular stores. Allow 
IsTruncStore and IsNonTruncStore to be set on atomic store PatFrags so 
patterns can check the store is not truncating without needing to specify 
a fixed memory size.

I still find the hierarchy of load/store PatFrags frustrating. This would be 
easier if we fixed the legacy mistake of treating atomic store  as an
"atomic" rather than a store.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+40-0llvm/test/TableGen/atomic-store-trunc-patfrags.td
+29-8llvm/utils/TableGen/Common/CodeGenDAGPatterns.cpp
+1-1llvm/utils/TableGen/GlobalISelEmitter.cpp
+70-93 files

LLVM/project cade688 — llvm/test/CodeGen/AArch64 bf16-imm.ll f16-imm.ll

[AArch64][GlobalISel] More test coverage for vector immediates. NFC (#229928)
DeltaFile
+175-21llvm/test/CodeGen/AArch64/arm64-vector-imm.ll
+109-21llvm/test/CodeGen/AArch64/f16-imm.ll
+92-15llvm/test/CodeGen/AArch64/bf16-imm.ll
+376-573 files

LLVM/project 735cf62 — clang-tools-extra/clangd/refactor/tweaks ExtractFunction.cpp, clang-tools-extra/clangd/unittests/tweaks ExtractFunctionTests.cpp

[clangd] Extract to function: Do not reject unconditionally in C files

If the parameters can be passed by value, extraction in C files works
the same way as for C++. Otherwise, due to the lack of references, a
pointer parameter is used instead, with the call site taking its address
and every use inside the extracted body rewritten into a dereference.

Assisted-by: Claude Code

Closes https://github.com/clangd/clangd/issues/1810
DeltaFile
+250-39clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp
+170-3clang-tools-extra/clangd/unittests/tweaks/ExtractFunctionTests.cpp
+5-0clang-tools-extra/docs/ReleaseNotes.md
+425-423 files

LLVM/project 4d309e5 — lldb/include/lldb/Utility AnsiTerminal.h

[lldb] Avoid UB in ansi::TrimAtWordBoundary() (#229324)

`UtilityTest` fails on Windows in the debug configuration when
`AnsiTerminal.TrimAtWordBoundary()` calls `ansi::TrimAtWordBoundary()`
with Unicode strings containing bytes with the high bit set, which leads
to `std::isspace()` being called with a negative value. C11 §7.4
paragraph 1 requires the argument to be representable as unsigned char
or equal to EOF. Passing any other value is UB.
DeltaFile
+6-3lldb/include/lldb/Utility/AnsiTerminal.h
+6-31 files

LLVM/project 8020411 — clang/lib/CodeGen CGOpenMPRuntime.cpp, clang/test/OpenMP target_vtable_codegen_incomplete.cpp

[clang][OpenMP] Fix assertion in vtable registration for incomplete types (#229521)

Assertion failure, "queried property of class with no definition", when
mapping a pointer to incomplete type. Function 'emitAndRegisterVTable()'
assumed types would always be complete when mapped. When it's not (as in
it has no definition), there is no vtable to emit/register, so it should
just be skipped rather than assert fail.
DeltaFile
+65-0offload/test/offloading/target_map_incomplete_type.cpp
+15-0clang/test/OpenMP/target_vtable_codegen_incomplete.cpp
+1-1clang/lib/CodeGen/CGOpenMPRuntime.cpp
+81-13 files

LLVM/project a795dfa — libcxx/include/__locale_dir/support/no_locale characters.h, libcxx/test/std/depr/depr.c.headers signal_h.compile.pass.cpp

[libcxx] Fix indirect includes for nolocale (#229601)

The indirect include tests for several headers were failing when turning
on filesystem for LLVM-libc. This turned out to be because the nolocale
header was leaking ctime and other headers when building outside of
library mode. This PR just moves all the includes under the library
guard.
DeltaFile
+10-10libcxx/include/__locale_dir/support/no_locale/characters.h
+0-3libcxx/test/std/language.support/support.runtime/csignal.pass.cpp
+0-3libcxx/test/std/depr/depr.c.headers/signal_h.compile.pass.cpp
+10-163 files

LLVM/project 52c1143 — llvm/lib/Transforms/InstCombine InstCombineCasts.cpp, llvm/test/Transforms/InstCombine/AArch64 lshr-trunc-sext-to-ashr-sext.ll

[InstCombine] Move sext(trunc(lshr(...))) combine before same type combine (#227322)

The same type sext(trunc(...)) combine will fire on the lshr case, but
the lshr produces one less shift. Move it afterwards to give the lshr
combine a chance to fire first.

Doing this fold early improves codegen for this pattern seen in x264:

```c
int f(short x) {
  x = (x + 32) >> 6;
  return x;
}
```

- RISC-V: https://godbolt.org/z/djWza678o
- AArch64: https://godbolt.org/z/adbv49Yx5
- X86: https://godbolt.org/z/azsWKW9bq


    [2 lines not shown]
DeltaFile
+7-7llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+2-3llvm/test/Transforms/InstCombine/X86/lshr-trunc-sext-to-ashr-sext.ll
+2-3llvm/test/Transforms/InstCombine/RISCV/lshr-trunc-sext-to-ashr-sext.ll
+2-3llvm/test/Transforms/InstCombine/AArch64/lshr-trunc-sext-to-ashr-sext.ll
+13-164 files