[mono/mono] [2 commits] cb23a4fd: [llvm] Collect used methods only in AOT mode.

"Zoltan Varga ([email protected])" <[email protected]> Mon, 18 Nov 2013 09:11:31 +0000
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <000001426a7aa391-4fb89dfe-f8ef-4e4b-ad75-51f6bf521432-000000@email.amazonses.com>
   Branch: refs/heads/master
     Home: https://github.com/mono/mono
  Compare: https://github.com/mono/mono/compare/f8e9706a451c...0f197300e90a

   Commit: cb23a4fd2f6fdce0e71e477bf409b9c56aa498f2
   Author: Zoltan Varga <[email protected]> (vargaz)
     Date: 2013-11-18 09:05:23 GMT
      URL: https://github.com/mono/mono/commit/cb23a4fd2f6fdce0e71e477bf409b9c56aa498f2

[llvm] Collect used methods only in AOT mode.

Changed paths:
  M mono/mini/mini-llvm.c

Modified: mono/mini/mini-llvm.c
===================================================================
@@ -4548,7 +4548,8 @@
 	if (cfg->verbose_level > 1)
 		mono_llvm_dump_value (method);
 
-	mark_as_used (ctx->lmodule, method);
+	if (cfg->compile_aot)
+		mark_as_used (ctx->lmodule, method);
 
 	if (cfg->compile_aot) {
 		LLVMValueRef md_args [16];

   Commit: 0f197300e90a5959e3055ae780eaa12f97ea0082
   Author: Zoltan Varga <[email protected]> (vargaz)
     Date: 2013-11-18 09:09:14 GMT
      URL: https://github.com/mono/mono/commit/0f197300e90a5959e3055ae780eaa12f97ea0082

[llvm] Disable the LLVM verifier, it does module wide checks leading to quadratic behavior.

Changed paths:
  M mono/mini/mini-llvm-cpp.cpp

Modified: mono/mini/mini-llvm-cpp.cpp
===================================================================
@@ -285,7 +285,10 @@ class MonoJITEventListener : public JITEventListener {
 void
 mono_llvm_optimize_method (LLVMValueRef method)
 {
-	verifyFunction (*(unwrap<Function> (method)));
+	/*
+	 * The verifier does some checks on the whole module, leading to quadratic behavior.
+	 */
+	//verifyFunction (*(unwrap<Function> (method)));
 	fpm->run (*unwrap<Function> (method));
 }
 
@@ -594,7 +597,7 @@ class MonoJITEventListener : public JITEventListener {
 	  }
   } else {
 	  /* Use the same passes used by 'opt' by default, without the ipo passes */
-	  const char *opts = "-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -domfrontier -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-deletion -loop-simplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -gvn -simplifycfg -preverify -domtree -verify";
+	  const char *opts = "-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -domfrontier -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-deletion -loop-simplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -gvn -simplifycfg";
 	  char **args;
 	  int i;
 


_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches