From: Duncan Sands Date: Fri, 23 Mar 2012 08:45:52 +0000 (+0000) Subject: When propagating equalities, eg replacing A with B in every basic block X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=e959f7e17f0bb999ab032b1567600d39347e983a;p=oota-llvm.git When propagating equalities, eg replacing A with B in every basic block dominated by Root, check that B is available throughout the scope. This is obviously true (famous last words?) given the current logic, but the check may be helpful if more complicated reasoning is added one day. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153323 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/GVN.cpp b/lib/Transforms/Scalar/GVN.cpp index ac80c489f96..8b79d27b952 100644 --- a/lib/Transforms/Scalar/GVN.cpp +++ b/lib/Transforms/Scalar/GVN.cpp @@ -2001,6 +2001,9 @@ bool GVN::propagateEquality(Value *LHS, Value *RHS, BasicBlock *Root) { LVN = RVN; } } + assert((!isa(RHS) || + DT->properlyDominates(cast(RHS)->getParent(), Root)) && + "Instruction doesn't dominate scope!"); // If value numbering later deduces that an instruction in the scope is equal // to 'LHS' then ensure it will be turned into 'RHS'.