mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +00:00
Remove support for the MultiObject flag, which was fundamentally broken
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6840 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5bb8776ece
commit
e0f4b98026
@ -68,12 +68,6 @@ void DSNode::assertOK() const {
|
|||||||
Ty == Type::VoidTy && (Size == 0 ||
|
Ty == Type::VoidTy && (Size == 0 ||
|
||||||
(NodeType & DSNode::Array))) &&
|
(NodeType & DSNode::Array))) &&
|
||||||
"Node not OK!");
|
"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
|
/// 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) {
|
if (I == Globals.end() || *I != GV) {
|
||||||
//assert(GV->getType()->getElementType() == Ty);
|
//assert(GV->getType()->getElementType() == Ty);
|
||||||
Globals.insert(I, GV);
|
Globals.insert(I, GV);
|
||||||
if (NodeType & DSNode::Composition)
|
|
||||||
NodeType |= DSNode::MultiObject;
|
|
||||||
NodeType |= GlobalNode;
|
NodeType |= GlobalNode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -483,9 +475,6 @@ void DSNode::MergeNodes(DSNodeHandle& CurNodeH, DSNodeHandle& NH) {
|
|||||||
assert(!CurNodeH.getNode()->isDeadNode());
|
assert(!CurNodeH.getNode()->isDeadNode());
|
||||||
|
|
||||||
// Merge the NodeType information...
|
// 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;
|
CurNodeH.getNode()->NodeType |= N->NodeType;
|
||||||
|
|
||||||
// Start forwarding to the new node!
|
// 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
|
// Both point to the same node and same offset, and there is only one
|
||||||
// physical memory object represented in the node, return must alias.
|
// physical memory object represented in the node, return must alias.
|
||||||
if (O1 == O2 && !N1->isMultiObject())
|
//if (O1 == O2 && !N1->isMultiObject())
|
||||||
return MustAlias; // Exactly the same object & offset
|
// return MustAlias; // Exactly the same object & offset
|
||||||
|
|
||||||
// See if they point to different offsets... if so, we may be able to
|
// See if they point to different offsets... if so, we may be able to
|
||||||
// determine that they do not alias...
|
// 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::Incomplete ) OS << "I";
|
||||||
if (NodeType & DSNode::Modified ) OS << "M";
|
if (NodeType & DSNode::Modified ) OS << "M";
|
||||||
if (NodeType & DSNode::Read ) OS << "R";
|
if (NodeType & DSNode::Read ) OS << "R";
|
||||||
if (NodeType & DSNode::MultiObject) OS << "m";
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (NodeType & DSNode::DEAD ) OS << "<dead>";
|
if (NodeType & DSNode::DEAD ) OS << "<dead>";
|
||||||
#endif
|
#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.
|
// has no way to extend the lifetime of the pass, which screws up ds-aa.
|
||||||
//
|
//
|
||||||
void TDDataStructures::releaseMyMemory() {
|
void TDDataStructures::releaseMyMemory() {
|
||||||
|
return;
|
||||||
for (hash_map<const Function*, DSGraph*>::iterator I = DSInfo.begin(),
|
for (hash_map<const Function*, DSGraph*>::iterator I = DSInfo.begin(),
|
||||||
E = DSInfo.end(); I != E; ++I)
|
E = DSInfo.end(); I != E; ++I)
|
||||||
delete I->second;
|
delete I->second;
|
||||||
|
Loading…
Reference in New Issue
Block a user