SuccessChanges

Changes from Git (git http://labmaster3.local/git/llvm-zorg.git)

Summary

  1. clang-x86-ninja-win10 - delete folder if it exists (details)
  2. LNT CTMark: Update default SUBMIT_NAME and add SUBMIT_ORDER (details)
  3. jenkins/jobs: Move the lnt-ctmark-* jobs to green-dragon-12 (details)
Commit d8fcebd8ab9f93d4fb71c079c393dfba7ce7cc13 by kuhnel
clang-x86-ninja-win10 - delete folder if it exists
The file was modifiedbuildbot/google/terraform/main.tf
The file was modifiedbuildbot/google/docker/buildbot-windows10-vs2019/run.ps1
The file was modifiedbuildbot/google/docker/buildbot-windows10-vs2019/VERSION
Commit 1e8d9e10ded4e03db4e13a26b74e1247f4b5312a by Azharuddin Mohammed
LNT CTMark: Update default SUBMIT_NAME and add SUBMIT_ORDER

- Include the node name in the SUBMIT_NAME
- Add SUBMIT_ORDER (based on GIT_DISTANCE)
The file was modifiedtasks/lnt-ctmark.sh
Commit 76a1ebd3ccf61650f80f2787d65b5f69cb51485d by Azharuddin Mohammed
jenkins/jobs: Move the lnt-ctmark-* jobs to green-dragon-12
The file was modifiedzorg/jenkins/jobs/jobs/lnt-ctmark-aarch64-O3-flto
The file was modifiedzorg/jenkins/jobs/jobs/lnt-ctmark-aarch64-O0-g
The file was modifiedzorg/jenkins/jobs/jobs/lnt-ctmark-aarch64-Oz
The file was modifiedzorg/jenkins/jobs/jobs/lnt-ctmark-aarch64-Os

Changes from Git (git http://labmaster3.local/git/llvm-project.git)

Summary

  1. [clang] Fix incorrect call to TextDiagnostic::printDiagnosticMessage (details)
  2. [LSR] Preserve MSSA when using SplitCriticalEdge. (details)
  3. Fix crash in the pass pipeline when local reproducer is enabled (details)
  4. [CodeGen] Fixing inconsistent ABI mangling of vlaues in SelectionDAGBuilder (details)
  5. [Test] Test auto-update (details)
  6. [lld][ELF][test] Add additional LTO testing (details)
  7. [RISC-V] Implement RISCVInstrInfo::isCopyInstrImpl() (details)
  8. [compiler-rt] Fix atomic support functions on 32-bit architectures (details)
  9. [SyntaxTree][Synthesis] Implement `deepCopy` (details)
  10. [mlir] Shape.AssumingOp implements RegionBranchOpInterface. (details)
  11. [AArch64] Cortex-A55 scheduler model (details)
  12. [NFC][ARM] More tail predication tests. (details)
  13. [llvm-readelf/obj] - Stop printing invalid names for unnamed section symbols. (details)
  14. Do not dereference an array out of bound just to take its address (details)
  15. [ARM] Select f32 constants with vmov.f16 (details)
  16. [mlir][VectorOps] Loosen restrictions on vector.reduction types (details)
  17. Recommit "[SCEV] Look through single value PHIs." (details)
  18. [AST] Reduce the size of TemplateArgumentLocInfo. (details)
  19. Revert "[NFC][ScheduleDAG] Remove unused EntrySU SUnit" (details)
  20. Fix buildbot. (details)
  21. [MLIR] Fix typo and expand gpu.host_register description. (details)
  22. [SyntaxTree][NFC] follow naming convention + remove auto on empty vector declaration (details)
  23. [SVE] Use NEON for extract_vector_elt when the index is in range. (details)
  24. [SVE] Change definition of reduction ISD nodes to have an SVE vector result type. (details)
  25. [clang-tidy] New check cppcoreguidelines-prefer-member-initializer (details)
  26. [Statepoints][ISEL] gc.relocate uniquification should be based on SDValue, not IR Value. (details)
  27. [gn build] Port 4fc0214a101 (details)
  28. DWARFYAML::emitDebugSections - remove unnecessary cantFail(success) call. NFCI. (details)
  29. [llvm-readobj/libObject] - Get rid of `FirstSym` argument. NFCI. (details)
  30. Change comments about order of classes in superclass list. (details)
  31. DWARFEmitter.cpp - use auto const& iterators in for-range loops to avoid copies. NFCI. (details)
  32. [ASTImporter] Refactor IsStructurallyEquivalent's Decl overloads to be more consistent (details)
  33. [AIX][Clang][Driver] Add handling of nostartfiles option (details)
  34. [SLP] Allow reordering of vectorization trees with reused instructions. (details)
  35. [analyzer][solver] Fix issue with symbol non-equality tracking (details)
  36. Update update_analyze_test_checks.py to support API changes from D83004 (details)
  37. [CostModel][X86] Add some select shuffle costs tests for D87884 (details)
  38. [mlir][openacc] Add attributes to parallel op async, wait and self clauses (details)
  39. [LoopSimplifyCFG][NewPM] Rename simplify-cfg -> loop-simplifycfg (details)
  40. [PowerPC] Add vector pair load/store instructions and vector pair register class (details)
  41. [LLD][ELF][test] Fix CHECKs in map-file test (details)
  42. [TextAPI] clean up auto usages in tests, NFC (details)
  43. [SVE][CodeGen] Mark ptrue/pfalse instructions as rematerializable (details)
  44. ProfileSummary.cpp - use auto const& iterator in for-range loop to avoid copies. NFCI. (details)
  45. Fix Wdocumentation unknown parameter warnings. NFCI. (details)
  46. MachineCSE.cpp - use auto const& iterator in for-range loop to avoid copies. NFCI. (details)
  47. [clang] Fix a misleading variable name. NFC. (details)
  48. [Sema] Split special builtin type lookups into a separate function (details)
  49. SLPVectorizer.cpp - fix include ordering. NFCI. (details)
  50. TargetPassConfig.cpp - use auto const& iterator in for-range loop to avoid copies. NFCI. (details)
  51. [ARM][CMSE] Issue an error if passing arguments through memory across (details)
  52. [ObjCARC][NewPM] Port objc-arc-contract to NPM (details)
  53. [SCEV] Add additional max BTC tests with loop guards. (details)
  54. ImplicitNullChecks.cpp - use auto const& iterators in for-range loops to avoid copies. NFCI. (details)
  55. [SLP] simplify interface for gather(); NFC (details)
  56. The wrong placement of add pass with optimizations led to -funique-internal-linkage-names being disabled. (details)
  57. [lldb/Commands] Fix outdated `breakpoint command add` help string (details)
  58. [cmake] Centralize LLVM_ENABLE_WARNINGS option (details)
  59. [SLP] Use for-range loops across ValueLists. NFCI. (details)
  60. [NFC][SCEV] Add tests for @llvm.abs intrinsic (details)
  61. [SCEV] Recognize @llvm.abs as smax(x, -x) (details)
  62. [NFC][SCEV] Add tests for @llvm.*.sat intrinsics (details)
  63. [SCEV] Recognize @llvm.usub.sat as `%x - (umin %x, %y)` (details)
  64. [SCEV] Recognize @llvm.uadd.sat as `%y + umin(%x, (-1 - %y))` (details)
  65. [OpenMP] Protect unrecogonized CUDA error code (details)
  66. [IRBuilder][VectorCombine] make and use a convenience function for unary shuffle; NFC (details)
  67. [SLP] use unary shuffle creator to reduce code duplication; NFC (details)
  68. [AIX][Clang][Driver] Add handling of shared option (details)
  69. [ObjCARC] Initialize return value (details)
  70. [AMDGPU] Adding mutex to guard lld::elf::link interface use (details)
  71. [MS] On x86_32, pass overaligned, non-copyable arguments indirectly (details)
  72. [AMDGPU] Fixed typo in intrinsic comment. NFC. (details)
Commit 4eae6fc95f95563a73a510a8b09cfce01004930a by andrzej.warzynski
[clang] Fix incorrect call to TextDiagnostic::printDiagnosticMessage

As per the documentation, the 2nd argument in printDiagnosticMessage
should be a bool that specifies whether the underlying message is a
continuation note diagnostic or not. More specifically, it should be:
```
Level == DiagnosticsEngine::Note
```
instead of:
```
Level
```

This change means that `no input file` in the following scenario will be
now correctly printed in bold:
```
$ bin/clang
clang: error: no input files
```
In terminals that don't support text formatting the behaviour doesn't
change.

Differential Revision: https://reviews.llvm.org/D87816
The file was modifiedclang/lib/Frontend/TextDiagnosticPrinter.cpp
Commit 57ae9bb9323548b2ad4ba8274c3910bf9c764983 by flo
[LSR] Preserve MSSA when using SplitCriticalEdge.

LSR claims to MemorySSA, but we also have to make sure it is preserved
when splitting critical edges. This can be done by passing MSSAU to
SplitCriticalEdge.

Fixes PR47557.
The file was addedllvm/test/Analysis/MemorySSA/update-remove-dead-blocks.ll
The file was modifiedllvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
Commit 702f06ad14ac61d364b773e5a1f4d8b0b0214553 by joker.eph
Fix crash in the pass pipeline when local reproducer is enabled

This crash only happens when a function pass is followed by a module
pass. In this case the splitting of the pass pipeline didn't handle
properly the verifier passes and ended up with an odd number of pass in
the pipeline, breaking an assumption of the local crash reproducer
executor and hitting an assertion.

Differential Revision: https://reviews.llvm.org/D88000
The file was modifiedmlir/lib/Pass/Pass.cpp
The file was modifiedmlir/test/Pass/crash-recovery.mlir
Commit 53d238a961d14eae46f6f2b296ce48026c7bd0a1 by lucas.prates
[CodeGen] Fixing inconsistent ABI mangling of vlaues in SelectionDAGBuilder

SelectionDAGBuilder was inconsistently mangling values based on ABI
Calling Conventions when getting them through copyFromRegs in
SelectionDAGBuilder, causing duplicate value type convertions for
function arguments. The checking for the mangling requirement was based
on the value's originating instruction and was performed outside of, and
inspite of, the regular Calling Convention Lowering.

The issue could be observed in a scenario such as:

```
%arg1 = load half, half* %const, align 2
%arg2 = call fastcc half @someFunc()
call fastcc void @otherFunc(half %arg1, half %arg2)
; Here, %arg2 was incorrectly mangled twice, as the CallConv data from
; the call to @someFunc() was taken into consideration for the check
; when getting the value for processing the call to @otherFunc(...),
; after the proper convertion had taken place when lowering the return
; value of the first call.
```

This patch fixes the issue by disregarding the Calling Convention
information for such copyFromRegs, making sure the ABI mangling is
properly contanined in the Calling Convention Lowering.

This fixes Bugzilla #47454.

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D87844
The file was addedllvm/test/CodeGen/ARM/pr47454.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
Commit 98aed8aa00dcc021686972734b5356c831328721 by mkazantsev
[Test] Test auto-update
The file was modifiedllvm/test/Transforms/IndVarSimplify/eliminate-comparison.ll
Commit fa6da90aef004339e768c84d648f449348a5b13c by james.henderson
[lld][ELF][test] Add additional LTO testing

The additional testing is testing we previously had in a downstream test
suite.

Reviewed by: grimar, MaskRay

Differential Revision: https://reviews.llvm.org/D87824
The file was addedlld/test/ELF/lto/archive-mixed.test
The file was modifiedlld/test/ELF/lto/wrap-2.ll
The file was addedlld/test/ELF/lto/undef-mixed2.test
The file was modifiedlld/test/ELF/lto/internalize-basic.ll
Commit 8cf6778d3040b33db768bb7542630d9820a72e28 by Alexander.Richardson
[RISC-V] Implement RISCVInstrInfo::isCopyInstrImpl()

This does not result in changes for any of the current tests, but it might
improve debug information in some cases.

Reviewed By: luismarques

Differential Revision: https://reviews.llvm.org/D86522
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfo.h
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfo.cpp
Commit aa85c6f2a528792e2ff778a36fb6f35a01e8191c by Alexander.Richardson
[compiler-rt] Fix atomic support functions on 32-bit architectures

The code currently uses __c11_atomic_is_lock_free() to detect whether an
atomic operation is natively supported. However, this can result in a
runtime function call to determine whether the given operation is lock-free
and clang generating a call to e.g. __atomic_load_8 since the branch is
not a constant zero. Since we are implementing those runtime functions, we
must avoid those calls. This patch replaces __c11_atomic_is_lock_free()
with __atomic_always_lock_free() which always results in a compile-time
constant value. This problem was found while compiling atomic.c for MIPS32
since the -Watomic-alignment warning was being triggered and objdump showed
an undefined reference to _atomic_is_lock_free.

In addition to fixing 32-bit platforms this also enables the 16-byte case
that was disabled in r153779 (185f2edd70a34d28b305df0cd8ce519ecbca2cfd).

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D86510
The file was modifiedcompiler-rt/lib/builtins/atomic.c
Commit 4a5cc389c51d267f39286a9a8c58c32f758b9d4b by ecaldas
[SyntaxTree][Synthesis] Implement `deepCopy`

Differential Revision: https://reviews.llvm.org/D87749
The file was modifiedclang/include/clang/Tooling/Syntax/BuildTree.h
The file was modifiedclang/lib/Tooling/Syntax/Synthesis.cpp
The file was modifiedclang/unittests/Tooling/Syntax/SynthesisTest.cpp
Commit ffdd4a46a9a90d7b63b840c4b3c775074815f3ed by tpopp
[mlir] Shape.AssumingOp implements RegionBranchOpInterface.

This adds support for the interface and provides unambigious information
on the control flow as it is unconditional on any runtime values.
The code is tested through confirming that buffer-placement behaves as
expected.

Differential Revision: https://reviews.llvm.org/D87894
The file was modifiedmlir/lib/Dialect/Shape/IR/Shape.cpp
The file was modifiedmlir/test/Transforms/buffer-placement.mlir
The file was modifiedmlir/include/mlir/Dialect/Shape/IR/ShapeOps.td
Commit 4b8ade837e36b7f0181ce86fc23f33851d0fdd35 by sjoerd.meijer
[AArch64] Cortex-A55 scheduler model

This is an initial commit adding the A55 model, but it isn't used/enabled yet.
We will follow up on this to improve the model, then flip the switch.

The optimisation guide describing Cortex-A55 micro-architecture in more detail
can be found here:

https://static.docs.arm.com/epm128372/20/arm_cortex_a55_software_optimization_guide_v2.pdf

Original patch by Javed Absar.

Differential Revision: https://reviews.llvm.org/D46884
The file was addedllvm/lib/Target/AArch64/AArch64SchedA55.td
The file was modifiedllvm/lib/Target/AArch64/AArch64.td
Commit 13c73632c7cfcc2c8e70c93781d8fb9872153ede by sam.parker
[NFC][ARM] More tail predication tests.

Add mir tests for use/def of P0.
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt.mir
Commit 095f6fbbd7b61af205d761f6951a869ec4a61722 by grimar
[llvm-readelf/obj] - Stop printing invalid names for unnamed section symbols.

We have an issue with `ELFDumper<ELFT>::getSymbolSectionName`:
1) It is used deeply for both LLVM/GNU styles and might return LLVM-style only
   values to describe symbols: "Undefined", "Processor Specific", "Absolute", etc.

2) `getSymbolSectionName` is used by `getFullSymbolName` and these special values
   might appear instead of symbol names in many places.
   This occurs for unnamed section symbols currently.

