From patchwork Fri Nov 22 21:59:20 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dehao Chen X-Patchwork-Id: 293603 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)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 5FD7E2C00E2 for ; Sat, 23 Nov 2013 08:59:39 +1100 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; q=dns; s=default; b=i0aSnCx59StMsBVSnW VLhpe7HAkSyA+bhmon0/I0RVedFhdCw4lmtsqp9KieIcmrCbxNLE3Om4QggQagw0 A3tmG6VD/5zS1lXmDt3R+dxl0Vt0ub7zt26W+bFIMeWypggQH3c2YuZyWbdTRwM0 MUkYI4FY/XD6LpTJwLo1e2UOM= 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 :mime-version:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; s=default; bh=GgvOEyWZaczBhJPbJAmgkirA zdE=; b=mFaN5AI4w7vRRo0bcBDDb42i+D87I6jMdiWY2x83E3IX+3utWc+OjnXN D5e2A6d3LiXSzAnHjdhnltmjxSX/DO9tY2dy+r6UWBF4oq8N6Ga64DSLsO8epKT+ 8TUzek7cocSFiu1NgSC0l9qQhUjuW7V/wQIVP3LufsPwUyiqMUE= Received: (qmail 27485 invoked by alias); 22 Nov 2013 21:59:29 -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 27474 invoked by uid 89); 22 Nov 2013 21:59:29 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.1 required=5.0 tests=AWL, BAYES_50, RDNS_NONE, SPF_PASS autolearn=no version=3.3.2 X-HELO: mail-ie0-f172.google.com Received: from Unknown (HELO mail-ie0-f172.google.com) (209.85.223.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Fri, 22 Nov 2013 21:59:28 +0000 Received: by mail-ie0-f172.google.com with SMTP id qd12so3203764ieb.17 for ; Fri, 22 Nov 2013 13:59:20 -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:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=mj+ILuUeCDjyV1RadFu2sp+25IZHVX3d2d823aMN7cE=; b=eHNUfAuPXWLTeVgQAGGa166HK05bq9CwD75r5iikhisWJCGMhfp3kDlBRCbWS1kAl+ 0t9RNVOoa9/Jatk7KpANZA9b5bL03RP5UJsF4wFCdWewhVz6Fejk+0L9z76OoiEIzhzn WtCTEykcZzwQU8vAE61psQUS7EfT7uWvKmOMoTDUePVbahrTlQZxMt2M3sbX21kXo8j4 fyVo8+bEzyIx25s9uC4qIt8EeLMmxRl4nDLryl0m3S39AYSR663A14j28zc8TkV1cYtM bg09LZr3Eay+5P+faZiJMMsGbEpwCSDiS+yC3sz+x0So6FVf34xkYYMRHTgNTajKvPCm DuGA== X-Gm-Message-State: ALoCoQmFb+7j0lmla64v7UHB/lNz4H4ff/N77WW8PYeLFTwMsjWVZbJ8Lij0N7I/h/iGDRVFC+y8xIDOuml2n8AHID7mkKV/L10x8DLztWiycJOPRzmDUAp1lT7eNWSszFjDlg9mQ8mIJqxagS3kbRb6Ac9po91upe7ZPtTfSDqNHCxxHs64c1JBxuQkFrKMArRQ3Tkg2NIqL8OoxFBcxPHjCyQPs7A6zQ== MIME-Version: 1.0 X-Received: by 10.42.130.129 with SMTP id v1mr9125381ics.32.1385157560647; Fri, 22 Nov 2013 13:59:20 -0800 (PST) Received: by 10.64.9.133 with HTTP; Fri, 22 Nov 2013 13:59:20 -0800 (PST) In-Reply-To: References: Date: Fri, 22 Nov 2013 13:59:20 -0800 Message-ID: Subject: Re: [GOOGLE] Remove zero_edge propagation algorithm From: Dehao Chen To: Xinliang David Li Cc: GCC Patches , Diego Novillo X-IsSubscribed: yes Patch updated... There is no performance change with/without the patch. I think this was used to workaround the debug info accuracy issue. But after debug info is more improved now, the heuristic is not needed any more. Thanks, Dehao On Fri, Nov 22, 2013 at 1:17 PM, Xinliang David Li wrote: > On Fri, Nov 22, 2013 at 12:27 PM, Dehao Chen wrote: >> This patch removes the zero_edge heuristic during profile propagation. >> The zero_edge heuristic does not seem to be effective in improving >> performance. > > "not effective" here means degrading performance? > > David > >> >> Tested: >> Bootstrapped and passed regression test and performance test. >> >> OK for google-4_8? >> >> Thanks, >> Dehao >> >> Index: gcc/auto-profile.c >> =================================================================== >> --- gcc/auto-profile.c (revision 205232) >> +++ gcc/auto-profile.c (working copy) >> @@ -1122,7 +1122,7 @@ afdo_propagate_multi_edge (bool is_succ) >> >> FOR_EACH_BB (bb) >> { >> - edge e, unknown_edge = NULL, zero_edge = NULL; >> + edge e, unknown_edge = NULL; >> edge_iterator ei; >> int num_unknown_edge = 0; >> gcov_type total_known_count = 0; >> @@ -1132,8 +1132,6 @@ afdo_propagate_multi_edge (bool is_succ) >> FOR_EACH_EDGE (e, ei, bb->succs) >> if ((e->flags & EDGE_ANNOTATED) == 0) >> num_unknown_edge ++, unknown_edge = e; >> - else if (e->count == 0) >> - zero_edge = e; >> else >> total_known_count += e->count; >> } >> @@ -1153,12 +1151,6 @@ afdo_propagate_multi_edge (bool is_succ) >> bb->count = total_known_count; >> changed = true; >> } >> - else if (zero_edge != NULL && total_known_count < bb->count >> - && bb->loop_father && bb->loop_father->header == bb) >> - { >> - zero_edge->count = bb->count - total_known_count; >> - changed = true; >> - } >> if ((bb->flags & BB_ANNOTATED) == 0) >> { >> bb->flags |= BB_ANNOTATED; Index: gcc/auto-profile.c =================================================================== --- gcc/auto-profile.c (revision 205232) +++ gcc/auto-profile.c (working copy) @@ -1122,29 +1122,16 @@ afdo_propagate_multi_edge (bool is_succ) FOR_EACH_BB (bb) { - edge e, unknown_edge = NULL, zero_edge = NULL; + edge e, unknown_edge = NULL; edge_iterator ei; int num_unknown_edge = 0; gcov_type total_known_count = 0; - if (is_succ) - { - FOR_EACH_EDGE (e, ei, bb->succs) - if ((e->flags & EDGE_ANNOTATED) == 0) - num_unknown_edge ++, unknown_edge = e; - else if (e->count == 0) - zero_edge = e; - else - total_known_count += e->count; - } - else - { - FOR_EACH_EDGE (e, ei, bb->preds) - if ((e->flags & EDGE_ANNOTATED) == 0) - num_unknown_edge ++, unknown_edge = e; - else - total_known_count += e->count; - } + FOR_EACH_EDGE (e, ei, is_succ ? bb->succs : bb->preds) + if ((e->flags & EDGE_ANNOTATED) == 0) + num_unknown_edge ++, unknown_edge = e; + else + total_known_count += e->count; if (num_unknown_edge == 0) { @@ -1153,12 +1140,6 @@ afdo_propagate_multi_edge (bool is_succ) bb->count = total_known_count; changed = true; } - else if (zero_edge != NULL && total_known_count < bb->count - && bb->loop_father && bb->loop_father->header == bb) - { - zero_edge->count = bb->count - total_known_count; - changed = true; - } if ((bb->flags & BB_ANNOTATED) == 0) { bb->flags |= BB_ANNOTATED;