From 5634022bd90bac066917296b161cc70727f99fbc Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Mon, 28 Oct 2024 08:55:14 +0000 Subject: [PATCH] optimize reg alloc --- src/opt/confgraph.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/opt/confgraph.cpp b/src/opt/confgraph.cpp index f89871d..c5c7377 100644 --- a/src/opt/confgraph.cpp +++ b/src/opt/confgraph.cpp @@ -300,6 +300,11 @@ void MergeNodeInto(ConfGraphNode *node, ConfGraphNode *target, ConfGraph &confgr void Simplify(std::shared_ptr src, CFGType &cfg, ConfGraph &confgraph) { auto u = *(confgraph.low_degree_and_not_move_related.begin()); + for (auto v : confgraph.low_degree_and_not_move_related) { + if (v->degree > u->degree) { + u = v; + } + } confgraph.low_degree_and_not_move_related.erase(u); DetachNode(u, confgraph); confgraph.stack.push_back(u); @@ -381,6 +386,11 @@ void Freeze(std::shared_ptr src, CFGType &cfg, ConfGraph &confg void PotentailSpill(std::shared_ptr src, CFGType &cfg, ConfGraph &confgraph) { auto u = *confgraph.high_degree_nodes.begin(); + for (auto v : confgraph.high_degree_nodes) { + if (v->degree > u->degree) { + u = v; + } + } confgraph.high_degree_nodes.erase(u); DetachNode(u, confgraph); confgraph.stack.push_back(u);