This patch extracts the LLVM specific logic to `LLVMStyle<ELFT>::printSymbolSection`,
which seems to be the only place where we want to print the special values mentioned.
It also adds a meaningful new warning that is reported when we are unable to get
a section index for a section symbol.

Differential revision: https://reviews.llvm.org/D87764
The file was modifiedllvm/test/tools/llvm-readobj/ELF/mips-plt.test
The file was modifiedllvm/test/tools/llvm-readobj/ELF/hash-symbols.test
The file was modifiedllvm/test/tools/llvm-readobj/ELF/mips-got.test
The file was modifiedllvm/tools/llvm-readobj/ELFDumper.cpp
The file was modifiedllvm/test/tools/llvm-readobj/ELF/symbol-shndx.test
The file was modifiedllvm/test/tools/llvm-readobj/ELF/dyn-symbols.test
Commit 2a774411174466010c69a2460c81b8d0d4f7165f by sguelton
Do not dereference an array out of bound just to take its address

This is UB by the standard, and caught by the libstdc++ asserts

Differential Revision: https://reviews.llvm.org/D87892
The file was modifiedflang/lib/Parser/token-sequence.cpp
Commit f4c5cadbcbb41f13cff0905449cfff4aef6a083c by david.green
[ARM] Select f32 constants with vmov.f16

