mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
Remove support for the MultiObject flag, which was fundamentally broken
llvm-svn: 6840
This commit is contained in:
parent
ddfeef3d7a
commit
0a0266865a
@ -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!
|
||||
|
@ -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...
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user