[SLP] Fix for PR30626: Compiler crash inside SLP Vectorizer.
authorAlexey Bataev <a.bataev@hotmail.com>
Thu, 27 Oct 2016 12:02:28 +0000 (12:02 +0000)
committerAlexey Bataev <a.bataev@hotmail.com>
Thu, 27 Oct 2016 12:02:28 +0000 (12:02 +0000)
commit46c0278e7d0937431173c9d75f7e60879b004c20
treeac46bdb221429eb99e3d209e3963147ca79732da
parent447d1a19860bd8af26275a21ec67ce5c70f533d5
[SLP] Fix for PR30626: Compiler crash inside SLP Vectorizer.

After successfull horizontal reduction vectorization attempt for PHI node
vectorizer tries to update root binary op by combining vectorized tree
and the ReductionPHI node. But during vectorization this ReductionPHI
can be vectorized itself and replaced by the `undef` value, while the
instruction itself is marked for deletion. This 'marked for deletion'
PHI node then can be used in new binary operation, causing "Use still
stuck around after Def is destroyed" crash upon PHI node deletion.

Also the test is fixed to make it perform actual testing.

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

llvm-svn: 285286
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/X86/horizontal.ll