This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC][PATCH, ASan] ASan and TSan passes place change.


Hi!

This tiny patch moves ASan and TSan passes just before sanopt pass, that gives nice speedup on several SPEC2006 tests (-O2 optimization level was used) on x86:

TESTCASE       ORIGINAL PATCHED SPEEDUP
401.bzip2        806    798     0.99%
403.gcc          506    475     6.13%
429.mcf          337    295     12.46%
456.hmmer        1005   1017    -1.19%
458.sjeng        993    946     4.73%
462.libquantum   312    290     7.05%
473.astar        550    539     2.00%
483.xalancbmk    439    363     17.31%
410.bwaves       1720   1712    0.47%
416.gamess       3101   3105    -0.13%
433.milc         469    358     23.67%
434.zeusmp       1497   1499    -0.13%
435.gromacs      926    905     2.27%
436.cactusADM    2572   2612    -1.56%
437.leslie3d     1472   1470    0.14%
444.namd         474    452     4.64%
447.dealII       505    429     15.05%
459.GemsFDTD     1812   1812    0.00%
465.tonto        1289   1292    -0.23%
470.lbm          302    228     24.50%
482.sphinx3      1030   617     40.10%

Does this change looks reasonable for trunk?

-Maxim
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ff02e19..560c277 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2015-08-07  Maxim Ostapenko  <m.ostapenko@partner.samsung.com>
+
+	* asan.c (make_pass_asan_O0): Remove pass.
+	* tsan.c (make_pass_tsan_O0): Likewise.
+	* passes.def: Change place for ASan and TSan passes.
+	* tree-pass.h: Remove passes.
+
 2015-08-05  Richard Biener  <rguenther@suse.de>
 
 	PR tree-optimization/67055
diff --git a/gcc/asan.c b/gcc/asan.c
index 4f5adaa..b651ddb 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -2788,40 +2788,4 @@ make_pass_asan (gcc::context *ctxt)
   return new pass_asan (ctxt);
 }
 
-namespace {
-
-const pass_data pass_data_asan_O0 =
-{
-  GIMPLE_PASS, /* type */
-  "asan0", /* name */
-  OPTGROUP_NONE, /* optinfo_flags */
-  TV_NONE, /* tv_id */
-  ( PROP_ssa | PROP_cfg | PROP_gimple_leh ), /* properties_required */
-  0, /* properties_provided */
-  0, /* properties_destroyed */
-  0, /* todo_flags_start */
-  TODO_update_ssa, /* todo_flags_finish */
-};
-
-class pass_asan_O0 : public gimple_opt_pass
-{
-public:
-  pass_asan_O0 (gcc::context *ctxt)
-    : gimple_opt_pass (pass_data_asan_O0, ctxt)
-  {}
-
-  /* opt_pass methods: */
-  virtual bool gate (function *) { return !optimize && gate_asan (); }
-  virtual unsigned int execute (function *) { return asan_instrument (); }
-
-}; // class pass_asan_O0
-
-} // anon namespace
-
-gimple_opt_pass *
-make_pass_asan_O0 (gcc::context *ctxt)
-{
-  return new pass_asan_O0 (ctxt);
-}
-
 #include "gt-asan.h"
diff --git a/gcc/passes.def b/gcc/passes.def
index 6b66f8f..a0ca2e7 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -217,8 +217,6 @@ along with GCC; see the file COPYING3.  If not see
       NEXT_PASS (pass_split_crit_edges);
       NEXT_PASS (pass_pre);
       NEXT_PASS (pass_sink_code);
