LLVM/project a152ed4llvm/lib/MC MCLFI.cpp

[LFI][NFC] Mark lfi-enable-rewriter flag as hidden (#192143)

This flag is meant for debugging so it should be hidden.
DeltaFile
+1-1llvm/lib/MC/MCLFI.cpp
+1-11 files

LLVM/project e47cbe9clang/lib/CIR/CodeGen CIRGenExprAggregate.cpp, clang/test/CIR/CodeGen paren-init-list-eh.cpp paren-init-list.cpp

[CIR] Implement cleanup handling for destructor ILE initializers (#192172)

This adds EH cleanup handling for C++ initializer list expressions
containing destructed types. The necessary support for deferred
deactivation cleanups was already in place, so this just needed to push
the deferred destroy cleanup when the init list element is constructed.
DeltaFile
+115-0clang/test/CIR/CodeGen/paren-init-list-eh.cpp
+54-0clang/test/CIR/CodeGen/paren-init-list.cpp
+7-5clang/lib/CIR/CodeGen/CIRGenExprAggregate.cpp
+176-53 files

LLVM/project 75b9b71clang/lib/Format FormatTokenLexer.cpp FormatToken.h, clang/unittests/Format FormatTestVerilog.cpp TokenAnnotatorTest.cpp

[clang-format] Skip protected data blocks in Verilog (#190695)

A Verilog file can have encrypted stuff (sections 34 and O in the spec).
This patch makes the formatter skip it. Previously the formatter could
mess it up by treating it as ordinary code.

Now the entire block following the `pragma protect` line is treated as a
single token.

The keywords added in this patch only mean special things in the pragma
lines. Thus they are not added to `VerilogExtraKeywords`.

While the files containing the stuff are machine generated, it is a bad
idea for a formatter to break code. For example, one may wish to run the
formatter on an entire project containing both ordinary and encrypted
files. Another use case is formatting the prototypes in files that
contain clear text prototypes in and encrypted implementation.
DeltaFile
+58-9clang/lib/Format/FormatTokenLexer.cpp
+62-0clang/unittests/Format/FormatTestVerilog.cpp
+55-0clang/unittests/Format/TokenAnnotatorTest.cpp
+22-1clang/lib/Format/FormatToken.h
+9-0clang/lib/Format/UnwrappedLineParser.cpp
+7-1clang/lib/Format/FormatTokenLexer.h
+213-116 files

LLVM/project 09bd12cclang/lib/CIR/CodeGen CIRGenCall.cpp, clang/test/CIR/CodeGen nofpclass.c fp-math-precision-opts.c

[CIR] Add nofpclass for fast-math flags (#191455)

When `-menable-no-infs` or `-menable-no-nans` is set, OGCG adds
`nofpclass(nan inf)` to FP arguments and return values. CIR was missing
this.

Adds the check in `constructFunctionReturnAttributes` and
`constructFunctionArgumentAttributes`, gated on
`hasFloatingRepresentation()` (same condition classic codegen uses in
`canApplyNoFPClass`).

The MLIR LLVM dialect already has `llvm.nofpclass` from #188374, so only
the CIRGen side is needed here.

Test covers float, double, `_Complex double`, and a non-FP control case.

Made with [Cursor](https://cursor.com)
DeltaFile
+25-0clang/test/CIR/CodeGen/nofpclass.c
+20-3clang/lib/CIR/CodeGen/CIRGenCall.cpp
+4-4clang/test/CIR/CodeGen/fp-math-precision-opts.c
+49-73 files

LLVM/project 4d41344clang/tools/clang-ssaf-format CMakeLists.txt

[clang][ssaf] Fix plugin crash on AIX by adding `SUPPORT_PLUGINS` to `clang-ssaf-format` (#192292)

This change fixes a crash when running the `with-plugin.test` lit tests
on AIX. The crash is caused by a missing `-Wl, -brtl` linker flag.
Without this flag, the dynamic linker cannot resolve symbols from the
host executable when loading shared libraries via `dlopen`. So when the
plugin's static initializer runs and tries to register into the
`llvm::Registry` (calling `getRegistryLinkListInstance` defined in the
host via `LLVM_INSTANTIATE_REGISTRY`), the symbol resolves to `null`,
crashing the process.

The fix is to use `SUPPORT_PLUGINS` flag in `add_llvm_executable`, like
other tools in llvm. For AIX, this flag adds `-Wl, -brtl` to enable
runtime linking; for Non-AIX platforms, it sets `LLVM_NO_DEAD_STRIP` to
prevent the linker from stripping symbols that plugins reference at load
time.
DeltaFile
+5-0clang/tools/clang-ssaf-format/CMakeLists.txt
+5-01 files

LLVM/project f4ab5e0clang/include/clang/ScalableStaticAnalysisFramework SSAFBuiltinForceLinker.h, clang/include/clang/ScalableStaticAnalysisFramework/Analyses/EntityPointerLevel EntityPointerLevel.h

clean up code
DeltaFile
+68-62clang/lib/ScalableStaticAnalysisFramework/Analyses/UnsafeBufferUsage/UnsafeBufferUsageExtractor.cpp
+4-0clang/include/clang/ScalableStaticAnalysisFramework/SSAFBuiltinForceLinker.h
+1-2clang/unittests/ScalableStaticAnalysisFramework/Analyses/UnsafeBufferUsage/UnsafeBufferUsageTest.cpp
+1-1clang/include/clang/ScalableStaticAnalysisFramework/Analyses/EntityPointerLevel/EntityPointerLevel.h
+1-1clang/lib/ScalableStaticAnalysisFramework/Analyses/EntityPointerLevel/EntityPointerLevel.cpp
+75-665 files

LLVM/project 5e928acclang/docs ReleaseNotes.rst, clang/include/clang/AST ASTContext.h

[Clang] Add default arguments to the parameter mapping (#192071)

We were not adding default argument to the parameter mapping as such,
two constraint which only differed by the mapping of a parameter only
referenced in a default argument were considered identical.

Fixes #188640
DeltaFile
+45-0clang/test/SemaTemplate/concepts.cpp
+21-0clang/lib/Sema/SemaConcept.cpp
+2-2clang/lib/AST/ASTContext.cpp
+4-0clang/include/clang/AST/ASTContext.h
+1-1clang/docs/ReleaseNotes.rst
+73-35 files

LLVM/project 22b6a6bclang/lib/Sema SemaTemplateInstantiateDecl.cpp SemaAttr.cpp, clang/test/Sema warn-lifetime-analysis-nocfg.cpp warn-lifetime-safety-dangling-field.cpp

fix test
DeltaFile
+0-5clang/test/Sema/Inputs/lifetime-analysis.h
+2-3clang/test/Sema/warn-lifetime-analysis-nocfg.cpp
+3-2clang/test/Sema/warn-lifetime-safety-dangling-field.cpp
+0-2clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+0-1clang/lib/Sema/SemaAttr.cpp
+5-135 files

LLVM/project 9663ef3flang/test/Lower io-statement-big-unit-checks.f90 io-write.f90

[flang][NFC] Converted five tests from old lowering to new lowering (part 45) (#192265)

Tests converted from test/Lower: io-statement-2.f90, io-statement-3.f90,
io-statement-big-unit-checks.f90, io-statement-open-options.f90,
io-write.f90
DeltaFile
+36-58flang/test/Lower/io-statement-big-unit-checks.f90
+9-24flang/test/Lower/io-write.f90
+4-4flang/test/Lower/io-statement-3.f90
+4-3flang/test/Lower/io-statement-open-options.f90
+2-2flang/test/Lower/io-statement-2.f90
+55-915 files

LLVM/project a60dc13clang/lib/Sema SemaAttr.cpp, clang/test/Sema warn-lifetime-safety.cpp

revertarificial lookup
DeltaFile
+20-41clang/lib/Sema/SemaAttr.cpp
+24-24clang/test/Sema/warn-lifetime-safety.cpp
+44-652 files

LLVM/project 9fb207ellvm/lib/DebugInfo/DWARF DWARFExpressionPrinter.cpp

[llvm][DebugInfo] Use formatv in DWARFExpressionPrinter (#191993)

This relates to #35980.
DeltaFile
+10-9llvm/lib/DebugInfo/DWARF/DWARFExpressionPrinter.cpp
+10-91 files

LLVM/project 63f48f4clang/lib/Sema SemaAttr.cpp, clang/test/Sema warn-lifetime-safety.cpp

extract ctor from CXXNew
DeltaFile
+41-20clang/lib/Sema/SemaAttr.cpp
+24-24clang/test/Sema/warn-lifetime-safety.cpp
+65-442 files

LLVM/project 9242102lldb/packages/Python/lldbsuite/test lldbutil.py

[lldb] Declare return type of lldbutil.run_to_source_breakpoint (#190028)

Helpful for remembering the types of the four return values (and their
order).
DeltaFile
+5-5lldb/packages/Python/lldbsuite/test/lldbutil.py
+5-51 files

LLVM/project 83a0866clang/lib/Sema SemaExprCXX.cpp, clang/test/AST/HLSL hlsl-constructors-template.hlsl

[HLSL] Mark vector and matrix constructor-turned-InitListExprs as ListInitializations (#192151)

Fixes #189086

This PR fixes a bug for HLSL where vector and matrix constructors that
have been turned into initializer lists via
https://github.com/llvm/llvm-project/blob/18519f34650db7fc8e1885ac0293c1e9a5f1b071/clang/lib/Sema/SemaInit.cpp#L6993-L7000
were not marked with ListInitialization = true, which causes template
re-instantiation to fail because the initialization with a InitListExpr
gets classified as a InitializationKind::IK_Direct instead of a
InitializationKind::IK_DirectList when ListInitialization is false.

Assisted-by: Claude Opus 4.6
DeltaFile
+169-0clang/test/AST/HLSL/hlsl-constructors-template.hlsl
+9-1clang/lib/Sema/SemaExprCXX.cpp
+178-12 files

LLVM/project d0f8d71llvm/lib/Target/AMDGPU AMDGPU.td

[AMDGPU] Enable real true16 on gfx1250 (#190452)
DeltaFile
+1-0llvm/lib/Target/AMDGPU/AMDGPU.td
+1-01 files

LLVM/project 0b2522bllvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Minor stylistic cleanup
DeltaFile
+12-12llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+12-121 files

LLVM/project c486538clang/include/clang/Basic BuiltinsPPC.def, clang/test/CodeGen/PowerPC builtins-ecc.c

[PowerPC] Implement Elliptic Curve Cryptography Builtins (#184681)

Add support for the following ISA Future elliptic curve cryptograpy
builtins.

* Builtins with immediate parameters:
vector unsigned char __builtin_xxmulmul(vector unsigned char, vector
unsigned char, unsigned int);
vector unsigned char __builtin_xxmulmulhiadd(vector unsigned char,
vector unsigned char, unsigned int, unsigned int, unsigned int); vector
unsigned char __builtin_xxmulmulloadd(vector unsigned char, vector
unsigned char, unsigned int, unsigned int); vector unsigned char
__builtin_xxssumudm(vector unsigned char, vector unsigned char, unsigned
int);
vector unsigned char __builtin_xxssumudmc(vector unsigned char, vector
unsigned char, unsigned int);
vector unsigned char __builtin_xxssumudmcext(vector unsigned char,
vector unsigned char, vector unsigned char, unsigned int);


    [32 lines not shown]
DeltaFile
+242-0clang/test/CodeGen/PowerPC/builtins-ecc.c
+216-0llvm/test/CodeGen/PowerPC/builtins-ecc.ll
+91-0llvm/include/llvm/IR/IntrinsicsPowerPC.td
+66-0clang/test/Sema/PowerPC/builtins-ecc-error.c
+44-0llvm/lib/Target/PowerPC/PPCInstrFuture.td
+23-0clang/include/clang/Basic/BuiltinsPPC.def
+682-03 files not shown
+688-09 files

LLVM/project 1f0ded8lldb/cmake/modules FindPythonAndSwig.cmake, lldb/docs/resources build.rst

[lldb][windows] recommend building with Python 3.11 (#191159)

As of https://github.com/llvm/llvm-project/pull/176387 and release 22,
official builds of lldb on Windows use Python 3.11 both on x64 and
arm64.

The Windows lldb build bots use 3.11+ versions of Python:

[lldb-x86_64-win](https://lab.llvm.org/buildbot/#/builders/211) -
`3.12.7`
[lldb-remote-linux-win](https://lab.llvm.org/buildbot/#/builders/197) -
`3.12.7`
[lldb-aarch64-windows](https://lab.llvm.org/buildbot/#/builders/141) -
`3.11.9`

This patch changes the cmake config and documentation to recommend
building lldb on Windows with Python 3.11 or more recent.

In the future, given the reduced number of lldb maintainers on Windows
compared to other platforms, bumping the Python version on Windows would
help reduce the surface area of Python related bugs.
DeltaFile
+7-5lldb/cmake/modules/FindPythonAndSwig.cmake
+5-5lldb/docs/resources/build.rst
+3-0llvm/docs/ReleaseNotes.md
+15-103 files

LLVM/project 19474dallvm/lib/Target/AMDGPU AMDGPUAsmPrinter.cpp AMDGPUAsmPrinter.h, llvm/test/CodeGen/AMDGPU stack-realign-kernel.ll hsa.ll

[AMDGPU] Fix .Lfunc_end label placement (#191526)

Now it is placed after the kernel descriptor, even the section is
.rodata, which is wrong. This allows proper code size calculation in MC.
DeltaFile
+21-3llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+12-0llvm/test/CodeGen/AMDGPU/stack-realign-kernel.ll
+6-3llvm/test/CodeGen/AMDGPU/hsa.ll
+1-1llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h
+40-74 files

LLVM/project da09b04llvm/lib/Transforms/Utils SimplifyCFG.cpp, llvm/test/Transforms/SimplifyCFG/X86 switch-to-lookup-comdat.ll

Revert "[SimplifyCFG] Reuse function comdat for switch lookup table (#190995)" (#192294)

This reverts commit 4e3a074501cae5f132293d56f9987ded94ee72be.

CI broke with errors that look very much like they're caused by #190995.
I can't merge, so someone else will have to.

https://lab.llvm.org/buildbot/#/builders/94/builds/16933
https://lab.llvm.org/buildbot/#/builders/55/builds/26779
DeltaFile
+0-58llvm/test/Transforms/SimplifyCFG/X86/switch-to-lookup-comdat.ll
+0-1llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+0-592 files

LLVM/project ee7a6c7llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Extend post_order's lifetime
DeltaFile
+5-3llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+5-31 files

LLVM/project dd419f6llvm/lib/Transforms/Vectorize VPlanTransforms.cpp VPlanTransforms.h

Don't pass RecipeBuilder

Legacy calls `setRecipe` on all processed recipes but really queries `getRecipe`
for memory operations only, that we don't touch in the scalarization as that
happens after all memory recipes has been processed.
DeltaFile
+1-3llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-2llvm/lib/Transforms/Vectorize/VPlanTransforms.h
+1-1llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+3-63 files

LLVM/project 5ade4c7llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Just use `vputils::onlyFirstLaneUsed`
DeltaFile
+1-7llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-71 files

LLVM/project 4bc4c93llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Use `reverse`/`IsaPred`
DeltaFile
+2-4llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+2-41 files

LLVM/project 9254d75llvm/lib/Transforms/Vectorize VPlanTransforms.cpp VPlanTransforms.h, llvm/test/Transforms/LoopVectorize/AArch64 binop-costs.ll

[VPlan] Scalarize to first-lane-only directly on VPlan

This is needed to enable subsequent https://github.com/llvm/llvm-project/pull/182595.

I don't think we can fully port all scalarization logic from the legacy
path to VPlan-based right now because that would require us to introduce
interleave groups much earlier in VPlan pipeline, and without that we
can't really `assert` this new decision matches the previous CM-based
one. And without those `assert`s it's really hard to ensure we properly
port all the previous logic.

As such, I decided just to implement something much simpler that would
be enough for #182595. However, we perform this transformation before
delegating to the old CM-based decision, so it **is** effective
immediately and taking precedence even for consecutive loads/stores
right away.

Depends on https://github.com/llvm/llvm-project/pull/182592 but is stacked on
top of https://github.com/llvm/llvm-project/pull/182594 to enable linear
stacking for https://github.com/llvm/llvm-project/pull/182595.
DeltaFile
+65-0llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+5-5llvm/test/Transforms/LoopVectorize/AArch64/binop-costs.ll
+6-0llvm/lib/Transforms/Vectorize/VPlanTransforms.h
+4-2llvm/test/Transforms/LoopVectorize/X86/funclet.ll
+2-2llvm/test/Transforms/LoopVectorize/X86/drop-poison-generating-flags.ll
+3-0llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+85-93 files not shown
+88-119 files

LLVM/project 7aee393clang/include/clang/Serialization ModuleCache.h, clang/lib/Serialization ModuleCache.cpp

[clang][modules] Don't prune the top level module cache for implicitly built modules (#192171)

There are build systems that put explicitly built modules in the same
module cache directory as implicitly built modules. Pruning those in an
implicit build can cause the build to fail due to missing modules.

rdar://174790709
DeltaFile
+24-0clang/test/Modules/prune-no-toplevel.m
+3-2clang/lib/Serialization/ModuleCache.cpp
+2-1clang/tools/libclang/BuildSystem.cpp
+2-1clang/include/clang/Serialization/ModuleCache.h
+31-44 files

LLVM/project d0b7827llvm/include/llvm/CodeGen MachineScheduler.h, llvm/lib/CodeGen MachineScheduler.cpp

[MachineScheduler] Improve handling of phys regs in GenericScheduler. (NFC). (#187572)

Factor out the handling of coalesced preg COPYs from SystemZMachineScheduler.cpp into MachineScheduler.cpp. 

This extends the handling to other types of instructions than COPYs or immediate
loads, such as Load Address and takes care of maintaining the original input
order if both SUs are biased the same way in the same zone.

Another target that uses GenericScheduler can enable this by setting the new
MachineSchedPolicy member BiasPRegsExtra to true (default false). In a derived
scheduling strategy, this could be used either by passing /*BiasPRegsExtra=*/true
to biasPhysReg() (extra instruction detection), or by calling tryBiasPhysRegs()
instead which also preserves the original order if biased the same way.
DeltaFile
+29-3llvm/lib/CodeGen/MachineScheduler.cpp
+1-22llvm/lib/Target/SystemZ/SystemZMachineScheduler.cpp
+8-1llvm/include/llvm/CodeGen/MachineScheduler.h
+38-263 files

LLVM/project 55f40c8llvm/docs/CommandGuide llvm-otool.rst, llvm/test/tools/llvm-objdump/MachO archive-headers.test

[llvm-otool] Add -a option to print archive headers (#189411)

Wire up llvm-otool's -a to the existing --archive-headers machinery with
a default of displaying all architectures to match classic otool
behaviour.
DeltaFile
+12-0llvm/test/tools/llvm-objdump/MachO/archive-headers.test
+3-2llvm/tools/llvm-objdump/MachODump.cpp
+4-0llvm/docs/CommandGuide/llvm-otool.rst
+1-1llvm/tools/llvm-objdump/OtoolOpts.td
+1-0llvm/tools/llvm-objdump/llvm-objdump.cpp
+21-35 files

LLVM/project d05b3e0llvm/lib/Target/AMDGPU AMDGPURegBankLegalizeRules.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.s.barrier.signal.isfirst.ll s-barrier.ll

AMDGPU/GlobalISel: RegBankLegalize rules for split barrier intrinsics (#192170)

Add RegBankLegalize rules for the following split barrier intrinsics:
llvm.amdgcn.s.barrier.init
llvm.amdgcn.s.barrier.join
llvm.amdgcn.s.barrier.leave
llvm.amdgcn.s.barrier.signal.isfirst
llvm.amdgcn.s.barrier.signal.var
llvm.amdgcn.s.get.barrier.state
llvm.amdgcn.s.get.named.barrier.state
llvm.amdgcn.s.wakeup.barrier
DeltaFile
+26-25llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+1-1llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.signal.isfirst.ll
+1-1llvm/test/CodeGen/AMDGPU/s-barrier.ll
+1-1llvm/test/CodeGen/AMDGPU/s-wakeup-barrier.ll
+29-284 files

LLVM/project 158434alldb/source/Host/windows PseudoConsole.cpp

[lldb][windows] use a marker to drain the ConPTY's init sequence (#191472)

This patch improves the ConPTY method that drains the init sequence. It
uses a string marker to ensure that the init sequence has been received.
The previous implementation was prone to race condition, because the
method could return before all the init sequence was received.

This only seems to reproduce on windows-server-2019.
DeltaFile
+11-3lldb/source/Host/windows/PseudoConsole.cpp
+11-31 files