summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/PBQP/HeuristicSolver.h
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2010-02-09 00:45:48 +0000
committerLang Hames <lhames@gmail.com>2010-02-09 00:45:48 +0000
commit7b1e683975cbac2fe4e89f5e145d537c7e1c7a86 (patch)
tree2cc0f045262db7e95674369584506f15d213dac3 /llvm/lib/CodeGen/PBQP/HeuristicSolver.h
parentce33776994a73b59fbc479c752636d0203af482a (diff)
downloadbcm5719-llvm-7b1e683975cbac2fe4e89f5e145d537c7e1c7a86.tar.gz
bcm5719-llvm-7b1e683975cbac2fe4e89f5e145d537c7e1c7a86.zip
Added copy sensible construction & assignment to PBQP graphs and fixed a memory access bug in the heuristic solver.
llvm-svn: 95633
Diffstat (limited to 'llvm/lib/CodeGen/PBQP/HeuristicSolver.h')
-rw-r--r--llvm/lib/CodeGen/PBQP/HeuristicSolver.h31
1 files changed, 15 insertions, 16 deletions
diff --git a/llvm/lib/CodeGen/PBQP/HeuristicSolver.h b/llvm/lib/CodeGen/PBQP/HeuristicSolver.h
index 5066685a19d..2d72b1fba10 100644
--- a/llvm/lib/CodeGen/PBQP/HeuristicSolver.h
+++ b/llvm/lib/CodeGen/PBQP/HeuristicSolver.h
@@ -107,8 +107,11 @@ namespace PBQP {
Solution s;
std::vector<Graph::NodeItr> stack;
- std::vector<NodeData> nodeData;
- std::vector<EdgeData> edgeData;
+ typedef std::list<NodeData> NodeDataList;
+ NodeDataList nodeDataList;
+
+ typedef std::list<EdgeData> EdgeDataList;
+ EdgeDataList edgeDataList;
public:
@@ -364,8 +367,8 @@ namespace PBQP {
} else if (addedEdge) {
// If the edge was added, and non-null, finish setting it up, add it to
// the solver & notify heuristic.
- edgeData.push_back(EdgeData());
- g.setEdgeData(yzeItr, &edgeData.back());
+ edgeDataList.push_back(EdgeData());
+ g.setEdgeData(yzeItr, &edgeDataList.back());
addSolverEdge(yzeItr);
h.handleAddEdge(yzeItr);
}
@@ -402,22 +405,18 @@ namespace PBQP {
simplify();
}
- // Reserve space for the node and edge data.
- nodeData.resize(g.getNumNodes());
- edgeData.resize(g.getNumEdges());
-
// Create node data objects.
- unsigned ndIndex = 0;
for (Graph::NodeItr nItr = g.nodesBegin(), nEnd = g.nodesEnd();
- nItr != nEnd; ++nItr, ++ndIndex) {
- g.setNodeData(nItr, &nodeData[ndIndex]);
+ nItr != nEnd; ++nItr) {
+ nodeDataList.push_back(NodeData());
+ g.setNodeData(nItr, &nodeDataList.back());
}
// Create edge data objects.
- unsigned edIndex = 0;
for (Graph::EdgeItr eItr = g.edgesBegin(), eEnd = g.edgesEnd();
- eItr != eEnd; ++eItr, ++edIndex) {
- g.setEdgeData(eItr, &edgeData[edIndex]);
+ eItr != eEnd; ++eItr) {
+ edgeDataList.push_back(EdgeData());
+ g.setEdgeData(eItr, &edgeDataList.back());
addSolverEdge(eItr);
}
}
@@ -563,8 +562,8 @@ namespace PBQP {
void cleanup() {
h.cleanup();
- nodeData.clear();
- edgeData.clear();
+ nodeDataList.clear();
+ edgeDataList.clear();
}
};
OpenPOWER on IntegriCloud