llvm-project/llvm
Craig Topper 257ce3871e [DAGCombiner][X86] Prevent visitSIGN_EXTEND from returning N when (sext (setcc)) already has the target desired type for the setcc
Summary:
If the setcc already has the target desired type we can reach the getSetCC/getSExtOrTrunc after the MatchingVecType check with the exact same types as the nodes we started with. This causes those causes VsetCC to be CSEd to N0 and the getSExtOrTrunc will CSE to N. When we return N, the caller will think that meant we called CombineTo and did our own worklist management. But that's not what happened. This prevents target hooks from being called for the node.

To fix this, I've now returned SDValue if the setcc is already the desired type. But to avoid some regressions in X86 I've had to disable one of the target combines that wasn't being reached before in the case of a (sext (setcc)). If we get vector widening legalization enabled that entire function will be deleted anyway so hopefully this is only for the short term.

Reviewers: RKSimon, spatel

Subscribers: llvm-commits

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

llvm-svn: 349137
2018-12-14 08:28:24 +00:00
..
benchmarks
bindings [bindings/go] Add Go bindings to LLVMGetIndices 2018-11-08 04:04:04 +00:00
cmake [CMake] llvm_codesign workaround for Xcode double-signing errors 2018-12-13 18:51:19 +00:00
docs [docs] Use correct ending quotes. 2018-12-12 17:59:01 +00:00
examples Fix build break from r347239 2018-11-19 18:51:11 +00:00
include [Object] Rename getRelrRelocationType to getRelativeRelocationType 2018-12-14 07:46:58 +00:00
lib [DAGCombiner][X86] Prevent visitSIGN_EXTEND from returning N when (sext (setcc)) already has the target desired type for the setcc 2018-12-14 08:28:24 +00:00
projects [projects] Use directory name for add_llvm_external_projects 2018-12-04 00:12:03 +00:00
resources
runtimes
test [ThinLTO] Fix test added in rL349076 2018-12-14 08:21:08 +00:00
tools [llvm-exegesis] Optimize ToProcess in dbScan 2018-12-14 08:27:35 +00:00
unittests [globalisel] Add GISelChangeObserver::changingInstr() 2018-12-12 23:48:13 +00:00
utils [gn build] Merge r348963 and r349076 2018-12-14 03:20:46 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [LLVM] Allow modulemap installation 2018-11-21 20:46:50 +00:00
CODE_OWNERS.TXT [CODE_OWNERS] Add myself as code owner for MinGW 2018-11-29 10:58:15 +00:00
CREDITS.TXT add Kang Zhang(shkzhang@cn.ibm.com) to the CREDITS.TXT 2018-11-25 02:56:49 +00:00
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT Adding Yvan as release test backup for Diana 2018-11-08 11:51:27 +00:00
configure
llvm.spec.in

README.txt

The LLVM Compiler Infrastructure
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.