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) {

Reply via email to