OSDN Git Service

[DCE] Don't remove non-willreturn calls
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 18 Feb 2021 21:29:19 +0000 (22:29 +0100)
committerTom Stellard <tstellar@redhat.com>
Sat, 20 Feb 2021 00:32:07 +0000 (16:32 -0800)
commit8e9c2ad95eb5ab439b933d8c793957bc4d82e456
tree0959575d2f3e6a54b0111d589701e020482f3676
parentd1d7dc779a296001568d855bba7843a9eb94a585
[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

(cherry picked from commit 2f17ed294fcd8cde505b93c9c5bbab06ba59051c)
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