Skip to content

Commit e8a8731

Browse files
committed
Fix CI build issues
1 parent 960c69a commit e8a8731

File tree

3 files changed

+32
-15
lines changed

3 files changed

+32
-15
lines changed

src/main/rascal/lang/jimple/toolkit/ssa/Helpers.rsc

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import lang::jimple::toolkit::FlowGraph;
88
import lang::jimple::core::Syntax;
99

1010
public Variable returnStmtVariable(Node graphNode) {
11-
stmtNode(assignStatement) = graphNode;
11+
assignStatement = returnStmtNodeBody(graphNode);
1212
variableArg = assignStatement[0];
1313

1414
switch(variableArg) {
@@ -22,6 +22,18 @@ public Statement returnStmtNodeBody(Node stmtNode) {
2222
}
2323
}
2424

25+
public Variable returnPhiFunctionLeftHandSide(Expression phiFunctionExpr) {
26+
switch(phiFunctionExpr) {
27+
case phiFunction(leftHandSide, _): return leftHandSide;
28+
}
29+
}
30+
31+
public list[Variable] returnPhiFunctionRightHandSide(Expression phiFunctionExpr) {
32+
switch(phiFunctionExpr) {
33+
case phiFunction(_, rightHandSide): return rightHandSide;
34+
}
35+
}
36+
2537
public Variable returnLeftHandSideVariable(Node stmtNode) {
2638
switch(stmtNode) {
2739
case stmtNode(assign(leftHandSide, _)): return leftHandSide;

src/main/rascal/lang/jimple/toolkit/ssa/PhiFunctionInsertion.rsc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@ module lang::jimple::toolkit::ssa::PhiFunctionInsertion
33
import demo::Dominators;
44
import Set;
55
import Relation;
6-
import analysis::graphs::Graph;
7-
import lang::jimple::toolkit::FlowGraph;
8-
import lang::jimple::core::Syntax;
96
import Type;
107
import IO;
118
import Node;
129
import List;
1310

11+
import analysis::graphs::Graph;
12+
import lang::jimple::toolkit::FlowGraph;
13+
import lang::jimple::core::Syntax;
14+
import lang::jimple::toolkit::ssa::Helpers;
15+
1416
public FlowGraph insertPhiFunctions(FlowGraph flowGraph, map[&T, set[&T]] dominanceFrontier) {
1517
newFlowGraph = { <origin, destination> | <origin, destination> <- flowGraph };
1618
variableList = { getStmtVariable(graphNode) | <graphNode, _> <- flowGraph, isVariable(graphNode) };
@@ -55,7 +57,7 @@ public bool isJoinNode(FlowGraph flowGraph, Node frontierNode) {
5557
}
5658
5759
public &T getStmtVariable(Node graphNode) {
58-
stmtNode(assignStatement) = graphNode;
60+
assignStatement = returnStmtNodeBody(graphNode);
5961
variableArg = assignStatement[0];
6062
6163
return variableArg;
@@ -68,7 +70,7 @@ public list[Node] blocksWithVariable(FlowGraph flowGraph, Variable variable) {
6870
public bool isVariable(Node graphNode) {
6971
if (size(graphNode[..]) == 0) return false;
7072
71-
stmtNode(assignStatement) = graphNode;
73+
assignStatement = returnStmtNodeBody(graphNode);
7274
if (size(assignStatement[..]) == 0) return false;
7375
7476
variableArg = assignStatement[0];
@@ -82,7 +84,7 @@ public bool isVariable(Node graphNode) {
8284
public bool isSameVariable(Node graphNode, Variable variable) {
8385
if (size(graphNode[..]) == 0) return false;
8486
85-
stmtNode(assignStatement) = graphNode;
87+
assignStatement = returnStmtNodeBody(graphNode);
8688
if (size(assignStatement[..]) == 0) return false;
8789
8890
variableArg = assignStatement[0];

src/main/rascal/lang/jimple/toolkit/ssa/VariableRenaming.rsc

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,12 @@ public bool isSkipableStatement(stmtArgument) {
217217
}
218218
219219
public Node replacePhiFunctionVersion(map[Node, list[Node]] blockTree, Node variableNode) {
220-
assignStatement = returnStmtNodeBody(variableNode);
221-
assign(assignVariable, assignPhiFunction) = assignStatement;
222-
phiFunction(phiFunctionVariable, variableVersionList) = assignPhiFunction;
220+
assignVariable = returnLeftHandSideVariable(variableNode);
221+
assignPhiFunction = returnRightHandSideExpression(variableNode);
222+
223+
phiFunctionVariable = returnPhiFunctionLeftHandSide(assignPhiFunction);
224+
variableVersionList = returnPhiFunctionRightHandSide(assignPhiFunction);
225+
223226
variableName = phiFunctionVariable[0];
224227
Immediate localVariableImmediate = local(variableName);
225228
versionIndex = getVariableVersionStacked(localVariableImmediate);
@@ -274,7 +277,7 @@ public String returnCurrentVersionName(Immediate immediate) {
274277
public bool isRenamed(Node assignNode) {
275278
if(ignoreNode(assignNode)) return false;
276279
277-
stmtNode(assignStmt) = assignNode;
280+
assignStmt = returnStmtNodeBody(assignNode);
278281
279282
switch(assignNode) {
280283
case stmtNode(assign(localVariable(name), _)) : return contains(name, "version");
@@ -310,7 +313,7 @@ public bool ignoreNode(Node variableNode) {
310313
public bool isOrdinaryAssignment(Node variableNode) {
311314
if(ignoreNode(variableNode)) return false;
312315
313-
stmtNode(statement) = variableNode;
316+
statement = returnStmtNodeBody(variableNode);
314317
switch(statement) {
315318
case assign(_, _): return true;
316319
default: return false;
@@ -320,7 +323,7 @@ public bool isOrdinaryAssignment(Node variableNode) {
320323
public bool isPhiFunctionAssigment(Node variableNode) {
321324
if(ignoreNode(variableNode)) return false;
322325
323-
stmtNode(assignStatement) = variableNode;
326+
assignStatement = returnStmtNodeBody(variableNode);
324327
if(size(assignStatement[..]) != 2) return false;
325328
326329
possiblePhiFunction = assignStatement[1];
@@ -334,7 +337,7 @@ public bool isPhiFunctionAssigment(Node variableNode) {
334337
public bool isVariable(Node graphNode) {
335338
if (size(graphNode[..]) == 0) return false;
336339
337-
stmtNode(assignStatement) = graphNode;
340+
assignStatement = returnStmtNodeBody(graphNode);
338341
variableArg = assignStatement[0];
339342
typeOfVariableArg = typeOf(variableArg);
340343
@@ -346,7 +349,7 @@ public bool isVariable(Node graphNode) {
346349
public bool isSameVariable(Node graphNode, Variable variable) {
347350
if (size(graphNode[..]) == 0) return false;
348351
349-
stmtNode(assignStatement) = graphNode;
352+
assignStatement = returnStmtNodeBody(graphNode);
350353
variableArg = assignStatement[0];
351354
typeOfVariableArg = typeOf(variableArg);
352355

0 commit comments

Comments
 (0)