[Attributor] Make liveness "edge-based"
authorJohannes Doerfert <johannes@jdoerfert.de>
Tue, 29 Oct 2019 16:47:47 +0000 (11:47 -0500)
committerJohannes Doerfert <johannes@jdoerfert.de>
Thu, 31 Oct 2019 05:35:18 +0000 (00:35 -0500)
commitdac2d403a2de6c1be6b204e17deccb54728fc8ab
treeed5568fe91f03c26ddbe5889500cac41f4f48dda
parent9bbf2a15442e16dbccbbfacaed66d931116f8f31
[Attributor] Make liveness "edge-based"

Summary:
If control is transferred to a successor is the key question when it
comes to liveness. The new implementation puts that question in the
focus and thereby providing a clean way to assume certain CFG edges are
dead or instructions will not transfer control.

Reviewers: sstefan1, uenoku

Subscribers: hiraditya, bollu, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D69605
llvm/lib/Transforms/IPO/Attributor.cpp
llvm/test/Transforms/FunctionAttrs/align.ll
llvm/test/Transforms/FunctionAttrs/arg_nocapture.ll
llvm/test/Transforms/FunctionAttrs/fn_noreturn.ll
llvm/test/Transforms/FunctionAttrs/internal-noalias.ll
llvm/test/Transforms/FunctionAttrs/liveness.ll
llvm/test/Transforms/FunctionAttrs/nonnull.ll
llvm/test/Transforms/FunctionAttrs/noreturn_async.ll
llvm/test/Transforms/FunctionAttrs/noreturn_sync.ll
llvm/test/Transforms/FunctionAttrs/value-simplify.ll