diff --git a/lib/Analysis/DataStructure/Local.cpp b/lib/Analysis/DataStructure/Local.cpp index 6db075f5fce..cf8f8f4bab2 100644 --- a/lib/Analysis/DataStructure/Local.cpp +++ b/lib/Analysis/DataStructure/Local.cpp @@ -82,7 +82,8 @@ namespace { FunctionCalls(&fc) { // Create scalar nodes for all pointer arguments... - for (Function::arg_iterator I = f.arg_begin(), E = f.arg_end(); I != E; ++I) + for (Function::arg_iterator I = f.arg_begin(), E = f.arg_end(); + I != E; ++I) if (isPointerType(I->getType())) getValueDest(*I); @@ -177,13 +178,6 @@ DSGraph::DSGraph(EquivalenceClasses &ECs, const TargetData &td, Timer::addPeakMemoryMeasurement(); #endif - // Remove all integral constants from the scalarmap! - for (DSScalarMap::iterator I = ScalarMap.begin(); I != ScalarMap.end();) - if (isa(I->first)) - ScalarMap.erase(I++); - else - ++I; - // If there are any constant globals referenced in this function, merge their // initializers into the local graph from the globals graph. if (ScalarMap.global_begin() != ScalarMap.global_end()) { @@ -228,9 +222,12 @@ DSNodeHandle GraphBuilder::getValueDest(Value &Val) { N->addGlobal(GV); } else if (Constant *C = dyn_cast(V)) { if (ConstantExpr *CE = dyn_cast(C)) { - if (CE->getOpcode() == Instruction::Cast) - NH = getValueDest(*CE->getOperand(0)); - else if (CE->getOpcode() == Instruction::GetElementPtr) { + if (CE->getOpcode() == Instruction::Cast) { + if (isa(CE->getOperand(0)->getType())) + NH = getValueDest(*CE->getOperand(0)); + else + NH = createNode()->setUnknownNodeMarker(); + } else if (CE->getOpcode() == Instruction::GetElementPtr) { visitGetElementPtrInst(*CE); DSScalarMap::iterator I = ScalarMap.find(CE); assert(I != ScalarMap.end() && "GEP didn't get processed right?"); @@ -244,10 +241,6 @@ DSNodeHandle GraphBuilder::getValueDest(Value &Val) { return 0; } return NH; - - } else if (ConstantIntegral *CI = dyn_cast(C)) { - // Random constants are unknown mem - return NH = createNode()->setUnknownNodeMarker(); } else if (isa(C)) { ScalarMap.erase(V); return 0;