Changes

Summary

  1. Unconditionally pre-define CMAKE_ARGS in sanitizer bot. (details)
  2. Revert "Respect jobs property for LIT tests in UnifiedTreeBuilder." (details)
Commit 43077c5c525b97ab536f267fc72b3a54cf52014d by 31459023+hctim
Unconditionally pre-define CMAKE_ARGS in sanitizer bot.

Fixes the following bug created by
110a39811261ab69894fe77a69813f08a8c1f1a9:
> buildbot_cmake.sh: line 38: CMAKE_ARGS: unbound variable
The file was modifiedzorg/buildbot/builders/sanitizers/buildbot_cmake.sh (diff)
Commit a9e099490c78b719619b983e7873fde436635218 by gkistanova
Revert "Respect jobs property for LIT tests in UnifiedTreeBuilder."

This shall be properly handled in LitTestCommand instead.
Similar to how the jobs are handled for NinjaCommand, for example.

This reverts commit 13c3c22377e39033ff843659a8b49be278a20086.
The file was modifiedzorg/buildbot/builders/UnifiedTreeBuilder.py (diff)

Summary

  1. [Orc][examples] Add lit ToolSubst for LLJITWithRemoteDebugging example (details)
  2. [PowerPC] Fix use check of swap-reduction (details)
  3. [CGCall] Annotate `this` argument with alignment (details)
  4. [Coroutines, test] Fix use of var defined in CHECK-NOT (details)
  5. [clang, test] Fix use of undef FileCheck var (details)
  6. [PowerPC, test] Fix use of undef FileCheck var (details)
  7. [NFC][InstCombine] Add sub-of-sub tests with constant expressions (details)
  8. [InstCombine] Restrict "C-(X+C2) --> (C-C2)-X" fold to immediate constants (details)
  9. Reland [InstCombine] Fold `((X - Y) - Z)` to `X - (Y + Z)` (PR49858) (details)
  10. [Orc][examples] Add missing FileCheck for lit test and polish output (details)
  11. [OpenCL] Add as_size/ptrdiff/intptr/uintptr_t operators (details)
  12. [clang][Syntax] Handle invalid source range in expandedTokens. (details)
  13. [CMake] try creating symlink first on windows (details)
  14. Fix crash when an invalid URI is parsed and error handling is attempted (details)
  15. [X86] Add BZHI test case for PR48768 (details)
  16. [analyzer] Fix body farm for Obj-C++ properties (details)
  17. [Statepoint Lowering] Allow other than N byte sized types in deopt bundle (details)
  18. [-Wcompletion-handler] Don't recognize init methods as conventional (details)
  19. [X86] Improve optimizeCompareInstr for signed comparisons after BZHI instructions (details)
  20. [analyzer][NFC] Add tests for extents (details)
  21. [clang] Speedup line offset mapping computation (details)
  22. [Clang] Extend test coverage for -f[no-]finite-loops options. (details)
  23. [X86] Add AND/OR/XOR signed-comparison overflow test cases for PR48768 (details)
  24. [mlir] Add "mask" operand to vector.transfer_read/write. (details)
  25. [InstCombine] add tests for not-of-min/max; NFC (details)
  26. [InstCombine] move abs transform to helper function; NFC (details)
  27. [clang] Check AuxTarget exists when creating target in CompilerInstance (details)
  28. [flang][driver] Add support for `-cpp/-nocpp` (details)
  29. [AMDGPU] SIFoldOperands: don't dump extra '\n' after MachineInstr. NFC. (details)
  30. [flang][driver] Fix `-fdebug-dump-provenance` (details)
  31. [SLP]Avoid multiple attempts to vectorize CmpInsts. (details)
  32. [X86] Improve optimizeCompareInstr for signed comparisons after AND/OR/XOR instructions (details)
Commit 030ac786d4ff3540b414172810f0a92ece3ca81c by Stefan Gränitz
[Orc][examples] Add lit ToolSubst for LLJITWithRemoteDebugging example