This adds lowering for f32 values using the vmov.f16, which zeroes the
top bits whilst setting the lower bits to a pattern. This range of
values does not often come up, except where a f16 constant value has
been converted to a f32.

Differential Revision: https://reviews.llvm.org/D87790
The file was modifiedllvm/test/CodeGen/ARM/fp16-bitcast.ll
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp
The file was modifiedllvm/test/CodeGen/ARM/cmse-clear-float-hard.ll
The file was modifiedllvm/lib/Target/ARM/ARMInstrVFP.td
The file was modifiedllvm/lib/Target/ARM/MCTargetDesc/ARMAddressingModes.h
Commit 2d76274b99f2c09cdd94863d6e2e48a06f863f2a by benny.kra
[mlir][VectorOps] Loosen restrictions on vector.reduction types

LLVM can deal with any integer or float type, don't arbitrarily restrict
it to f32/f64/i32/i64.

Differential Revision: https://reviews.llvm.org/D88010
The file was modifiedmlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp
The file was modifiedmlir/lib/Dialect/Vector/VectorOps.cpp
The file was modifiedmlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir
Commit 11dccf8d3aa5d55210f8b886fb21926c7a8353ca by flo
Recommit "[SCEV] Look through single value PHIs."

This commit was originally because it was suspected to cause a crash,
but a reproducer did not surface.

A crash that was exposed by this change was fixed in 1d8f2e52925b.

This reverts the revert commit 0581c0b0eeba03da590d1176a4580cf9b9e8d1e3.
The file was modifiedllvm/test/Analysis/ScalarEvolution/solve-quadratic-i1.ll
The file was modifiedllvm/test/Transforms/LoopStrengthReduce/funclet.ll
The file was modifiedllvm/lib/Analysis/ScalarEvolution.cpp
The file was modifiedllvm/test/Analysis/ScalarEvolution/solve-quadratic-overflow.ll
Commit af29591650c43bd3bdc380c9d47b8bfd0f1664a2 by hokein.wu
[AST] Reduce the size of TemplateArgumentLocInfo.

allocate the underlying data of Template kind separately, this would reduce AST
memory usage

- TemplateArgumentLocInfo 24 => 8 bytes
- TemplateArgumentLoc  48 => 32 bytes
- DynTypeNode 56 => 40 bytes

ASTContext::.getASTAllocatedMemory changes:
  SemaDecl.cpp 255.5 MB => 247.5MB
  SemaExpr.cpp 293.5 MB => 283.5MB

