1. [LIBOMPTARGET]Do not try to optimize bases for the next parameters. (details)
  2. [InstCombine] usub.sat(a, b) + b => umax(a, b) (PR42178) (details)
  3. [SROA] Improve handleling of assumes bundles by SROA (details)
  4. [ObjCARCOpt] Port objc-arc to NPM (details)
  5. [LLD][PowerPC] Remove redundant file write out in the test cases (details)
  6. [Attributes] Add a method to check if an Attribute has AttrKind None. Use instead of hasAttribute(Attribute::None) (details)
Commit 6aa7228a629d81af78d4f701b7defb701f4b9283 by a.bataev
[LIBOMPTARGET]Do not try to optimize bases for the next parameters.

PrivateArgumentManager shall immediately allocate firstprivates if they
are bases for the next parameters and the next paramaters rely on the
fact that the base musst be allocated already.

Differential Revision:
The file was modifiedopenmp/libomptarget/src/omptarget.cpp (diff)
The file was addedopenmp/libomptarget/test/mapping/lambda_mapping.cpp
Commit ffe05dd12593f979f235cd34fd467a4c30e051f8 by nikita.ppv
[InstCombine] usub.sat(a, b) + b => umax(a, b) (PR42178)

Fixes by folding
usub.sat(a, b) + b to umax(a, b). The backend will expand umax
back to usubsat if that is profitable.

We may also want to handle uadd.sat(a, b) - b in the future.

Differential Revision:
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp (diff)
The file was modifiedllvm/test/Transforms/InstCombine/saturating-add-sub.ll (diff)
Commit 6d3657417e0c75611fc52c4adefa0cdf27e89fb1 by tyker
[SROA] Improve handleling of assumes bundles by SROA

This patch fixes this crash
And gives SROA the ability to remove assumes if it allows promoting an alloca to register
Without removing assumes when it can't promote to register.

Reviewed By: jdoerfert

Differential Revision:
The file was modifiedllvm/lib/Transforms/Scalar/SROA.cpp (diff)
The file was modifiedllvm/test/Transforms/SROA/ignore-droppable.ll (diff)
The file was modifiedllvm/lib/IR/Value.cpp (diff)
The file was modifiedllvm/include/llvm/IR/Value.h (diff)
The file was addedllvm/test/Transforms/SROA/assume.ll
Commit cfde93e5d6bebf7b63343ca0a15673a0ff3fa134 by aeubanks
[ObjCARCOpt] Port objc-arc to NPM

Since doInitialization() in the legacy pass modifies the module, the NPM
pass is a Module pass.

Reviewed By: ahatanak, ychen

Differential Revision:
The file was modifiedllvm/lib/Passes/LLVMBuild.txt (diff)
The file was modifiedllvm/test/Transforms/ObjCARC/basic.ll (diff)
The file was modifiedllvm/include/llvm/Transforms/ObjCARC.h (diff)
The file was modifiedllvm/lib/Transforms/ObjCARC/ObjCARC.cpp (diff)
The file was modifiedllvm/include/llvm/InitializePasses.h (diff)
The file was modifiedllvm/lib/Passes/PassRegistry.def (diff)
The file was modifiedllvm/utils/gn/secondary/llvm/lib/Passes/ (diff)
The file was modifiedllvm/lib/Passes/PassBuilder.cpp (diff)
The file was modifiedllvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp (diff)
Commit 0becc27ebfec02c3d667785e55b366bc1a5336a7 by wei.huang
[LLD][PowerPC] Remove redundant file write out in the test cases

Fix the time out test failure on lld-x86_64-freebsd build bot.

Peer reviewed by: stefanp, nemanjai
The file was modifiedlld/test/ELF/ppc64-pcrel-long-branch-error.s (diff)
The file was modifiedlld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s (diff)
Commit aab90384a3a7a475bc1a969405d112c886ce8077 by craig.topper
[Attributes] Add a method to check if an Attribute has AttrKind None. Use instead of hasAttribute(Attribute::None)

There's a special case in hasAttribute for None when pImpl is null. If pImpl is not null we dispatch to pImpl->hasAttribute which will always return false for Attribute::None.

So if we just want to check for None its sufficient to just check that pImpl is null. Which can even be done inline.

This patch adds a helper for that case which I hope will speed up our getSubtargetImpl implementations.

Differential Revision:
The file was modifiedllvm/lib/Target/Sparc/SparcTargetMachine.cpp (diff)
The file was modifiedllvm/lib/Target/SystemZ/SystemZTargetMachine.cpp (diff)
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp (diff)
The file was modifiedllvm/lib/Target/PowerPC/PPCTargetMachine.cpp (diff)
The file was modifiedllvm/lib/Target/ARM/ARMTargetMachine.cpp (diff)
The file was modifiedllvm/lib/Target/X86/X86TargetMachine.cpp (diff)
The file was modifiedllvm/lib/Target/Hexagon/HexagonTargetMachine.cpp (diff)
The file was modifiedllvm/lib/Target/Mips/MipsTargetMachine.cpp (diff)
The file was modifiedllvm/lib/Transforms/IPO/LowerTypeTests.cpp (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64TargetMachine.cpp (diff)
The file was modifiedllvm/lib/IR/AttributeImpl.h (diff)
The file was modifiedllvm/include/llvm/IR/Attributes.h (diff)
The file was modifiedllvm/lib/Transforms/IPO/WholeProgramDevirt.cpp (diff)
The file was modifiedllvm/lib/CodeGen/XRayInstrumentation.cpp (diff)
The file was modifiedllvm/lib/Target/RISCV/RISCVTargetMachine.cpp (diff)
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp (diff)
The file was modifiedllvm/lib/IR/Attributes.cpp (diff)