mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-05-28 00:40:54 +00:00
Remove InFlightSet hack. No longer needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29373 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f26f5dde14
commit
2641cad180
@ -435,16 +435,6 @@ public:
|
|||||||
SDNode *Key, unsigned KeyResNo,
|
SDNode *Key, unsigned KeyResNo,
|
||||||
SDNode *Element, unsigned ElementResNo);
|
SDNode *Element, unsigned ElementResNo);
|
||||||
|
|
||||||
/// InsertInFlightSetEntry - A helper function to insert a SDNode* to a
|
|
||||||
/// SDNode* set. This is added to avoid the set insertion operator from being
|
|
||||||
/// inlined.
|
|
||||||
static void InsertInFlightSetEntry(std::set<SDNode*> &Set, SDNode *N);
|
|
||||||
|
|
||||||
/// RemoveInFlightSetEntry - A helper function to remove a SDNode* from a
|
|
||||||
/// SDNode* set. This is added to avoid the set removal operator from being
|
|
||||||
/// inlined.
|
|
||||||
static void RemoveInFlightSetEntry(std::set<SDNode*> &Set, SDNode *N);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void RemoveNodeFromCSEMaps(SDNode *N);
|
void RemoveNodeFromCSEMaps(SDNode *N);
|
||||||
SDNode *AddNonLeafNodeToCSEMaps(SDNode *N);
|
SDNode *AddNonLeafNodeToCSEMaps(SDNode *N);
|
||||||
|
@ -3115,17 +3115,3 @@ void SelectionDAG::InsertISelMapEntry(std::map<SDOperand, SDOperand> &Map,
|
|||||||
Map.insert(std::make_pair(SDOperand(Key, KeyResNo),
|
Map.insert(std::make_pair(SDOperand(Key, KeyResNo),
|
||||||
SDOperand(Element, ElementResNo)));
|
SDOperand(Element, ElementResNo)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// InsertInFlightSetEntry - A helper function to insert a SDNode* to a
|
|
||||||
/// SDNode* set. This is added to avoid the set insertion operator from being
|
|
||||||
/// inlined.
|
|
||||||
void SelectionDAG::InsertInFlightSetEntry(std::set<SDNode*> &Set, SDNode *N) {
|
|
||||||
Set.insert(N);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// RemoveInFlightSetEntry - A helper function to remove a SDNode* from a
|
|
||||||
/// SDNode* set. This is added to avoid the set removal operator from being
|
|
||||||
/// inlined.
|
|
||||||
void SelectionDAG::RemoveInFlightSetEntry(std::set<SDNode*> &Set, SDNode *N) {
|
|
||||||
Set.erase(N);
|
|
||||||
}
|
|
||||||
|
@ -282,7 +282,6 @@ void ARMDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
|
|||||||
DEBUG(BB->dump());
|
DEBUG(BB->dump());
|
||||||
|
|
||||||
DAG.setRoot(SelectRoot(DAG.getRoot()));
|
DAG.setRoot(SelectRoot(DAG.getRoot()));
|
||||||
assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
|
|
||||||
CodeGenMap.clear();
|
CodeGenMap.clear();
|
||||||
HandleMap.clear();
|
HandleMap.clear();
|
||||||
ReplaceMap.clear();
|
ReplaceMap.clear();
|
||||||
|
@ -172,7 +172,6 @@ void AlphaDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
|
|||||||
|
|
||||||
// Select target instructions for the DAG.
|
// Select target instructions for the DAG.
|
||||||
DAG.setRoot(SelectRoot(DAG.getRoot()));
|
DAG.setRoot(SelectRoot(DAG.getRoot()));
|
||||||
assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
|
|
||||||
CodeGenMap.clear();
|
CodeGenMap.clear();
|
||||||
HandleMap.clear();
|
HandleMap.clear();
|
||||||
ReplaceMap.clear();
|
ReplaceMap.clear();
|
||||||
|
@ -142,7 +142,6 @@ void IA64DAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
|
|||||||
|
|
||||||
// Select target instructions for the DAG.
|
// Select target instructions for the DAG.
|
||||||
DAG.setRoot(SelectRoot(DAG.getRoot()));
|
DAG.setRoot(SelectRoot(DAG.getRoot()));
|
||||||
assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
|
|
||||||
CodeGenMap.clear();
|
CodeGenMap.clear();
|
||||||
HandleMap.clear();
|
HandleMap.clear();
|
||||||
ReplaceMap.clear();
|
ReplaceMap.clear();
|
||||||
|
@ -215,7 +215,6 @@ void PPCDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
|
|||||||
|
|
||||||
// Select target instructions for the DAG.
|
// Select target instructions for the DAG.
|
||||||
DAG.setRoot(SelectRoot(DAG.getRoot()));
|
DAG.setRoot(SelectRoot(DAG.getRoot()));
|
||||||
assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
|
|
||||||
CodeGenMap.clear();
|
CodeGenMap.clear();
|
||||||
HandleMap.clear();
|
HandleMap.clear();
|
||||||
ReplaceMap.clear();
|
ReplaceMap.clear();
|
||||||
|
@ -1001,7 +1001,6 @@ void SparcDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
|
|||||||
|
|
||||||
// Select target instructions for the DAG.
|
// Select target instructions for the DAG.
|
||||||
DAG.setRoot(SelectRoot(DAG.getRoot()));
|
DAG.setRoot(SelectRoot(DAG.getRoot()));
|
||||||
assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
|
|
||||||
CodeGenMap.clear();
|
CodeGenMap.clear();
|
||||||
HandleMap.clear();
|
HandleMap.clear();
|
||||||
ReplaceMap.clear();
|
ReplaceMap.clear();
|
||||||
|
@ -2106,8 +2106,6 @@ private:
|
|||||||
// Names of all the folded nodes which produce chains.
|
// Names of all the folded nodes which produce chains.
|
||||||
std::vector<std::pair<std::string, unsigned> > FoldedChains;
|
std::vector<std::pair<std::string, unsigned> > FoldedChains;
|
||||||
std::set<std::string> Duplicates;
|
std::set<std::string> Duplicates;
|
||||||
/// These nodes are being marked "in-flight" so they cannot be folded.
|
|
||||||
std::vector<std::string> InflightNodes;
|
|
||||||
|
|
||||||
/// GeneratedCode - This is the buffer that we emit code to. The first bool
|
/// GeneratedCode - This is the buffer that we emit code to. The first bool
|
||||||
/// indicates whether this is an exit predicate (something that should be
|
/// indicates whether this is an exit predicate (something that should be
|
||||||
@ -2231,8 +2229,6 @@ public:
|
|||||||
OpNo = 1;
|
OpNo = 1;
|
||||||
if (!isRoot) {
|
if (!isRoot) {
|
||||||
const SDNodeInfo &CInfo = ISE.getSDNodeInfo(N->getOperator());
|
const SDNodeInfo &CInfo = ISE.getSDNodeInfo(N->getOperator());
|
||||||
// Not in flight?
|
|
||||||
emitCheck("InFlightSet.count(" + RootName + ".Val) == 0");
|
|
||||||
// Multiple uses of actual result?
|
// Multiple uses of actual result?
|
||||||
emitCheck(RootName + ".hasOneUse()");
|
emitCheck(RootName + ".hasOneUse()");
|
||||||
EmittedUseCheck = true;
|
EmittedUseCheck = true;
|
||||||
@ -2477,23 +2473,8 @@ public:
|
|||||||
for (unsigned i = 0; i < NumRes; i++)
|
for (unsigned i = 0; i < NumRes; i++)
|
||||||
Code += ", CPTmp" + utostr(i + ResNo);
|
Code += ", CPTmp" + utostr(i + ResNo);
|
||||||
emitCode(Code + ");");
|
emitCode(Code + ");");
|
||||||
if (InflightNodes.size()) {
|
|
||||||
// Remove the in-flight nodes if the ComplexPattern does not match!
|
|
||||||
emitCode("if (!Match) {");
|
|
||||||
for (std::vector<std::string>::iterator AI = InflightNodes.begin(),
|
|
||||||
AE = InflightNodes.end(); AI != AE; ++AI)
|
|
||||||
emitCode(" SelectionDAG::RemoveInFlightSetEntry(InFlightSet, " +
|
|
||||||
*AI + ".Val);");
|
|
||||||
emitCode("}");
|
|
||||||
}
|
|
||||||
|
|
||||||
emitCheck("Match");
|
emitCheck("Match");
|
||||||
|
|
||||||
for (unsigned i = 0; i < NumRes; ++i) {
|
|
||||||
emitCode("SelectionDAG::InsertInFlightSetEntry(InFlightSet, CPTmp" +
|
|
||||||
utostr(i+ResNo) + ".Val);");
|
|
||||||
InflightNodes.push_back("CPTmp" + utostr(i+ResNo));
|
|
||||||
}
|
|
||||||
for (unsigned i = 0; i < NumRes; ++i) {
|
for (unsigned i = 0; i < NumRes; ++i) {
|
||||||
emitDecl("Tmp" + utostr(i+ResNo));
|
emitDecl("Tmp" + utostr(i+ResNo));
|
||||||
emitCode("Select(Tmp" + utostr(i+ResNo) + ", CPTmp" +
|
emitCode("Select(Tmp" + utostr(i+ResNo) + ", CPTmp" +
|
||||||
@ -2608,22 +2589,6 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure these operands which would be selected won't be folded while
|
|
||||||
// the isel traverses the DAG upward.
|
|
||||||
for (unsigned i = 0, e = EmitOrder.size(); i != e; ++i) {
|
|
||||||
TreePatternNode *Child = EmitOrder[i].second;
|
|
||||||
if (!Child->getName().empty()) {
|
|
||||||
std::string &Val = VariableMap[Child->getName()];
|
|
||||||
assert(!Val.empty() &&
|
|
||||||
"Variable referenced but not defined and not caught earlier!");
|
|
||||||
if (Child->isLeaf() && !NodeGetComplexPattern(Child, ISE)) {
|
|
||||||
emitCode("SelectionDAG::InsertInFlightSetEntry(InFlightSet, " +
|
|
||||||
Val + ".Val);");
|
|
||||||
InflightNodes.push_back(Val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Emit all of the operands.
|
// Emit all of the operands.
|
||||||
std::vector<std::pair<unsigned, unsigned> > NumTemps(EmitOrder.size());
|
std::vector<std::pair<unsigned, unsigned> > NumTemps(EmitOrder.size());
|
||||||
for (unsigned i = 0, e = EmitOrder.size(); i != e; ++i) {
|
for (unsigned i = 0, e = EmitOrder.size(); i != e; ++i) {
|
||||||
@ -2651,14 +2616,6 @@ public:
|
|||||||
emitCode(" Select(InFlag, N.getOperand(N.getNumOperands()-1));");
|
emitCode(" Select(InFlag, N.getOperand(N.getNumOperands()-1));");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isRoot) {
|
|
||||||
// The operands have been selected. Remove them from InFlightSet.
|
|
||||||
for (std::vector<std::string>::iterator AI = InflightNodes.begin(),
|
|
||||||
AE = InflightNodes.end(); AI != AE; ++AI)
|
|
||||||
emitCode("SelectionDAG::RemoveInFlightSetEntry(InFlightSet, " +
|
|
||||||
*AI + ".Val);");
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned NumResults = Inst.getNumResults();
|
unsigned NumResults = Inst.getNumResults();
|
||||||
unsigned ResNo = TmpNo++;
|
unsigned ResNo = TmpNo++;
|
||||||
if (!isRoot || InputHasChain || NodeHasChain || NodeHasOutFlag ||
|
if (!isRoot || InputHasChain || NodeHasChain || NodeHasOutFlag ||
|
||||||
@ -3639,9 +3596,6 @@ void DAGISelEmitter::run(std::ostream &OS) {
|
|||||||
OS << "// Instance var to keep track of mapping of place handle nodes\n"
|
OS << "// Instance var to keep track of mapping of place handle nodes\n"
|
||||||
<< "// and their replacement nodes.\n";
|
<< "// and their replacement nodes.\n";
|
||||||
OS << "std::map<SDOperand, SDOperand> ReplaceMap;\n";
|
OS << "std::map<SDOperand, SDOperand> ReplaceMap;\n";
|
||||||
OS << "// Keep track of nodes that are currently being selecte and therefore\n"
|
|
||||||
<< "// should not be folded.\n";
|
|
||||||
OS << "std::set<SDNode*> InFlightSet;\n";
|
|
||||||
|
|
||||||
OS << "\n";
|
OS << "\n";
|
||||||
OS << "// AddHandleReplacement - Note the pending replacement node for a\n"
|
OS << "// AddHandleReplacement - Note the pending replacement node for a\n"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user