Differential Revision: https://reviews.llvm.org/D87080
The file was modifiedclang/lib/Serialization/ASTReader.cpp
The file was modifiedclang/lib/Sema/TreeTransform.h
The file was modifiedclang/lib/AST/ASTImporter.cpp
The file was modifiedclang/lib/Sema/SemaTemplate.cpp
The file was modifiedclang/include/clang/AST/Expr.h
The file was modifiedclang/lib/Sema/SemaTemplateInstantiateDecl.cpp
The file was modifiedclang/include/clang/AST/TemplateBase.h
The file was modifiedclang/lib/Sema/SemaTemplateDeduction.cpp
The file was modifiedclang/lib/Sema/SemaTemplateVariadic.cpp
The file was modifiedclang/lib/AST/TypeLoc.cpp
The file was modifiedclang/lib/AST/TemplateBase.cpp
Commit 17dc729bd42947b839c9717a2efa9e1e04248616 by pifon
Revert "[NFC][ScheduleDAG] Remove unused EntrySU SUnit"

This reverts commit 0345d88de654259ae90494bf9b015416e2cccacb.

Google internal backend uses EntrySU, we are looking into removing
dependency on it.

Differential Revision: https://reviews.llvm.org/D88018
The file was modifiedllvm/include/llvm/CodeGen/ScheduleDAG.h
The file was modifiedllvm/lib/CodeGen/MachineScheduler.cpp
The file was modifiedllvm/lib/Target/AMDGPU/SIMachineScheduler.h
The file was modifiedllvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp
The file was modifiedllvm/lib/CodeGen/PostRASchedulerList.cpp
The file was modifiedllvm/lib/Target/AMDGPU/GCNMinRegStrategy.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
The file was modifiedllvm/lib/CodeGen/MacroFusion.cpp
The file was modifiedllvm/lib/CodeGen/ScheduleDAG.cpp
The file was modifiedllvm/lib/CodeGen/ScheduleDAGInstrs.cpp
The file was modifiedllvm/include/llvm/CodeGen/MachineScheduler.h
The file was modifiedllvm/lib/CodeGen/SelectionDAG/ScheduleDAGVLIW.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
Commit 41a8bbad5e52a94a485c5bfe3d7871784fe6d8ed by hokein.wu
Fix buildbot.

TemplateArgumentLocInfo cannot result in a constant expression anymore
after D87080.
The file was modifiedclang/include/clang/AST/TemplateBase.h
Commit 9ba3b7449d30c7a7b9be77ef3ac4016ba263b619 by csigg
[MLIR] Fix typo and expand gpu.host_register description.

See comments in https://reviews.llvm.org/D85631.

Reviewed By: herhut

Differential Revision: https://reviews.llvm.org/D86214
The file was modifiedmlir/lib/Conversion/GPUCommon/ConvertLaunchFuncToRuntimeCalls.cpp
The file was modifiedmlir/include/mlir/Dialect/GPU/GPUOps.td
Commit 87f0b51d68de40e7106be89d934b5191d983e3d5 by ecaldas
[SyntaxTree][NFC] follow naming convention + remove auto on empty vector declaration

Differential Revision: https://reviews.llvm.org/D88004
The file was modifiedclang/lib/Tooling/Syntax/BuildTree.cpp
The file was modifiedclang/lib/Tooling/Syntax/Tree.cpp
The file was modifiedclang/lib/Tooling/Syntax/Nodes.cpp
Commit 6457455248d5b83a7e4274f06b6313b15cd51421 by paul.walker
[SVE] Use NEON for extract_vector_elt when the index is in range.

Patch also adds missing patterns for unpacked vector types and
extracts of element zero.

Differential Revision: https://reviews.llvm.org/D87842
The file was modifiedllvm/test/CodeGen/AArch64/sve-split-extract-elt.ll
The file was modifiedllvm/test/CodeGen/AArch64/sve-insert-element.ll
The file was modifiedllvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
The file was modifiedllvm/test/CodeGen/AArch64/sve-extract-element.ll
Commit f3fa954b5b19acdd4b95ff2ca1ff4f74f4b6b21b by paul.walker
[SVE] Change definition of reduction ISD nodes to have an SVE vector result type.

The current nodes, AArch64::SMAXV_PRED for example, are defined to
return a NEON vector result.  This is incorrect because they modify
the complete SVE register and are thus changed to represent such.

This patch also adds nodes for UADDV_PRED and SADDV_PRED, which
unifies the handling of all SVE reductions.

NOTE: Floating-point reductions are already implemented correctly,
so this patch is essentially making everything consistent with those.

Differential Revision: https://reviews.llvm.org/D87843
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.h
The file was modifiedllvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
The file was modifiedllvm/lib/Target/AArch64/SVEInstrFormats.td
The file was modifiedllvm/test/CodeGen/AArch64/sve-int-reduce-pred.ll
Commit 4fc0214a10140fa77449677e8094ea22d3d17701 by adam.balogh
[clang-tidy] New check cppcoreguidelines-prefer-member-initializer

Finds member initializations in the constructor body which can be placed
into the initialization list instead. This does not only improves the
readability of the code but also affects positively its performance.
Class-member assignments inside a control statement or following the
first control statement are ignored.

Differential Revision: https://reviews.llvm.org/D71199
The file was modifiedclang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp
The file was addedclang-tools-extra/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.h
The file was modifiedclang-tools-extra/clang-tidy/cppcoreguidelines/CMakeLists.txt
The file was modifiedclang-tools-extra/docs/ReleaseNotes.rst
The file was addedclang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-prefer-member-initializer-modernize-use-default-member-init-assignment.cpp
The file was addedclang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-prefer-member-initializer-modernize-use-default-member-init.cpp
The file was addedclang-tools-extra/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.cpp
The file was addedclang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-prefer-member-initializer.cpp
The file was addedclang-tools-extra/docs/clang-tidy/checks/cppcoreguidelines-prefer-member-initializer.rst
Commit ee86688b81751c57ca5b24e462194ea5522345c4 by dantrushin
[Statepoints][ISEL] gc.relocate uniquification should be based on SDValue, not IR Value.

When exporting statepoint results to virtual registers we try to avoid
generating exports for duplicated inputs. But we erroneously use
IR Value* to check if inputs are duplicated. Instead, we should use
SDValue, because even different IR values can get lowered to the same
SDValue.
I'm adding a (degenerate) test case which emphasizes importance of this
feature for invoke statepoints.
If we fail to export only unique values we will end up with something
like that:

  %0 = STATEPOINT
  %1 = COPY %0

