From patchwork Fri Feb 20 11:59:51 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marat Zakirov X-Patchwork-Id: 441930 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 413CA140293 for ; Fri, 20 Feb 2015 23:00:07 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:content-type; q=dns; s=default; b=IkmIuFmUQfkalfe+ZyjglvVomB2Vb6rhlqWn+1Jvvbl oWiafVSs8BCNPZ4Vffey5sME0G8PJ4c5DibHlJj09zQybB0ygLlXXNUVaCKumsWo PL8Ju33V/vF99K+sk52iHCgy3TYVY659mG6JiG140FwgSMz28jmx/9vGK4Nn4Kls = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:content-type; s=default; bh=7ggULnVy5HuzqYg3I5XPcPKjI7M=; b=TvYhyhAopW8Ic+c6q TqBrD01kKU9Ip9dMqW4uqkDoEc1JL82/VyOp+/9iWSYDJvNoK15C+31c8c7atop8 Oe/BM3LbUXEocDu4G1A/Vdb26iEQjAzZ9TQF4G3+QfjEjzIXIcOxTuW8NNaK117C y4oA49seN3VGnX/0S6QcDJPCws= Received: (qmail 5797 invoked by alias); 20 Feb 2015 11:59:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 5783 invoked by uid 89); 20 Feb 2015 11:59:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS, T_MANY_HDRS_LCASE autolearn=ham version=3.3.2 X-HELO: mailout2.w1.samsung.com Received: from mailout2.w1.samsung.com (HELO mailout2.w1.samsung.com) (210.118.77.12) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (DES-CBC3-SHA encrypted) ESMTPS; Fri, 20 Feb 2015 11:59:56 +0000 Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NK2008THK6HUH20@mailout2.w1.samsung.com> for gcc-patches@gcc.gnu.org; Fri, 20 Feb 2015 12:03:53 +0000 (GMT) Received: from eusync2.samsung.com ( [203.254.199.212]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id E7.23.26295.32127E45; Fri, 20 Feb 2015 11:57:23 +0000 (GMT) Received: from [106.109.129.103] by eusync2.samsung.com (Oracle Communications Messaging Server 7u4-23.01(7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPA id <0NK2007JNJZRO910@eusync2.samsung.com>; Fri, 20 Feb 2015 11:59:51 +0000 (GMT) Message-id: <54E721B7.8000109@samsung.com> Date: Fri, 20 Feb 2015 14:59:51 +0300 From: Marat Zakirov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-version: 1.0 To: "gcc-patches@gcc.gnu.org" Cc: Jakub Jelinek , Kostya Serebryany , Yury Gribov Subject: [PATCH] ASan phase place change Content-type: multipart/mixed; boundary=------------070402060205050003050601 Hi all! Here is simple patch that moves asan phase just behind sanopt for all O0/O1/O2/O3 modes which gives +7% on x86 SPEC2006 (ref dataset). Regression testing and sanitized GCC bootstrapping were successfully done. Performance data attached. --Marat PATCH REF PERCENT 400.perlbench 1319 1334 1.14% 401.bzip2 700 718 2.57% 403.gcc 586 618 5.46% 429.mcf 435 521 19.77% 445.gobmk 720 750 4.17% 456.hmmer 815 816 0.12% 458.sjeng 890 919 3.26% 462.libquantum 327 347 6.12% 464.h264ref 1353 1600 18.26% 471.omnetpp 738 730 -1.08% 473.astar 536 544 1.49% 483.xalancbmk 544 615 13.05% 410.bwaves 1939 1938 -0.05% 416.gamess 3201 3202 0.03% 433.milc 419 540 28.88% 434.zeusmp 1641 1641 0.00% 435.gromacs 923 938 1.63% 436.cactusADM 2970 2973 0.10% 437.leslie3d 1564 1588 1.53% 444.namd 484 490 1.24% 447.dealII 591 676 14.38% 450.soplex 320 348 8.75% 453.povray 322 328 1.86% 459.GemsFDTD 1921 1950 1.51% 465.tonto 1621 1641 1.23% 470.lbm 252 337 33.73% 482.sphinx3 656 943 43.75% GEOMEAN 7.07% gcc/ChangeLog: 2015-02-20 Marat Zakirov * asan.c (make_pass_asan_O0): Pass remove. * passes.def: Change place for ASan pass. * tree-pass.h: Passes remove. * tsan.c (make_pass_tsan_O0): Pass remove. gcc/testsuite/ChangeLog: 2015-02-20 Marat Zakirov * c-c++-common/asan/inc.c: Fix option. diff --git a/gcc/asan.c b/gcc/asan.c index b7c2b11..001d79e 100644 --- a/gcc/asan.c +++ b/gcc/asan.c @@ -2796,40 +2796,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 2bc5dcd..398d8dc 100644 --- a/gcc/passes.def +++ b/gcc/passes.def @@ -214,8 +214,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 @@ -344,8 +342,8 @@ along with GCC; see the file COPYING3. If not see NEXT_PASS (pass_vtable_verify); 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/c-c++-common/asan/inc.c b/gcc/testsuite/c-c++-common/asan/inc.c index 36cc3d8..8c38150 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,6 +16,6 @@ main () return 0; } -/* { dg-final { scan-tree-dump-times "ASAN_" 1 "asan0" } } */ -/* { dg-final { scan-tree-dump "ASAN_CHECK \\(.*, 4\\);" "asan0" } } */ -/* { dg-final { cleanup-tree-dump "asan0" } } */ +/* { dg-final { scan-tree-dump-times "ASAN_" 1 "asan" } } */ +/* { dg-final { scan-tree-dump "ASAN_CHECK \\(.*, 4\\);" "asan" } } */ +/* { dg-final { cleanup-tree-dump "asan" } } */ diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index b59ae7a..50cbf85 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -339,9 +339,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 ae89d5f..a9dca1f 100644 --- a/gcc/tsan.c +++ b/gcc/tsan.c @@ -882,44 +882,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); -}