[all-commits] [llvm/llvm-project] 27e4af: [DSE] Don't remove nounwind invokes

Heejin Ahn via All-commits all-commits at lists.llvm.org
Tue Jun 21 11:54:25 PDT 2022

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 27e4afcea71818ef2ceb0be109321b9595a8fba2
  Author: Heejin Ahn <aheejin at gmail.com>
  Date:   2022-06-21 (Tue, 21 Jun 2022)

  Changed paths:
    M llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
    A llvm/test/Transforms/DeadStoreElimination/nounwind-invoke.ll

  Log Message:
  [DSE] Don't remove nounwind invokes

For non-mem-intrinsic and non-lifetime `CallBase`s, the current
`isRemovable` function only checks if the `CallBase` 1. has no uses 2.
will return 3. does not throw:

But we should also exclude invokes even in case they don't throw,
because they are terminators and thus cannot be removed. While it
doesn't seem to make much sense for `invoke`s to have an `nounwind`
target, this kind of code can be generated and is also valid bitcode.

Reviewed By: nikic

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

More information about the All-commits mailing list