landing_pad:
  <use of %1>

And when exceptional path is taken, %1 is left uninitialized (COPY is never
execute).

Reviewed By: reames

Differential Revision: https://reviews.llvm.org/D87695
The file was modifiedllvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
The file was modifiedllvm/test/CodeGen/X86/statepoint-vreg-details.ll
Commit 6d2bf5e3c89b08c64404045640e4a5a2189acbe4 by llvmgnsyncbot
[gn build] Port 4fc0214a101
The file was modifiedllvm/utils/gn/secondary/clang-tools-extra/clang-tidy/cppcoreguidelines/BUILD.gn
Commit 82042a2c9b2330cfb4621322474448567c52f7b6 by llvm-dev
DWARFYAML::emitDebugSections - remove unnecessary cantFail(success) call. NFCI.

As mentioned on rG6bb912336804.
The file was modifiedllvm/lib/ObjectYAML/DWARFEmitter.cpp
Commit df3e903655e2499968fc7af64fb5fa52b2ee79bb by grimar
[llvm-readobj/libObject] - Get rid of `FirstSym` argument. NFCI.

We use `FirstSym` argument in `getExtendedSymbolTableIndex` to calculate
a symbol index:

```
&Sym - &FirstSym
```

Instead, we could pass the symbol index directly.
This is what this patch does, it allows to simplify another llvm-readobj API.

Differential revision: https://reviews.llvm.org/D88016
The file was modifiedllvm/include/llvm/Object/ELF.h
The file was modifiedllvm/tools/llvm-readobj/ELFDumper.cpp
Commit bd55d5b2a11030dc7a93008275c533bbdb748c72 by paul
Change comments about order of classes in superclass list.
The file was modifiedllvm/include/llvm/TableGen/Record.h
The file was modifiedllvm/lib/TableGen/Record.cpp
Commit 2ef2abdec20e7275ae719fa8be920482f08da1f0 by llvm-dev
DWARFEmitter.cpp - use auto const& iterators in for-range loops to avoid copies. NFCI.
The file was modifiedllvm/lib/ObjectYAML/DWARFEmitter.cpp
Commit 7c4575e15f065312ad40ebe0d1ec1e1ffa4c6628 by Raphael Isemann
[ASTImporter] Refactor IsStructurallyEquivalent's Decl overloads to be more consistent

There are several `::IsStructurallyEquivalent` overloads for Decl subclasses
that are used for comparing declarations. There is also one overload that takes
just two Decl pointers which ends up queuing the passed Decls to be later
compared in `CheckKindSpecificEquivalence`.

`CheckKindSpecificEquivalence` implements the dispatch logic for the different
Decl subclasses. It is supposed to hand over the queued Decls to the
subclass-specific `::IsStructurallyEquivalent` overload that will actually
compare the Decl instance. It also seems to implement a few pieces of actual
node comparison logic inbetween the dispatch code.

This implementation causes that the different overloads of
`::IsStructurallyEquivalent` do different (and sometimes no) comparisons
depending on which overload of `::IsStructurallyEquivalent` ends up being
called.

For example, if I want to compare two FieldDecl instances, then I could either
call the `::IsStructurallyEquivalent` with `Decl *` or with `FieldDecl *`
parameters. The overload that takes FieldDecls is doing a correct comparison.
However, the `Decl *` overload just queues the Decl pair.
`CheckKindSpecificEquivalence` has no dispatch logic for `FieldDecl`, so it
always returns true and never does any actual comparison.

On the other hand, if I try to compare two FunctionDecl instances the two
possible overloads of `::IsStructurallyEquivalent` have the opposite behaviour:
The overload that takes `FunctionDecl` pointers isn't comparing the names of the
FunctionDecls while the overload taking a plain `Decl` ends up comparing the
function names (as the comparison logic for that is implemented in
`CheckKindSpecificEquivalence`).

This patch tries to make this set of functions more consistent by making
`CheckKindSpecificEquivalence` a pure dispatch function without any
subclass-specific comparison logic. Also the dispatch logic is now autogenerated
so it can no longer miss certain subclasses.

The comparison code from `CheckKindSpecificEquivalence` is moved to the
respective `::IsStructurallyEquivalent` overload so that the comparison result
no longer depends if one calls the `Decl *` overload or the overload for the
specific subclass. The only difference is now that the `Decl *` overload is
queuing the parameter while the subclass-specific overload is directly doing the
comparison.

`::IsStructurallyEquivalent` is an implementation detail and I don't think the
behaviour causes any bugs in the current implementation (as carefully calling
the right overload for the different classes works around the issue), so the
test for this change is that I added some new code for comparing `MemberExpr`.
The new comparison code always calls the dispatching overload and it previously
failed as the dispatch didn't support FieldDecls.

Reviewed By: martong, a_sidorin

Differential Revision: https://reviews.llvm.org/D87619
The file was modifiedclang/unittests/AST/StructuralEquivalenceTest.cpp
The file was modifiedclang/lib/AST/ASTStructuralEquivalence.cpp
Commit 699089f2a9702baa987dc2dbe915a2c845c7027f by daltenty
[AIX][Clang][Driver] Add handling of nostartfiles option

Reviewed By: jasonliu

Differential Revision: https://reviews.llvm.org/D87904
The file was modifiedclang/lib/Driver/ToolChains/AIX.cpp
The file was modifiedclang/test/Driver/aix-ld.c
Commit 3ff07fcd542ebef657bb93fe8ee1750527210b94 by a.bataev
[SLP] Allow reordering of vectorization trees with reused instructions.

If some leaves have the same instructions to be vectorized, we may
incorrectly evaluate the best order for the root node (it is built for the
vector of instructions without repeated instructions and, thus, has less
elements than the root node). In this case we just can not try to reorder
the tree + we may calculate the wrong number of nodes that requre the
same reordering.
For example, if the root node is \<a+b, a+c, a+d, f+e\>, then the leaves
are \<a, a, a, f\> and \<b, c, d, e\>. When we try to vectorize the first
leaf, it will be shrink to \<a, b\>. If instructions in this leaf should
be reordered, the best order will be \<1, 0\>. We need to extend this
order for the root node. For the root node this order should look like
\<3, 0, 1, 2\>. This patch allows extension of the orders of the nodes
with the reused instructions.

Reviewed By: RKSimon

Differential Revision: https://reviews.llvm.org/D45263
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/reorder_repeated_ops.ll
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/vectorize-reorder-reuse.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/jumbled_store_crash.ll
Commit 0c4f91f84b2efe8975848a7a13c08d7479abe752 by gabor.marton
[analyzer][solver] Fix issue with symbol non-equality tracking

