diff --git a/lib/Analysis/DataStructure/Local.cpp b/lib/Analysis/DataStructure/Local.cpp index 2542fd01962..856ceb3c9a5 100644 --- a/lib/Analysis/DataStructure/Local.cpp +++ b/lib/Analysis/DataStructure/Local.cpp @@ -40,6 +40,10 @@ static cl::opt TrackIntegersAsPointers("dsa-track-integers", cl::Hidden, cl::desc("If this is set, track integers as potential pointers")); +static cl::opt +IgnoreSetCC("dsa-ignore-setcc", cl::Hidden, + cl::desc("If this is set, do nothing at pointer comparisons")); + static cl::list AllocList("dsa-alloc-list", cl::value_desc("list"), @@ -336,7 +340,8 @@ void GraphBuilder::visitSelectInst(SelectInst &SI) { void GraphBuilder::visitSetCondInst(SetCondInst &SCI) { if (!isPointerType(SCI.getOperand(0)->getType()) || isa(SCI.getOperand(1))) return; // Only pointers - ScalarMap[SCI.getOperand(0)].mergeWith(getValueDest(*SCI.getOperand(1))); + if(!IgnoreSetCC) + ScalarMap[SCI.getOperand(0)].mergeWith(getValueDest(*SCI.getOperand(1))); }