From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19753 invoked by alias); 19 Nov 2013 14:51:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 19744 invoked by uid 89); 19 Nov 2013 14:50:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_50,RDNS_NONE,SPF_PASS autolearn=no version=3.3.2 X-HELO: mail-qa0-f50.google.com Received: from Unknown (HELO mail-qa0-f50.google.com) (209.85.216.50) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Tue, 19 Nov 2013 14:50:58 +0000 Received: by mail-qa0-f50.google.com with SMTP id i13so1264702qae.16 for ; Tue, 19 Nov 2013 06:50:50 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to:cc :content-type; bh=r8mGHHbNlJJmP0O5inwgq42MeHzEqytJKUpsSOBIHEk=; b=JGFb/hQpue9osuVg9VNjZsQXz29YFNU+JMVti25QIRB7aOW9wZo8JvGZqDnBGgSQPB NkcZDJuOx0xFVpzTFz9R41cC3H9mAXXbzqa8Wbdft9JeOzjcQj2V9qX4QJckJTm3d1Eo gm+/lRtVREmRDCzzPFqe3IF/1osisejhFK8vi+M08zjkQ6WTrqQmjKi+i5SydvaYwqe/ Bm414eTOfDEGqzXolkmSgaIWpqq22fCSY5IDkZqqlvkyd65qpWGjjn/aXKuYBGsuq2mr hCJwbRjrbpbJCLO1RpcPy/suIxVavImhwUdMw553tJ+D72yWl3F/JIJ6VpUIXGb86bC0 GTAQ== X-Gm-Message-State: ALoCoQn7NLVlKYmRUlT/duTikIP3anXNv85h+ZJuJDm063gE6M/riG/7a8RNgmOLwTVI7do/iSJZqXkTo5vhqbBw9PEWKGCJiLKNsu0NXXiskGV4HH7tdeJLB2KVpq4qBfZk80BBUdO4i1MALS5q6vI56xyA6QNy/G0VZdLRcU//gp9HC3449HfvjHZDIevIKeWbfb66Yg2J8uUW97+CC3r3Q92cDslVuw== MIME-Version: 1.0 X-Received: by 10.224.96.129 with SMTP id h1mr43725021qan.14.1384872650448; Tue, 19 Nov 2013 06:50:50 -0800 (PST) Received: by 10.229.117.69 with HTTP; Tue, 19 Nov 2013 06:50:50 -0800 (PST) Date: Tue, 19 Nov 2013 15:17:00 -0000 Message-ID: Subject: [PATCH i386] Enable -freorder-blocks-and-partition From: Teresa Johnson To: "gcc-patches@gcc.gnu.org" Cc: David Li , Jan Hubicka , Steven Bosscher Content-Type: text/plain; charset=ISO-8859-1 X-IsSubscribed: yes X-SW-Source: 2013-11/txt/msg02313.txt.bz2 This patch enables -freorder-blocks-and-partition by default for x86 at -O2 and up. It is showing some modest gains in cpu2006 performance with profile feedback and -O2 on an Intel Westmere system. Specifically, I am seeing consistent improvements in 401.bzip2 (1.5-3%), 483.xalancbmk (1.5-3%), and 453.povray (2.5-3%), and no apparent regressions. Bootstrapped and tested on x86-64-unknown-linux-gnu with a normal bootstrap, a profiledbootstrap and an LTO profiledbootstrap. All were configured with --enable-languages=all,obj-c++ and tested for both 32 and 64-bit with RUNTESTFLAGS="--target_board=unix\{-m32,-m64\}". It would be good to enable this for additional targets as a follow on, but it needs more testing for both correctness and performance on those other targets (i.e for correctness because I see a number of places in other config/*/*.c files that do some special handling under this option for different targets or simply disable it, so I am not sure how well-tested it is under different architectural constraints). Ok for trunk? Thanks, Teresa 2013-11-19 Teresa Johnson * common/config/i386/i386-common.c: Enable -freorder-blocks-and-partition at -O2 and up for x86. * opts.c (finish_options): Only warn if -freorder-blocks-and- partition was set on command line. Index: common/config/i386/i386-common.c =================================================================== --- common/config/i386/i386-common.c (revision 205001) +++ common/config/i386/i386-common.c (working copy) @@ -789,6 +789,8 @@ static const struct default_options ix86_option_op { /* Enable redundant extension instructions removal at -O2 and higher. */ { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 }, + /* Enable function splitting at -O2 and higher. */ + { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_and_partition, NULL, 1 }, /* Turn off -fschedule-insns by default. It tends to make the problem with not enough registers even worse. */ { OPT_LEVELS_ALL, OPT_fschedule_insns, NULL, 0 }, Index: opts.c =================================================================== --- opts.c (revision 205001) +++ opts.c (working copy) @@ -737,9 +737,10 @@ finish_options (struct gcc_options *opts, struct g && opts->x_flag_reorder_blocks_and_partition && (ui_except == UI_SJLJ || ui_except >= UI_TARGET)) { - inform (loc, - "-freorder-blocks-and-partition does not work " - "with exceptions on this architecture"); + if (opts_set->x_flag_reorder_blocks_and_partition) + inform (loc, + "-freorder-blocks-and-partition does not work " + "with exceptions on this architecture"); opts->x_flag_reorder_blocks_and_partition = 0; opts->x_flag_reorder_blocks = 1; } @@ -752,9 +753,10 @@ finish_options (struct gcc_options *opts, struct g && opts->x_flag_reorder_blocks_and_partition && (ui_except == UI_SJLJ || ui_except >= UI_TARGET)) { - inform (loc, - "-freorder-blocks-and-partition does not support " - "unwind info on this architecture"); + if (opts_set->x_flag_reorder_blocks_and_partition) + inform (loc, + "-freorder-blocks-and-partition does not support " + "unwind info on this architecture"); opts->x_flag_reorder_blocks_and_partition = 0; opts->x_flag_reorder_blocks = 1; } @@ -769,9 +771,10 @@ finish_options (struct gcc_options *opts, struct g && targetm_common.unwind_tables_default && (ui_except == UI_SJLJ || ui_except >= UI_TARGET)))) { - inform (loc, - "-freorder-blocks-and-partition does not work " - "on this architecture"); + if (opts_set->x_flag_reorder_blocks_and_partition) + inform (loc, + "-freorder-blocks-and-partition does not work " + "on this architecture"); opts->x_flag_reorder_blocks_and_partition = 0; opts->x_flag_reorder_blocks = 1; } -- Teresa Johnson | Software Engineer | tejohnson@google.com | 408-460-2413