We should track non-equivalency (disequality) in case of greater-then or
less-then assumptions.

Differential Revision: https://reviews.llvm.org/D88019
The file was modifiedclang/test/Analysis/equality_tracking.c
The file was modifiedclang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
Commit 2174efb10480ac374364eb9eef1a5ae79c7b16e2 by llvm-dev
Update update_analyze_test_checks.py to support API changes from D83004
The file was modifiedllvm/utils/update_analyze_test_checks.py
Commit 18a3ebcd3016d9bd1112d6804654758afabf8a98 by llvm-dev
[CostModel][X86] Add some select shuffle costs tests for D87884
The file was addedllvm/test/Analysis/CostModel/X86/shuffle-select.ll
Commit 2e2bcee05876305cb9b21b6b5e8e48dc6da58ede by clementval
[mlir][openacc] Add attributes to parallel op async, wait and self clauses

Add attributes for the async, wait and self clauses. These clauses can be present without
values. When this is the case they are modelled with an attribute instead of operands.

Reviewed By: ftynse

Differential Revision: https://reviews.llvm.org/D87991
The file was modifiedmlir/test/Dialect/OpenACC/ops.mlir
The file was modifiedmlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
Commit 5249e6f24876ea577de51ad2f9166a2e466171b9 by aeubanks
[LoopSimplifyCFG][NewPM] Rename simplify-cfg -> loop-simplifycfg

This matches the legacy PM name and makes all tests in
Transforms/LoopSimplifyCFG pass under NPM.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D87948
The file was modifiedllvm/test/Transforms/LoopSimplifyCFG/mssa_update.ll
The file was modifiedllvm/test/Transforms/LoopSimplifyCFG/lcssa.ll
The file was modifiedllvm/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll
The file was modifiedllvm/test/Transforms/LICM/hoist-deref-load.ll
The file was modifiedllvm/test/Transforms/LoopSimplifyCFG/phi_with_duplicating_inputs.ll
The file was modifiedllvm/test/Transforms/GVN/preserve-analysis.ll
The file was modifiedllvm/test/Transforms/LICM/hoist-bitcast-load.ll
The file was modifiedllvm/test/Transforms/LoopSimplifyCFG/update_parents.ll
The file was modifiedllvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-iteration.ll
The file was modifiedllvm/test/Transforms/LoopSimplifyCFG/live_block_marking.ll
The file was modifiedllvm/lib/Passes/PassRegistry.def
The file was modifiedllvm/test/Transforms/LoopSimplifyCFG/merge-header.ll
The file was modifiedllvm/test/Transforms/LoopSimplifyCFG/irreducible_cfg.ll
The file was modifiedllvm/test/Transforms/LoopSimplifyCFG/handle_dead_exits.ll
Commit 1372e23c7d4b25fd23689842246e66f70c949b46 by baptiste.saleil
[PowerPC] Add vector pair load/store instructions and vector pair register class

This patch adds support for the lxvp, lxvpx, plxvp, stxvp, stxvpx and pstxvp
instructions in the PowerPC backend. These instructions allow loading and
storing VSX register pairs. This patch also adds the VSRp register class
definition needed for these instructions.

Differential Revision: https://reviews.llvm.org/D84359
The file was modifiedllvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h
The file was modifiedllvm/lib/Target/PowerPC/PPCInstrPrefix.td
The file was modifiedllvm/test/MC/PowerPC/ppc64-encoding-ISA31.s
The file was modifiedllvm/lib/Target/PowerPC/PPCRegisterInfo.td
The file was modifiedllvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp
The file was modifiedllvm/lib/Target/PowerPC/PPCRegisterInfo.h
The file was modifiedllvm/utils/TableGen/CodeGenTarget.cpp
The file was modifiedllvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
The file was modifiedllvm/test/MC/Disassembler/PowerPC/ppc64-encoding-ISA31.txt
Commit 0a6860521eb8b8d5d2d205f50ea527033056af24 by grimar
[LLD][ELF][test] Fix CHECKs in map-file test

A repeated typo in lld/test/ELF/map-file.s prevented a number of checks from being executed.

CHECk-NEXT -> CHECK-NEXT
    ^             ^

After correcting the typo, a small adjustment was needed to match the size of the synthetic .comment section (which always contains "LLD 1.0" in the test environment).

Differential revision: https://reviews.llvm.org/D88023
The file was modifiedlld/test/ELF/map-file.s
Commit 0b15cb70d318255814c0614a978b6920ba075fa2 by Cyndy Ishida
[TextAPI] clean up auto usages in tests, NFC
The file was modifiedllvm/unittests/TextAPI/TextStubV4Tests.cpp
The file was modifiedllvm/unittests/TextAPI/TextStubHelpers.h
The file was modifiedllvm/unittests/TextAPI/TextStubV3Tests.cpp
Commit 96e52c13640ba60417ebd1d03cee79a2c0089308 by david.sherwood
[SVE][CodeGen] Mark ptrue/pfalse instructions as rematerializable
The file was modifiedllvm/lib/Target/AArch64/SVEInstrFormats.td
Commit 53f1748c131c8d7ff0bb5e5c77132780c5d1fbc7 by llvm-dev
ProfileSummary.cpp - use auto const& iterator in for-range loop to avoid copies. NFCI.
The file was modifiedllvm/lib/IR/ProfileSummary.cpp
Commit 604206b61cb948c01b438dd06b3b7bc837e99455 by llvm-dev
Fix Wdocumentation unknown parameter warnings. NFCI.
The file was modifiedllvm/include/llvm/Analysis/IRSimilarityIdentifier.h
Commit ce294ff8cddf110cefd5955cf30c575c7838b452 by llvm-dev
MachineCSE.cpp - use auto const& iterator in for-range loop to avoid copies. NFCI.
The file was modifiedllvm/lib/CodeGen/MachineCSE.cpp
Commit 474d527c28f4e88ffda7b82e93e351aec2602380 by ikudrin
[clang] Fix a misleading variable name. NFC.

The variable is true when frame pointers should be omitted in leaf
functions, not kept.

Differential Revision: https://reviews.llvm.org/D88021
The file was modifiedclang/lib/Driver/ToolChains/Clang.cpp
Commit f91f28c350df6815d37c521e8f3dc0641a3ca467 by raul
[Sema] Split special builtin type lookups into a separate function

In case further such cases appear in the future we've got a generic function to add them to.
Additionally changed the ObjC special case to check the language and the identifier builtin ID instead of the name.

