1. [Attributor] Liveness for values (details)
Commit cd4aab4a8ac43dd661f132fd940bc80828788fda by johannes
[Attributor] Liveness for values
Summary: This patch introduces liveness (AAIsDead) for all positions,
thus for all kinds of values. For now, we say an instruction is dead if
it would be removed assuming all users are dead. A call site return is
different as we just look at the users. If all call site returns have
been eliminated, the return values can return undef instead of their
original value, eliminating uses.
We try to recursively delete dead instructions now and we introduce a
simple check interface for use-traversal.
This is the idea tried out in D68626 but implemented in the right way.
Reviewers: uenoku, sstefan1
Subscribers: hiraditya, bollu, llvm-commits
Tags: #llvm
Differential Revision:
The file was modifiedllvm/test/Transforms/FunctionAttrs/new_attributes.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/noalias_returned.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/arg_returned.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/liveness.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/misc.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/nonnull.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/arg_nocapture.ll
The file was modifiedllvm/include/llvm/Transforms/IPO/Attributor.h
The file was modifiedllvm/lib/Transforms/IPO/Attributor.cpp
The file was modifiedllvm/test/Transforms/FunctionAttrs/align.ll