diff options
| author | Chris Lattner <sabre@nondot.org> | 2003-06-22 03:03:52 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2003-06-22 03:03:52 +0000 |
| commit | d791d8e427a96ab3893573fb71f266bbb727438b (patch) | |
| tree | 90259aa6ef558e2f33b4ea7a947dfc0246e9c249 /llvm/lib/Analysis | |
| parent | 09ede5c9366a52336eedd80e70f171da97d7bd17 (diff) | |
| download | bcm5719-llvm-d791d8e427a96ab3893573fb71f266bbb727438b.tar.gz bcm5719-llvm-d791d8e427a96ab3893573fb71f266bbb727438b.zip | |
Remove support for the MultiObject flag, which was fundamentally broken
llvm-svn: 6840
Diffstat (limited to 'llvm/lib/Analysis')
4 files changed, 3 insertions, 14 deletions
diff --git a/llvm/lib/Analysis/DataStructure/DataStructure.cpp b/llvm/lib/Analysis/DataStructure/DataStructure.cpp index 9e00860365b..2f64eb074ce 100644 --- a/llvm/lib/Analysis/DataStructure/DataStructure.cpp +++ b/llvm/lib/Analysis/DataStructure/DataStructure.cpp @@ -68,12 +68,6 @@ void DSNode::assertOK() const { Ty == Type::VoidTy && (Size == 0 || (NodeType & DSNode::Array))) && "Node not OK!"); - - // Check to ensure that the multiobject constraints are met... - unsigned Comp = NodeType & DSNode::Composition; - assert((NodeType & DSNode::MultiObject) || - Comp == 0 || Comp == DSNode::AllocaNode || Comp == DSNode::HeapNode || - Comp == DSNode::GlobalNode || Comp == DSNode::UnknownNode); } /// forwardNode - Mark this node as being obsolete, and all references to it @@ -103,8 +97,6 @@ void DSNode::addGlobal(GlobalValue *GV) { if (I == Globals.end() || *I != GV) { //assert(GV->getType()->getElementType() == Ty); Globals.insert(I, GV); - if (NodeType & DSNode::Composition) - NodeType |= DSNode::MultiObject; NodeType |= GlobalNode; } } @@ -483,9 +475,6 @@ void DSNode::MergeNodes(DSNodeHandle& CurNodeH, DSNodeHandle& NH) { assert(!CurNodeH.getNode()->isDeadNode()); // Merge the NodeType information... - if ((CurNodeH.getNode()->NodeType & DSNode::Composition) != 0 && - (N->NodeType & DSNode::Composition) != 0) - N->NodeType |= DSNode::MultiObject; // Multiple composition -> multiobject CurNodeH.getNode()->NodeType |= N->NodeType; // Start forwarding to the new node! diff --git a/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp b/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp index d7c40c6f5a6..3c89e6d2670 100644 --- a/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp +++ b/llvm/lib/Analysis/DataStructure/DataStructureAA.cpp @@ -96,8 +96,8 @@ AliasAnalysis::AliasResult DSAA::alias(const Value *V1, unsigned V1Size, // Both point to the same node and same offset, and there is only one // physical memory object represented in the node, return must alias. - if (O1 == O2 && !N1->isMultiObject()) - return MustAlias; // Exactly the same object & offset + //if (O1 == O2 && !N1->isMultiObject()) + // return MustAlias; // Exactly the same object & offset // See if they point to different offsets... if so, we may be able to // determine that they do not alias... diff --git a/llvm/lib/Analysis/DataStructure/Printer.cpp b/llvm/lib/Analysis/DataStructure/Printer.cpp index 9bde0b7e891..50d893366b7 100644 --- a/llvm/lib/Analysis/DataStructure/Printer.cpp +++ b/llvm/lib/Analysis/DataStructure/Printer.cpp @@ -47,7 +47,6 @@ static std::string getCaption(const DSNode *N, const DSGraph *G) { if (NodeType & DSNode::Incomplete ) OS << "I"; if (NodeType & DSNode::Modified ) OS << "M"; if (NodeType & DSNode::Read ) OS << "R"; - if (NodeType & DSNode::MultiObject) OS << "m"; #ifndef NDEBUG if (NodeType & DSNode::DEAD ) OS << "<dead>"; #endif diff --git a/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp b/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp index def549226f2..3138ada6461 100644 --- a/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp +++ b/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp @@ -45,6 +45,7 @@ bool TDDataStructures::run(Module &M) { // has no way to extend the lifetime of the pass, which screws up ds-aa. // void TDDataStructures::releaseMyMemory() { + return; for (hash_map<const Function*, DSGraph*>::iterator I = DSInfo.begin(), E = DSInfo.end(); I != E; ++I) delete I->second; |

