From patchwork Thu Jun 28 08:33:06 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhenqiang Chen X-Patchwork-Id: 167818 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]) by ozlabs.org (Postfix) with SMTP id 84E4A1007D4 for ; Thu, 28 Jun 2012 18:32:47 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1341477168; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: From:To:Cc:References:In-Reply-To:Subject:Date:Message-ID: MIME-Version:Content-Type:Content-Transfer-Encoding:Mailing-List: Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:Sender:Delivered-To; bh=X7PgV6DA6yE89f8Q7cPEN97Kqvk=; b=OB+TXiEN9yMCIVOCvwvlAZigW83h44JMXMTzrL/pSoUGfrNx3jBrm1AxI7+8Ro euJpPj33gx1RQyRVZbwMaqos8o457jxlBsrOGGdx43CS1ArQ4HFW2jxnUs1JpQnN +7Io65ui9p46l9RT1PI9i/kPDfWBpwXQkHxd6CsUyJTN4= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:From:To:Cc:References:In-Reply-To:Subject:Date:Message-ID:MIME-Version:X-MC-Unique:Content-Type:Content-Transfer-Encoding:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=P9JQVYDMujAqubpVOB9UOFJYzpFg0SzSIp/SFj6GxiUwnE86x2iwsGqu7+Jcyk 37+6MODdNgm5GrqBzF2gb8PEv2Q4dU+8Lvcl2olrqz6ernKPFJsGVki+HVCX5U3t 2eHJJkFK5SX/rKoeRcyWfp8N6QcpAa+/h2HPIXVFbglx0=; Received: (qmail 24813 invoked by alias); 28 Jun 2012 08:32:43 -0000 Received: (qmail 24802 invoked by uid 22791); 28 Jun 2012 08:32:41 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, KHOP_THREADED, MSGID_MULTIPLE_AT, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_NO X-Spam-Check-By: sourceware.org Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 28 Jun 2012 08:32:28 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Thu, 28 Jun 2012 09:32:27 +0100 Received: from shawin003 ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0); Thu, 28 Jun 2012 09:33:14 +0100 From: "Zhenqiang Chen" To: "'Richard Guenther'" Cc: References: <4feac6f5.4abd440a.074d.ffffcfbaSMTPIN_ADDED@mx.google.com> In-Reply-To: Subject: RE: [PATCH] Disable loop2_invariant for -Os Date: Thu, 28 Jun 2012 16:33:06 +0800 Message-ID: <000001cd5508$a55ce3c0$f016ab40$@chen@arm.com> MIME-Version: 1.0 X-MC-Unique: 112062809322700501 X-IsSubscribed: yes 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 >> diff --git a/gcc/loop-init.c b/gcc/loop-init.c index 03f8f61..5d8cf73 >> 100644 >> --- a/gcc/loop-init.c >> +++ b/gcc/loop-init.c >> @@ -273,6 +273,12 @@ struct rtl_opt_pass pass_rtl_loop_done = >>  static bool >>  gate_rtl_move_loop_invariants (void) >>  { >> +  /* In general, invariant motion can not reduce code size. But it >> + will >> +     change the liverange of the invariant, which increases the >> + register >> +     pressure and might lead to more spilling.  */ >> +  if (optimize_function_for_size_p (cfun)) >> +    return false; >> + > >Can you do this per loop instead? Using optimize_loop_nest_for_size_p? Update it according to the comments. Thanks! -Zhenqiang ChangeLog: 2012-06-28 Zhenqiang Chen * loop-invariant.c (move_loop_invariants): Skip move_single_loop_invariants when optimizing loop for size diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c index f8405dd..b0e84a7 100644 --- a/gcc/loop-invariant.c +++ b/gcc/loop-invariant.c @@ -1931,7 +1931,8 @@ move_loop_invariants (void) curr_loop = loop; /* move_single_loop_invariants for very large loops is time consuming and might need a lot of memory. */ - if (loop->num_nodes <= (unsigned) LOOP_INVARIANT_MAX_BBS_IN_LOOP) + if (loop->num_nodes <= (unsigned) LOOP_INVARIANT_MAX_BBS_IN_LOOP + && ! optimize_loop_nest_for_size_p (loop)) move_single_loop_invariants (loop); }