[SCCP] Propagate inequalities
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 7 Jul 2020 20:50:12 +0000 (22:50 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 4 Aug 2020 18:20:52 +0000 (20:20 +0200)
commit456497450482153afe86838ac2e2be395206d377
tree18256f489624beea0f0735061afa827bd37b7f7c
parentf8cc94a61afe48a4b77f111a8ad313fc3b9417de
[SCCP] Propagate inequalities

Teach SCCP to create notconstant lattice values from inequality
assumes and nonnull metadata, and update getConstant() to make
use of them. Additionally isOverdefined() needs to be changed to
consider notconstant an overdefined value.

Handling inequality branches is delayed until our branch on undef
story in other passes has been improved.

Differential Revision: https://reviews.llvm.org/D83643
llvm/include/llvm/Analysis/ValueLattice.h
llvm/lib/Transforms/Scalar/SCCP.cpp
llvm/test/Transforms/SCCP/assume.ll
llvm/test/Transforms/SCCP/metadata.ll