[DCE] Don't remove non-willreturn calls
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 18 Feb 2021 21:29:19 +0000 (22:29 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 19 Feb 2021 11:35:40 +0000 (12:35 +0100)
commit2f17ed294fcd8cde505b93c9c5bbab06ba59051c
treee3bad6fe386edcbee8a70a58f4ed25c6fb018965
parent529f71811b0475995f2d9cf766f18d897eec574c
[DCE] Don't remove non-willreturn calls

In both ADCE and BDCE (via DemandedBits) we should not remove
instructions that are not guaranteed to return. This issue was
pointed out by fhahn in the recent llvm-dev thread.

Differential Revision: https://reviews.llvm.org/D96993
llvm/lib/Analysis/DemandedBits.cpp
llvm/lib/Transforms/Scalar/ADCE.cpp
llvm/test/Feature/OperandBundles/adce.ll
llvm/test/LTO/X86/parallel.ll
llvm/test/Transforms/ADCE/dce_pure_call.ll
llvm/test/Transforms/ADCE/willreturn.ll
llvm/test/Transforms/BDCE/dce-pure.ll
llvm/test/Transforms/BDCE/dead-void-ro.ll
llvm/test/Transforms/BDCE/willreturn.ll
llvm/test/tools/gold/X86/parallel.ll