-      NEXT_PASS (pass_asan);
-      NEXT_PASS (pass_tsan);
       /* Pass group that runs when 1) enabled, 2) there are loops
 	 in the function.  Make sure to run pass_fix_loops before
 	 to discover/remove loops before running the gate function
@@ -349,8 +347,8 @@ along with GCC; see the file COPYING3.  If not see
   NEXT_PASS (pass_lower_vaarg);
   NEXT_PASS (pass_lower_vector);
   NEXT_PASS (pass_lower_complex_O0);
-  NEXT_PASS (pass_asan_O0);
-  NEXT_PASS (pass_tsan_O0);
+  NEXT_PASS (pass_asan);
+  NEXT_PASS (pass_tsan);
   NEXT_PASS (pass_sanopt);
   NEXT_PASS (pass_cleanup_eh);
   NEXT_PASS (pass_lower_resx);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index aab1f85..b5e22ec 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2015-08-07  Maxim Ostapenko  <m.ostapenko@partner.samsung.com>
+
+	* c-c++-common/asan/inc.c: Adjust.
+
 2015-08-05  Paolo Carlini  <paolo.carlini@oracle.com>
 
 	PR c++/66595
diff --git a/gcc/testsuite/c-c++-common/asan/inc.c b/gcc/testsuite/c-c++-common/asan/inc.c
index 5abf373..495195c 100644
--- a/gcc/testsuite/c-c++-common/asan/inc.c
+++ b/gcc/testsuite/c-c++-common/asan/inc.c
@@ -1,4 +1,4 @@
-/* { dg-options "-fdump-tree-asan0" } */
+/* { dg-options "-fdump-tree-asan" } */
 /* { dg-do compile } */
 /* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */
 
@@ -16,5 +16,5 @@ main ()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "ASAN_" 1 "asan0" } }  */
-/* { dg-final { scan-tree-dump "ASAN_CHECK \\(.*, 4\\);" "asan0" } }  */
+/* { dg-final { scan-tree-dump-times "ASAN_" 1 "asan" } }  */
+/* { dg-final { scan-tree-dump "ASAN_CHECK \\(.*, 4\\);" "asan" } }  */
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index 7b66a1c..ab31d26 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -340,9 +340,7 @@ extern simple_ipa_opt_pass *make_pass_ipa_chkp_produce_thunks (gcc::context *ctx
 extern gimple_opt_pass *make_pass_chkp (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_chkp_opt (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_asan (gcc::context *ctxt);
-extern gimple_opt_pass *make_pass_asan_O0 (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_tsan (gcc::context *ctxt);
-extern gimple_opt_pass *make_pass_tsan_O0 (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_lower_cf (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_refactor_eh (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_lower_eh (gcc::context *ctxt);
diff --git a/gcc/tsan.c b/gcc/tsan.c
index 56fb7b2..bcfadbf 100644
--- a/gcc/tsan.c
+++ b/gcc/tsan.c
@@ -860,44 +860,3 @@ make_pass_tsan (gcc::context *ctxt)
   return new pass_tsan (ctxt);
 }
 
-namespace {
-
-const pass_data pass_data_tsan_O0 =
-{
-  GIMPLE_PASS, /* type */
-  "tsan0", /* name */
-  OPTGROUP_NONE, /* optinfo_flags */
-  TV_NONE, /* tv_id */
-  ( PROP_ssa | PROP_cfg ), /* properties_required */
-  0, /* properties_provided */
-  0, /* properties_destroyed */
-  0, /* todo_flags_start */
-  TODO_update_ssa, /* todo_flags_finish */
-};
-
-class pass_tsan_O0 : public gimple_opt_pass
-{
-public:
-  pass_tsan_O0 (gcc::context *ctxt)
-    : gimple_opt_pass (pass_data_tsan_O0, ctxt)
-  {}
-
-  /* opt_pass methods: */
-  virtual bool gate (function *)
-    {
-      return ((flag_sanitize & SANITIZE_THREAD) != 0 && !optimize
-	      && !lookup_attribute ("no_sanitize_thread",
-				    DECL_ATTRIBUTES (current_function_decl)));
-    }
-
-  virtual unsigned int execute (function *) { return tsan_pass (); }
-
-}; // class pass_tsan_O0
-
-} // anon namespace
-
-gimple_opt_pass *
-make_pass_tsan_O0 (gcc::context *ctxt)
-{
-  return new pass_tsan_O0 (ctxt);
-}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]