Addresses the cleanup suggestion from D87917.

Reviewed By: rjmccall

Differential Revision: https://reviews.llvm.org/D87983
The file was modifiedclang/lib/Sema/SemaDecl.cpp
The file was modifiedclang/include/clang/Sema/Sema.h
The file was modifiedclang/lib/Sema/SemaLookup.cpp
Commit 3ddecfd220079cd37d2d08810c3940ffcde57953 by llvm-dev
SLPVectorizer.cpp - fix include ordering. NFCI.
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Commit 3ae07b2a33f5541b36913280564420aaa46a54f8 by llvm-dev
TargetPassConfig.cpp - use auto const& iterator in for-range loop to avoid copies. NFCI.
The file was modifiedllvm/lib/CodeGen/TargetPassConfig.cpp
Commit 742250bf62a92647d3462d1e0b75940bc0914fcb by momchil.velikov
[ARM][CMSE] Issue an error if passing arguments through memory across
security boundary

It was never supported and that part was accidentally omitted when
upstreaming D76518.

Differential Revision: https://reviews.llvm.org/D86478

Change-Id: If6ba9506eb0431c87a1d42a38aa60e47ce263039
The file was addedllvm/test/CodeGen/ARM/cmse-errors.ll
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp
Commit 024979b7b657d0946b791798994f070a24265cb8 by aeubanks
[ObjCARC][NewPM] Port objc-arc-contract to NPM

Similar to https://reviews.llvm.org/D86178.

This is a module pass instead of a function pass since
ARCRuntimeEntryPoints can lazily add function declarations.

Reviewed By: ahatanak

Differential Revision: https://reviews.llvm.org/D87806
The file was modifiedllvm/include/llvm/InitializePasses.h
The file was modifiedllvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp
The file was modifiedllvm/test/Transforms/ObjCARC/contract.ll
The file was modifiedllvm/include/llvm/Transforms/ObjCARC.h
The file was modifiedllvm/lib/Transforms/ObjCARC/ObjCARC.cpp
The file was modifiedllvm/lib/Passes/PassRegistry.def
Commit 3cbdfe424fec923b5ac1912742c62c22f856fb29 by flo
[SCEV] Add additional max BTC tests with loop guards.
The file was modifiedllvm/test/Analysis/ScalarEvolution/max-backedge-taken-count-guard-info.ll
Commit 6a0ed57a2259263d4f5923ff5c61850b8a731322 by llvm-dev
ImplicitNullChecks.cpp - use auto const& iterators in for-range loops to avoid copies. NFCI.
The file was modifiedllvm/lib/CodeGen/ImplicitNullChecks.cpp
Commit 46075e0b78c33be79c6c1ae5547a78ef87ddb374 by spatel
[SLP] simplify interface for gather(); NFC

The implementation of gather() should be reduced too,
but this change by itself makes things a little clearer:
we don't try to gather to a different type or
number-of-values than whatever is passed in as the value
list itself.
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Commit 6950db36d33d85d18e3241ab6c87494c05ebe0fb by tmsriram
The wrong placement of add pass with optimizations led to -funique-internal-linkage-names being disabled.

Fixed the placement of the MPM.addpass for UniqueInternalLinkageNames to make
it work correctly with -O2 and new pass manager. Updated the tests to
explicitly check O0 and O2.

Previously, the addPass was placed before BackendUtil.cpp#L1373 which is wrong
as MPM gets assigned at this point and any additions to the pass vector before
this is wrong. This change just moves it after MPM is assigned and places it at
a point where O0 and O0+ can share it.

Differential Revision: https://reviews.llvm.org/D87921
The file was modifiedclang/test/CodeGen/unique-internal-linkage-names.cpp
The file was modifiedclang/lib/CodeGen/BackendUtil.cpp
Commit 3b3b9ba1c7d89afe4909a42e2a795354bb79e062 by davelee.com
[lldb/Commands] Fix outdated `breakpoint command add` help string

Update the some examples in the help string for `breakpoint command add`.

Python breakpoint commands have different output than what's shown in the help string.

Notes:
  * Removed an example containing an inner function, as it seems more about a Python technique than about `command script add`
  * Updated `print x` to `print(x)` to be python 2/3 agnostic

Differential Revision: https://reviews.llvm.org/D87807
The file was modifiedlldb/source/Commands/CommandObjectBreakpointCommand.cpp
Commit b36bdfe5ca0c2b863248f327b03d41516b38dc11 by davelee.com
[cmake] Centralize LLVM_ENABLE_WARNINGS option

Configure default value of `LLVM_ENABLE_WARNINGS` in `HandleLLVMOptions.cmake`.

`LLVM_ENABLE_WARNINGS` is documented as ON by default, but `HandleLLVMOptions` assumes the default has been set somewhere else. If it has not been explicitly set, then `HandleLLVMOptions` implicitly uses OFF as a default.

This removes the various `option()` declarations in favor of a single declaration in `HandleLLVMOptions`. This will prevent the unwanted use of `-w` that is mentioned in a couple of the comments.

Reviewed By: DavidTruby, #libunwind, JDevlieghere, compnerd

Differential Revision: https://reviews.llvm.org/D87243
The file was modifiedflang/CMakeLists.txt
The file was modifiedclang/CMakeLists.txt
The file was modifiedllvm/CMakeLists.txt
The file was modifiedlibunwind/CMakeLists.txt
The file was modifiedllvm/cmake/modules/LLVMConfig.cmake.in
The file was modifiedllvm/cmake/modules/HandleLLVMOptions.cmake
The file was modifiedllvm/runtimes/CMakeLists.txt
Commit 005f826a0546eb11890b7bd36fea6b8b1c5e3fc4 by llvm-dev
[SLP] Use for-range loops across ValueLists. NFCI.

Also rename some existing loops that used a 'j' iterator to consistently use 'V'.
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Commit 83c2d10d3cae57f71e23193d62989725b9b9f2f2 by lebedev.ri
[NFC][SCEV] Add tests for @llvm.abs intrinsic
The file was addedllvm/test/Analysis/ScalarEvolution/abs-intrinsic.ll
Commit 1bb7ab8c4a324aa380bddfc75069e24c19e2bdd0 by lebedev.ri
[SCEV] Recognize @llvm.abs as smax(x, -x)

As per alive2 (ignoring undef):

----------------------------------------
define i32 @src(i32 %x, i1 %y) {
%0:
  %r = abs i32 %x, 0
  ret i32 %r
}
=>
define i32 @tgt(i32 %x, i1 %y) {
%0:
  %neg_x = mul i32 %x, 4294967295
  %r = smax i32 %x, %neg_x
  ret i32 %r
}
Transformation seems to be correct!

