role aliasing: unify map update code

This commit is contained in:
Justin Viiret 2016-06-23 11:07:39 +10:00 committed by Matthew Barr
parent 6239805561
commit 1d18852dc9

View File

@ -490,16 +490,6 @@ size_t hashRightRoleProperties(RoseVertex v, const RoseGraph &g) {
return val; return val;
} }
static
void removeVertexFromMaps(RoseVertex v, RoseBuildImpl &build,
RoseAliasingInfo &rai) {
if (build.g[v].left) {
const left_id left(build.g[v].left);
assert(contains(rai.rev_leftfix[left], v));
rai.rev_leftfix[left].erase(v);
}
}
static static
void mergeEdgeAdd(RoseVertex u, RoseVertex v, const RoseEdge &from_edge, void mergeEdgeAdd(RoseVertex u, RoseVertex v, const RoseEdge &from_edge,
const RoseEdge *to_edge, RoseGraph &g) { const RoseEdge *to_edge, RoseGraph &g) {
@ -580,8 +570,13 @@ void mergeLiteralSets(RoseVertex a, RoseVertex b, RoseBuildImpl &tbi) {
} }
static static
void updateGhostMap(RoseBuildImpl &build, RoseAliasingInfo &rai, RoseVertex a, void updateAliasingInfo(RoseBuildImpl &build, RoseAliasingInfo &rai,
RoseVertex b) { RoseVertex a, RoseVertex b) {
if (build.g[a].left) {
const left_id left(build.g[a].left);
assert(contains(rai.rev_leftfix[left], a));
rai.rev_leftfix[left].erase(a);
}
if (contains(build.ghost, a)) { if (contains(build.ghost, a)) {
auto ghost = build.ghost.at(a); auto ghost = build.ghost.at(a);
assert(contains(build.ghost, b) && ghost == build.ghost.at(b)); assert(contains(build.ghost, b) && ghost == build.ghost.at(b));
@ -628,8 +623,7 @@ void mergeVertices(RoseVertex a, RoseVertex b, RoseBuildImpl &tbi,
} }
mergeEdges(a, b, g); mergeEdges(a, b, g);
updateGhostMap(tbi, rai, a, b); updateAliasingInfo(tbi, rai, a, b);
removeVertexFromMaps(a, tbi, rai);
} }
/** /**
@ -658,7 +652,7 @@ void mergeVerticesDiamond(RoseVertex a, RoseVertex b, RoseBuildImpl &tbi,
g[b].max_offset = max(g[a].max_offset, g[b].max_offset); g[b].max_offset = max(g[a].max_offset, g[b].max_offset);
mergeLiteralSets(a, b, tbi); mergeLiteralSets(a, b, tbi);
removeVertexFromMaps(a, tbi, rai); updateAliasingInfo(tbi, rai, a, b);
} }
static never_inline static never_inline