Repository: systemml Updated Branches: refs/heads/master 50ddddb90 -> 827d73bd5
[SYSTEMML-2473] Fix robustness IPA wrt updates of function call graph Project: http://git-wip-us.apache.org/repos/asf/systemml/repo Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/827d73bd Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/827d73bd Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/827d73bd Branch: refs/heads/master Commit: 827d73bd58087f2c774697bb6114ccf23d768bb1 Parents: 50ddddb Author: Matthias Boehm <mboe...@gmail.com> Authored: Mon Jul 30 18:55:13 2018 -0700 Committer: Matthias Boehm <mboe...@gmail.com> Committed: Mon Jul 30 18:55:13 2018 -0700 ---------------------------------------------------------------------- src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java | 6 ++++-- .../org/apache/sysml/hops/ipa/InterProceduralAnalysis.java | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/systemml/blob/827d73bd/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java index 74ee056..76029d8 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java +++ b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java @@ -179,8 +179,10 @@ public class FunctionCallGraph * @param sb source statement block */ public void removeFunctionCall(String fkey, FunctionOp fop, StatementBlock sb) { - _fCalls.get(fkey).remove(fop); - _fCallsSB.get(fkey).remove(sb); + if( _fCalls.containsKey(fkey) ) + _fCalls.get(fkey).remove(fop); + if( _fCallsSB.containsKey(fkey) ) + _fCallsSB.get(fkey).remove(sb); } /** http://git-wip-us.apache.org/repos/asf/systemml/blob/827d73bd/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java index 77cc3e2..72aa9cb 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java +++ b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java @@ -136,9 +136,12 @@ public class InterProceduralAnalysis _passes.add(new IPAPassRemoveUnnecessaryCheckpoints()); _passes.add(new IPAPassRemoveConstantBinaryOps()); _passes.add(new IPAPassPropagateReplaceLiterals()); - _passes.add(new IPAPassApplyStaticHopRewrites()); _passes.add(new IPAPassInlineFunctions()); _passes.add(new IPAPassEliminateDeadCode()); + //note: apply rewrites last because statement block rewrites + //might merge relevant statement blocks in special cases, which + //would require an update of the function call graph + _passes.add(new IPAPassApplyStaticHopRewrites()); } public InterProceduralAnalysis(StatementBlock sb) {