The test case added in 258f055ed936 was lacking two important details for the test infrastructure. ae217bf1f327 added the executable to LLVM_TEST_DEPENDS in CMake to make sure the exectubale gets built before we run the test suite. This patch adds a ToolSubst for the executable in LIT, which replaces the tool invokation in the RUN line with an absolute path. It makes sure we don't run accidentally run some other tool from the user's PATH. The test works without it in case LLVM's main binary directory happens to be the working directory (which is default apparently). Configurations that don't build the examples ignore failures for this ToolSubst (and won't run the test).

Reviewed By: echristo

Differential Revision: https://reviews.llvm.org/D99931
The file was modifiedllvm/test/lit.cfg.py (diff)
Commit 033c9c25520c4aa2825e3e162f88f48e189794db by qiucofan
[PowerPC] Fix use check of swap-reduction

This will fix swap-reduction in DAGISel for cases where COPY_TO_REGCLASS
has multiple uses.
The file was modifiedllvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp (diff)
The file was modifiedllvm/test/CodeGen/PowerPC/swap-reduction.ll (diff)
Commit 0aa0458f1429372038ca6a4edc7e94c96cd9a753 by lebedev.ri
[CGCall] Annotate `this` argument with alignment

As it is being noted in D99249, lack of alignment information on `this`
has been preventing LICM from happening.

For some time now, lack of alignment attribute does *not* imply
natural alignment, but an alignment of `1`.
Also, we used to treat dereferenceable as implying alignment,
but we no longer do, so it's a bugfix.

Differential Revision: https://reviews.llvm.org/D99790
The file was modifiedclang/test/CodeGenCoroutines/coro-symmetric-transfer-01.cpp (diff)
The file was modifiedclang/test/CodeGen/attr-nomerge.cpp (diff)
The file was modifiedclang/test/OpenMP/irbuilder_for_iterator.cpp (diff)
The file was modifiedclang/test/OpenMP/irbuilder_for_rangefor.cpp (diff)
The file was modifiedclang/test/CodeGenCXX/this-nonnull.cpp (diff)
The file was modifiedclang/test/utils/update_cc_test_checks/Inputs/basic-cplusplus.cpp.expected (diff)
The file was modifiedclang/test/CodeGenObjCXX/objc-struct-cxx-abi.mm (diff)
The file was modifiedclang/lib/CodeGen/CGCall.cpp (diff)
Commit b62c62c51973f82713477ecba28d0a4bd7c6ee6a by thomasp
[Coroutines, test] Fix use of var defined in CHECK-NOT

LLVM test Transforms/Coroutine/coro-split-sink-lifetime-O2.ll tries to
check for the absence of a sequence of instructions with several
CHECK-NOT with one of those directives using a variable defined in
another. However CHECK-NOT are checked independently so that is using a
variable defined in a pattern that should not occur in the input.

This commit simplifies the CHECK-NOT block to only check for the
presence of any lifetime start marker since that is effectively what
the test was testing at the moment.

Reviewed By: junparser

Differential Revision: https://reviews.llvm.org/D99856
The file was modifiedllvm/test/Transforms/Coroutines/coro-split-sink-lifetime-02.ll (diff)
Commit e018698bec363637f0da25b68da9ba8c3192d1cb by thomasp
[clang, test] Fix use of undef FileCheck var

Clang test CodeGen/libcalls.c contains CHECK-NOT directives using a
variable defined in a CHECK directive with a different prefix never
enabled together, therefore causing the variable to be undefined in that
CHECK-NOT.

The intent of the test is to check that some declaration do not have the
same attribute as when compiling the test without -fmath-errno. This
commits instead changes all CHECK-NOT to CHECK directive, checking that
they all use the same attribute. It also adds an extra CHECK for that
prefix to check the expected attributes these functions should have when
compiling with -fmath-errno.

Reviewed By: rjmccall

Differential Revision: https://reviews.llvm.org/D99898
The file was modifiedclang/test/CodeGen/libcalls.c (diff)
Commit 73a7d451a2ca7a90fb09b2cd934948ae30cc72c3 by thomasp
[PowerPC, test] Fix use of undef FileCheck var

LLVM test CodeGen/PowerPC/ppc-disable-non-volatile-cr.ll tries to check
for the absence of a sequence of instructions with several CHECK-NOT
with one of those directives using a variable defined in another.
However CHECK-NOT are checked independently so that is using a variable
defined in a pattern that should not occur in the input.

This commit changes occurence of the variable for the regex used in its
definition, thereby making each CHECK-NOT independent.

Reviewed By: NeHuang, nemanjai

Differential Revision: https://reviews.llvm.org/D99880
The file was modifiedllvm/test/CodeGen/PowerPC/ppc-disable-non-volatile-cr.ll (diff)
Commit c972e2d1c29fc248e47f1c502f90472a1c26b256 by lebedev.ri
[NFC][InstCombine] Add sub-of-sub tests with constant expressions

These would cause endless combine loop after 31d219d2997fed1b7dc97e0adf170d5aaf65883e.
The file was modifiedllvm/test/Transforms/InstCombine/sub-from-sub.ll (diff)
Commit 93d1d94b745b940c9ad0adf20322eb16ed624ef3 by lebedev.ri
[InstCombine] Restrict "C-(X+C2) --> (C-C2)-X" fold to immediate constants

I.e., if any/all of the consants is an expression, don't do it.
Since those constants won't reduce into an immediate,
but would be left as an constant expression, they could cause
endless combine loops after 31d219d2997fed1b7dc97e0adf170d5aaf65883e
added an inverse transformation.
The file was modifiedllvm/test/Transforms/InstCombine/sub-from-sub.ll (diff)
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp (diff)
Commit 2829094a8e252d04f13aabdf6f416c42a06af695 by lebedev.ri
Reland [InstCombine] Fold `((X - Y) - Z)` to `X - (Y + Z)` (PR49858)

This reverts commit a547b4e26b311e417cd51100e379693f51a3f448,
relanding commit 31d219d2997fed1b7dc97e0adf170d5aaf65883e,
which was reverted because there was a conflicting inverse transform,
which was causing an endless combine loop, which has now been adjusted.

Original commit message:

https://alive2.llvm.org/ce/z/67w-wQ

We prefer `add`s over `sub`, and this particular xform
allows further folds to happen:

Fixes https://bugs.llvm.org/show_bug.cgi?id=49858
The file was modifiedllvm/test/Transforms/InstCombine/sub-from-sub.ll (diff)
The file was modifiedclang/test/CodeGen/builtins-ppc-quadword-noi128.c (diff)
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp (diff)
The file was modifiedllvm/test/Transforms/InstCombine/abs-1.ll (diff)
Commit 792ee5be36926bca22291cc93595cf65d0cd6985 by Stefan Gränitz
[Orc][examples] Add missing FileCheck for lit test and polish output
The file was modifiedllvm/examples/OrcV2Examples/LLJITWithRemoteDebugging/LLJITWithRemoteDebugging.cpp (diff)
The file was modifiedllvm/test/Examples/OrcV2Examples/lljit-with-remote-debugging.test (diff)
Commit 35bc7569f8ad8e76d36560386bbc45ca40716410 by sven.vanhaastregt
[OpenCL] Add as_size/ptrdiff/intptr/uintptr_t operators

size_t and friends are built-in scalar data types and s6.4.4.2 of the
OpenCL C Specification says the as_type() operator must be available
for these data types.

Differential Revision: https://reviews.llvm.org/D98959
The file was modifiedclang/test/SemaOpenCL/as_type.cl (diff)
The file was modifiedclang/lib/Headers/opencl-c-base.h (diff)
Commit cd824a48cccb000655498e2d52129adfda25f49b by usx
[clang][Syntax] Handle invalid source range in expandedTokens.

Differential Revision: https://reviews.llvm.org/D99934
The file was modifiedclang/lib/Tooling/Syntax/Tokens.cpp (diff)
Commit f37ea62e57b5e0e7b52102a2254288e205bfef89 by kbobyrev
[CMake] try creating symlink first on windows

//-E create_symlink//  is available on windows since CMake 3.13 (LLVM now uses 3.13.4)
It may needs administrator privileges or enabled developer mode (Windows 10)
See https://cmake.org/cmake/help/latest/release/3.13.html

Reviewed By: kbobyrev

Differential Revision: https://reviews.llvm.org/D99170
The file was modifiedllvm/cmake/modules/LLVMInstallSymlink.cmake (diff)
Commit 43637c0dfeebcf4a4fcbb331f1094662e8882430 by kadircet
Fix crash when an invalid URI is parsed and error handling is attempted

When you pass in a payload with an invalid URI in a build with assertions enabled, it will crash.
Consuming the error from the failed URI parse prevents the error.

The crash is caused by the [llvm::expected](https://llvm.org/doxygen/classllvm_1_1Expected.html) having protection around trying to deconstruct without consuming the error first.

Reviewed By: kadircet

Differential Revision: https://reviews.llvm.org/D99872
The file was modifiedclang-tools-extra/clangd/Protocol.cpp (diff)
Commit a7eb6b00e934befae9e8e49803ae6621b27be604 by llvm-dev
[X86] Add BZHI test case for PR48768

D94856 covered the BMI cases where we had existing tests, this adds a missing BZHI test case
The file was modifiedllvm/test/CodeGen/X86/bmi2.ll (diff)
Commit 4821c15691bab9efaef871c957a8ba73697cdda9 by vsavchenko
[analyzer] Fix body farm for Obj-C++ properties

When property is declared in a superclass (or in a protocol),
it still can be of CXXRecord type and Sema could've already
generated a body for us.  This patch joins two branches and
two ways of acquiring IVar in order to reuse the existing code.
And prevent us from generating l-value to r-value casts for
C++ types.

rdar://67416721

Differential Revision: https://reviews.llvm.org/D99194
The file was modifiedclang/test/Analysis/properties.mm (diff)
The file was modifiedclang/lib/Analysis/BodyFarm.cpp (diff)
Commit 3e738afae4b5994b3f5e4fc6f7249083fc470df5 by yrouban
[Statepoint Lowering] Allow other than N byte sized types in deopt bundle

I do not see any bit-width restriction from the point of the
LLVM Lang Ref - Operand Bundles on the types of the deopt bundle
operands. Statepoint Lowering seems to be able to work with any
types.
This patch relaxes the two related assertions and adds a new test
for this change.

Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D100006
The file was modifiedllvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp (diff)
The file was addedllvm/test/CodeGen/X86/statepoint-spill-slot-size-promotion.ll
Commit 77f1e096e8a0a0f37a4c5f8a0bacc7c60f44f0a1 by vsavchenko
[-Wcompletion-handler] Don't recognize init methods as conventional

rdar://75704162

Differential Revision: https://reviews.llvm.org/D99601
The file was modifiedclang/test/SemaObjC/warn-called-once.m (diff)
The file was modifiedclang/lib/Analysis/CalledOnceCheck.cpp (diff)
Commit 583258723fe22cbb8b10d4a21b50a486b2df59ed by llvm-dev
[X86] Improve optimizeCompareInstr for signed comparisons after BZHI instructions

Extend D94856 to handle 'bzhi' instructions as well
The file was modifiedllvm/lib/Target/X86/X86InstrInfo.cpp (diff)
The file was modifiedllvm/test/CodeGen/X86/bmi2.ll (diff)
Commit f0e102c1a39f0f7e9e309b27916533b8fefd9be7 by balazsbenics
[analyzer][NFC] Add tests for extents

If we allocate memory, the extent of the MemRegion will be the symbolic
value of the size parameter. This way, if that symbol gets constrained,
the extent will be also constrained.

This test demonstrates that the extent is indeed the same symbol.

Reviewed By: NoQ

Differential Revision: https://reviews.llvm.org/D99959
The file was modifiedclang/test/Analysis/malloc.c (diff)
Commit 6951b72334bbe4c189c71751edc1e361d7b5632c by sguelton
[clang] Speedup line offset mapping computation

Clang spends a decent amount of time in the LineOffsetMapping::get(...)
function. This function used to be vectorized (through SSE2) then the
optimization got dropped because the sequential version was on-par performance
wise.

This provides an optimization of the sequential version that works on a word at
a time, using (documented) bithacks to provide a portable vectorization.

When preprocessing the sqlite amalgamation, this yields a sweet 3% speedup.

Differential Revision: https://reviews.llvm.org/D99409
The file was modifiedllvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test (diff)
The file was modifiedclang/lib/Basic/SourceManager.cpp (diff)
Commit 7ca4dd82175c9571e8251dfcd452b9ba0fb59280 by flo
[Clang] Extend test coverage for -f[no-]finite-loops options.

Extend test coverage by checking various standard versions with
-f[no-]finite-loops. Suggested as part of D96418.
The file was modifiedclang/test/CodeGenCXX/attr-mustprogress.cpp (diff)
The file was modifiedclang/test/CodeGen/attr-mustprogress.c (diff)
Commit c0ef93bec85a8847b51d91d2a6470af903e1ec9a by llvm-dev
[X86] Add AND/OR/XOR signed-comparison overflow test cases for PR48768

D94856 covered the BMI cases where we had existing tests, this adds missing AND/OR/XOR test cases
The file was addedllvm/test/CodeGen/X86/or-with-overflow.ll
The file was addedllvm/test/CodeGen/X86/and-with-overflow.ll
The file was addedllvm/test/CodeGen/X86/xor-with-overflow.ll
Commit 65a3f289397fd7d6cfcb4ddfdf324e37cf90cad7 by springerm
[mlir] Add "mask" operand to vector.transfer_read/write.

Also factors out out-of-bounds mask generation from vector.transfer_read/write into a new MaterializeTransferMask pattern.

Differential Revision: https://reviews.llvm.org/D100001
The file was modifiedmlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVMPass.cpp (diff)
The file was modifiedmlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp (diff)
The file was modifiedmlir/lib/Conversion/VectorToROCDL/VectorToROCDL.cpp (diff)
The file was modifiedmlir/lib/Conversion/VectorToSCF/VectorToSCF.cpp (diff)
The file was modifiedmlir/test/Dialect/Vector/ops.mlir (diff)
The file was modifiedmlir/include/mlir/Conversion/VectorToLLVM/ConvertVectorToLLVM.h (diff)
The file was modifiedmlir/include/mlir/Dialect/Vector/VectorOps.td (diff)
The file was modifiedmlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir (diff)
The file was modifiedmlir/test/Conversion/VectorToLLVM/vector-mask-to-llvm.mlir (diff)
The file was modifiedmlir/include/mlir/Dialect/Vector/VectorOps.h (diff)
The file was modifiedmlir/lib/Dialect/Vector/VectorTransforms.cpp (diff)
The file was modifiedmlir/lib/Dialect/Vector/VectorOps.cpp (diff)
The file was modifiedmlir/test/Integration/Dialect/Vector/CPU/test-transfer-read.mlir (diff)
Commit e571e56ae839e8f672eeb57f60581dac12b0688d by spatel
[InstCombine] add tests for not-of-min/max; NFC
The file was modifiedllvm/test/Transforms/InstCombine/minmax-intrinsics.ll (diff)
Commit 0333ed8e0c3763e50ec0c43e289967d407c14786 by spatel
[InstCombine] move abs transform to helper function; NFC

The swap of the operands can affect later transforms that
are expecting a constant as operand 1. I don't think we
can trigger a bug with the current code, but I hit that
problem while drafting a new transform for min/max intrinsics.
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp (diff)
Commit fc1117df5b875b922ec4d4417404b26abaceaf7b by ty1208chiang
[clang] Check AuxTarget exists when creating target in CompilerInstance

D97493 separate target creation out to a single function
`CompilerInstance::createTarget`. However, it would overwrite AuxTarget
even if it has been set.
As @kadircet recommended in D98128, this patch check the existence of
AuxTarget and not overwrite it when it has been set.

Reviewed By: kadircet

Differential Revision: https://reviews.llvm.org/D100024
The file was modifiedclang/lib/Frontend/CompilerInstance.cpp (diff)
Commit b83a4450c216879d76d78c21a2a0b864fdc2eb3d by andrzej.warzynski
[flang][driver] Add support for `-cpp/-nocpp`

This patch adds support for the `-cpp` and `-nocpp` flags. The
implemented semantics match f18 (i.e. the "throwaway" driver), but are
different to gfortran. In Flang the preprocessor is always run. Instead,
`-cpp/-nocpp` are used to control whether predefined and command-line
preprocessor macro definitions are enabled or not. In practice this is
sufficient to model gfortran`s `-cpp/-nocpp`.

In the absence of `-cpp/-nocpp`, the driver will use the extension of
the input file to decide whether to include the standard macro
predefinitions. gfortran's documentation [1] was used to decide which
file extension to use for this.

The logic mentioned above was added in FrontendAction::BeginSourceFile.
That's relatively late in the driver set-up, but this roughly where the
name of the input file becomes available. The logic for deciding between
fixed and free form works in a similar way and was also moved to
FrontendAction::BeginSourceFile for consistency (and to reduce
code-duplication).

The `-cpp/-nocpp` flags are respected also when the input is read from
stdin. This is different to:
   * gfortran (behaves as if `-cpp` was used)
   * f18 (behaves as if `-nocpp` was used)

Starting with this patch, file extensions are significant and some test
files had to be renamed to reflect that. Where possible, preprocessor
tests were updated so that they can be shared between `f18` and
`flang-new`. This was implemented on top of adding new test for
`-cpp/-nocpp`.

[1] https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html

Reviewed By: kiranchandramohan

Differential Revision: https://reviews.llvm.org/D99292
The file was modifiedflang/lib/Frontend/CompilerInstance.cpp (diff)
The file was removedflang/test/Driver/macro-multiline.f90
The file was removedflang/test/Driver/macro-def-undef.f90
The file was addedflang/test/Driver/cpp-nocpp-command-line-macro.f90
The file was modifiedflang/include/flang/Frontend/CompilerInvocation.h (diff)
The file was removedflang/test/Driver/predefined-macros-compiler-version.f90
The file was modifiedflang/include/flang/Frontend/PreprocessorOptions.h (diff)
The file was addedflang/test/Driver/cpp-nocpp-predefined-macro.F90
The file was addedflang/test/Driver/macro-multiline.F90
The file was addedflang/test/Driver/predefined-macros-compiler-version.F90
The file was modifiedclang/lib/Driver/ToolChains/Flang.cpp (diff)
The file was modifiedflang/include/flang/Frontend/FrontendOptions.h (diff)
The file was modifiedflang/test/Driver/driver-help-hidden.f90 (diff)
The file was modifiedflang/lib/Frontend/CompilerInvocation.cpp (diff)
The file was modifiedflang/test/Driver/driver-help.f90 (diff)
The file was addedflang/test/Driver/macro-def-undef.F90
The file was modifiedclang/include/clang/Driver/Options.td (diff)
The file was modifiedflang/lib/Frontend/FrontendAction.cpp (diff)
The file was modifiedflang/lib/Frontend/FrontendActions.cpp (diff)
The file was modifiedflang/lib/Frontend/FrontendOptions.cpp (diff)
The file was modifiedflang/test/Driver/input-from-stdin.f90 (diff)
Commit bf6cab6f07e1db2329c36b5d8009bf4b16d2761c by jay.foad
[AMDGPU] SIFoldOperands: don't dump extra '\n' after MachineInstr. NFC.
The file was modifiedllvm/lib/Target/AMDGPU/SIFoldOperands.cpp (diff)
Commit 85b86c6f43ab50ba70571ed49da7e81f7d52ffd2 by andrzej.warzynski
[flang][driver] Fix `-fdebug-dump-provenance`

The -fdebug-dump-provenance flag is meant to be used with
needProvenanceRangeToCharBlockMappings set to true. This way, extra
mapping is generated that allows e.g. IDEs to retrieve symbol's scope
(offset into cooked character stream) based on symbol's source code
location. This patch makes sure that this option is set when using
-fdebug-dump-provenance.

With this patch, the implementation of  -fdebug-dump-provenance in
`flang-new -fc1` becomes consistent with `f18`. The corresponding LIT
test is updated so that it can be shared with `f18`. I refined it a bit
so that:
  * it becomes a frontend-only test
  * it's stricter about the expected output

Differential Revision: https://reviews.llvm.org/D98847
The file was modifiedflang/test/Driver/debug-provenance.f90 (diff)
The file was modifiedflang/include/flang/Frontend/FrontendOptions.h (diff)
The file was modifiedflang/lib/Frontend/CompilerInvocation.cpp (diff)
Commit a78e86e6beb2d62196fa42be9f4a2994823f71f3 by a.bataev
[SLP]Avoid multiple attempts to vectorize CmpInsts.

No need to lookup through and/or try to vectorize operands of the
CmpInst instructions during attempts to find/vectorize min/max
reductions. Compiler implements postanalysis of the CmpInsts so we can
skip extra attempts in tryToVectorizeHorReductionOrInstOperands and save
compile time.

Differential Revision: https://reviews.llvm.org/D99950
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp (diff)
Commit 302e7480655b0d1c1a3a629b4ef446bf77dcb01a by llvm-dev
[X86] Improve optimizeCompareInstr for signed comparisons after AND/OR/XOR instructions

Extend D94856 to handle 'and', 'or' and 'xor' instructions as well

We still fail on many i8/i16 cases as the test and the logic-op are performed on different widths
The file was modifiedllvm/lib/Target/X86/X86InstrInfo.cpp (diff)
The file was modifiedllvm/test/CodeGen/X86/and-with-overflow.ll (diff)
The file was modifiedllvm/test/CodeGen/X86/or-with-overflow.ll (diff)
The file was modifiedllvm/test/CodeGen/X86/xor-with-overflow.ll (diff)