You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2018/07/31 02:08:08 UTC

systemml git commit: [SYSTEMML-2473] Fix robustness IPA wrt updates of function call graph

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 <mb...@gmail.com>
Authored: Mon Jul 30 18:55:13 2018 -0700
Committer: Matthias Boehm <mb...@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) {