----------------------------------------
define i32 @src(i32 %x, i1 %y) {
%0:
  %r = abs i32 %x, 1
  ret i32 %r
}
=>
define i32 @tgt(i32 %x, i1 %y) {
%0:
  %neg_x = mul nsw i32 %x, 4294967295
  %r = smax i32 %x, %neg_x
  ret i32 %r
}
Transformation seems to be correct!
The file was modifiedllvm/test/Analysis/ScalarEvolution/abs-intrinsic.ll
The file was modifiedllvm/lib/Analysis/ScalarEvolution.cpp
Commit 0592de550f5c9ca9de44ed2c5c549f6a3b1c32b7 by lebedev.ri
[NFC][SCEV] Add tests for @llvm.*.sat intrinsics
The file was addedllvm/test/Analysis/ScalarEvolution/saturating-intrinsics.ll
Commit fedc9549d50d80f74169ecce4d0d0648a62249f0 by lebedev.ri
[SCEV] Recognize @llvm.usub.sat as `%x - (umin %x, %y)`

----------------------------------------
define i32 @src(i32 %x, i32 %y) {
%0:
  %r = usub_sat i32 %x, %y
  ret i32 %r
}
=>
define i32 @tgt(i32 %x, i32 %y) {
%0:
  %t0 = umin i32 %x, %y
  %r = sub nuw i32 %x, %t0
  ret i32 %r
}
Transformation seems to be correct!
The file was modifiedllvm/lib/Analysis/ScalarEvolution.cpp
The file was modifiedllvm/test/Analysis/ScalarEvolution/saturating-intrinsics.ll
Commit 64e2cb7e9605995d2efb625203cbd96db1404812 by lebedev.ri
[SCEV] Recognize @llvm.uadd.sat as `%y + umin(%x, (-1 - %y))`

----------------------------------------
define i32 @src(i32 %x, i32 %y) {
%0:
  %r = uadd_sat i32 %x, %y
  ret i32 %r
}
=>
define i32 @tgt(i32 %x, i32 %y) {
%0:
  %t0 = sub nsw nuw i32 4294967295, %y
  %t1 = umin i32 %x, %t0
  %r = add nuw i32 %t1, %y
  ret i32 %r
}
Transformation seems to be correct!

The alternative, naive, lowering could be the following,
although i don't think it's better,
thought it will likely be needed for sadd/ssub/*shl:

----------------------------------------
define i32 @src(i32 %x, i32 %y) {
%0:
  %r = uadd_sat i32 %x, %y
  ret i32 %r
}
=>
define i32 @tgt(i32 %x, i32 %y) {
%0:
  %t0 = zext i32 %x to i33
  %t1 = zext i32 %y to i33
  %t2 = add nuw i33 %t0, %t1
  %t3 = zext i32 4294967295 to i33
  %t4 = umin i33 %t2, %t3
  %r = trunc i33 %t4 to i32
  ret i32 %r
}
Transformation seems to be correct!
The file was modifiedllvm/lib/Analysis/ScalarEvolution.cpp
The file was modifiedllvm/test/Analysis/ScalarEvolution/saturating-intrinsics.ll
Commit 03111e5e7a8690300966a39f0aa2e4f2b4ec919a by tianshilei1992
[OpenMP] Protect unrecogonized CUDA error code

If an error code can not be recognized by cuGetErrorString, errStr remains null and causes crashing at DP() printing.
Protect this case.

Reviewed By: jhuber6, tianshilei1992

Differential Revision: https://reviews.llvm.org/D87980
The file was modifiedopenmp/libomptarget/plugins/cuda/src/rtl.cpp
Commit 1e6b240d7d336a36856268db5349468560e28a0e by spatel
[IRBuilder][VectorCombine] make and use a convenience function for unary shuffle; NFC

This reduces code duplication for common construct.
Follow-ups can use this in SLP, LoopVectorizer, and other passes.
The file was modifiedllvm/include/llvm/IR/IRBuilder.h
The file was modifiedllvm/lib/Transforms/Vectorize/VectorCombine.cpp
Commit a44238cb443f13c1e9fd42f6269f019d505ff5dd by spatel
[SLP] use unary shuffle creator to reduce code duplication; NFC
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Commit d8540427419ec0c4b9bc02f432ef39c01898e826 by daltenty
[AIX][Clang][Driver] Add handling of shared option

Reviewed By: jasonliu

Differential Revision: https://reviews.llvm.org/D87914
The file was modifiedclang/lib/Driver/ToolChains/AIX.cpp
The file was modifiedclang/test/Driver/aix-ld.c
Commit 746a2c3775658c4485a8e71a7d46ee55c30615b8 by aeubanks
[ObjCARC] Initialize return value

Mistakenly removed initialization of `Changed` in https://reviews.llvm.org/D87806.
The file was modifiedllvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp
Commit f87ceb63eb011e5cd653218af619097b58bf568f by zhuoryin
[AMDGPU] Adding mutex to guard lld::elf::link interface use

check-mlir target run tests simultaneously with multiple threads. This caused multiple threads to invoke the `lld::elf::link()` interface at the same time. Since the interface does not have a thread-safe implementation, add a metex to prevent multi-threaded access.

I discovered this by looking the the failure stack trace. lld/ELF/symbolTable.cpp, SymbolTable::insert() hit into an assert with related to Epoch Trackers. The root cause is to due to there is no protection around the symMap (update) which is implemented in non-thread safe data structure: denseMap.

Differential Revision: https://reviews.llvm.org/D88038
The file was modifiedmlir/tools/mlir-rocm-runner/mlir-rocm-runner.cpp
Commit 3b3a16548568f5b6c4146ca5129eb6af5000e4ff by rnk
[MS] On x86_32, pass overaligned, non-copyable arguments indirectly

This updates the C++ ABI argument classification code to use the logic
from D72114, fixing an ABI incompatibility with MSVC.

Part of PR44395.

Differential Revision: https://reviews.llvm.org/D87923
The file was modifiedclang/test/CodeGenCXX/inalloca-overaligned.cpp
The file was modifiedclang/lib/CodeGen/MicrosoftCXXABI.cpp
Commit e8951474b1940bd81bc3bac8d506e08880ee35ea by Stanislav.Mekhanoshin
[AMDGPU] Fixed typo in intrinsic comment. NFC.
The file was modifiedllvm/include/llvm/IR/IntrinsicsAMDGPU.td