From patchwork Mon Aug 14 09:19:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Cheng X-Patchwork-Id: 801118 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-460294-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="higM1Tyk"; dkim-atps=neutral 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 3xW9w85FCpz9t2r for ; Mon, 14 Aug 2017 19:55:36 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:content-type:mime-version; q=dns; s=default; b=SmSaBzPQhnAHJeHV2r2fcbBooLicb1/LYVZsAxY7wCeZtbvrBA 78bzctvMgP4/4RBdL4O4V6Er8ZY6PsxSjyh4BGueATb/1VZr7UwJFRrnPU6vns5S 3EzkoDkc8edgnEVwpK/rqBspedN6viXssaSXOeUpmd3mTMdJNhwqIDFkQ= 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:from :to:cc:subject:date:message-id:content-type:mime-version; s= default; bh=ROefgdmAIjCDa+X/4h/v9NneT4U=; b=higM1Tyko3bJWUuscFoy 1ezTctgtV+OOnAbeaSKA4747INPmTGJlt5jjzIghqMElsIxSrmBn/L9Rr9bZQCYC +V3l22x9ovBtckJFqwoTy9bzAYhTguTBxDAel0DouYXgdPGlcP3bsa7XS0to+X/j NSYY1ftSaWCdTgQrdvrqFLM= Received: (qmail 92091 invoked by alias); 14 Aug 2017 09:28:13 -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 49434 invoked by uid 89); 14 Aug 2017 09:20:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=REF X-HELO: EUR01-HE1-obe.outbound.protection.outlook.com Received: from mail-he1eur01on0042.outbound.protection.outlook.com (HELO EUR01-HE1-obe.outbound.protection.outlook.com) (104.47.0.42) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 14 Aug 2017 09:20:02 +0000 Received: from DB5PR0801MB2742.eurprd08.prod.outlook.com (10.166.176.26) by DB5PR0801MB2743.eurprd08.prod.outlook.com (10.166.176.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1341.21; Mon, 14 Aug 2017 09:19:46 +0000 Received: from DB5PR0801MB2742.eurprd08.prod.outlook.com ([10.166.176.26]) by DB5PR0801MB2742.eurprd08.prod.outlook.com ([10.166.176.26]) with mapi id 15.01.1341.020; Mon, 14 Aug 2017 09:19:46 +0000 From: Bin Cheng To: "gcc-patches@gcc.gnu.org" CC: nd Subject: [PATCH GCC][05/06]An interface clear all dependence_info with fixed access length tag Date: Mon, 14 Aug 2017 09:19:46 +0000 Message-ID: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Bin.Cheng@arm.com; x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB5PR0801MB2743; 6:K7X67Dffuli7uVBC8AzdAPiwp0eCIio2JD7F6L5Yp3whF+cthpOYF+2D88mBb7YbWGIvL1J93oCvCAt88OE+ffIAvCVGbL9P2F3bbTacYxn3VJCc8STatlpwgHlf820J5q+igrBFmr80WztN21ILgH6Q1jRbqgqECUUWpg4vM86HNlKqC9lDgjJY3t6C+Lx1cIR3RcsKejgEwIV9j9gOLTia8u02tZVFUDksrQH8Ob0XMOHH08F3Uhjjt2i/Vn9OKQPZAMMK0y3tn5Yp3xVfI5ESjDhUQnksrmfICfV+bOYdHrvpokoANeTV1OO3WfHeXbSvUAWkEgUlqf12FOaI+w==; 5:2FlnJIVI7UBDWyjByuUMtLIBeGBuEV7c9KlRwhA/I4WTYJy+T7u+JqewPkQ0TRUUArKskVYEA6rMx3KeuwY1hDfNRFrEOe5YVuDOyQ/zuRX6qAvPO2UyPLEibBSWVrUtbIj/jhe7FqRKKLrKwPlXow==; 24:UJaW0cRY5TN9TPAjRL4eB5ucIkmrPO++iU/rovqvupY33snFZBKtJSl/j93s9B6f7doXOaGjE2/qCadY65VHlP7UODSt8MSj16zY7BGcjek=; 7:lKyxw60weQPi+2hQ+jBAnB9Fe67AUT3VQW86fJXhoJgJFP4qBkZe6zXqzEnb9mGAirmMejb8kWsxT8mQ6JGft+bPP/Av1CiXtTbVRCKt13F9SkBeR/lmMSDjomvPYF1FpIaAeH4PggHdZG4a5RlOrlw1fCnr+99rVYy5pjU2f8I1gmru1Fj1wd17Dxawx/7bDCuwGRaug8w18Ut477HpJ6L9dp/ob3qpIUOZlmbNTAU= x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 7db69f7d-881e-4ad9-39a7-08d4e2f59b3e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(2017052603031)(49563074)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DB5PR0801MB2743; x-ms-traffictypediagnostic: DB5PR0801MB2743: nodisclaimer: True x-exchange-antispam-report-test: UriScan:(180628864354917); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(20161123558100)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB5PR0801MB2743; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB5PR0801MB2743; x-forefront-prvs: 039975700A x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(199003)(377424004)(189002)(7696004)(3280700002)(3660700001)(106356001)(6916009)(74316002)(97736004)(101416001)(2501003)(72206003)(54356999)(102836003)(3846002)(2906002)(86362001)(8936002)(105586002)(6506006)(81166006)(8676002)(81156014)(68736007)(50986999)(6116002)(99936001)(9686003)(6436002)(4326008)(2900100001)(53936002)(66066001)(189998001)(2351001)(14454004)(5640700003)(5660300001)(7736002)(77096006)(99286003)(25786009)(478600001)(33656002)(55016002)(110136004)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR0801MB2743; H:DB5PR0801MB2742.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Aug 2017 09:19:46.4243 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR0801MB2743 X-IsSubscribed: yes Hi, Given tree node (thus struct dependence_info) is kept and shadow copied on RTL, it is unsafe to pass non-dependent info to RTL in case of loop unrolling etc. This patch adds an interface clearing all dependence_info with fixed access length tag before entering RTL world. We could do it just before expanding, but for now it is done in loopdone given predcom is the only motivation pass that I know. Bootstrap and test in series. Is it OK? Thanks, bin 2017-08-10 Bin Cheng * tree-ssa-address.c (clear_dependence_info): New function. (clear_all_dependence_info): New function. * tree-ssa-address.h (clear_all_dependence_info): New declaration. * tree-ssa-loop.c: Include tree-ssa-address.h. (tree_ssa_loop_done): Call clear_all_dependence_info. From b54fa9745b3bd84cb44baf9dbee2379fa9e28362 Mon Sep 17 00:00:00 2001 From: Bin Cheng Date: Wed, 9 Aug 2017 15:40:38 +0100 Subject: [PATCH 5/6] clear-fixed-dep_info-20170801.txt --- gcc/tree-ssa-address.c | 40 ++++++++++++++++++++++++++++++++++++++++ gcc/tree-ssa-address.h | 1 + gcc/tree-ssa-loop.c | 2 ++ 3 files changed, 43 insertions(+) diff --git a/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c index aea1730..33cfab1 100644 --- a/gcc/tree-ssa-address.c +++ b/gcc/tree-ssa-address.c @@ -975,6 +975,46 @@ copy_dependence_info (tree to, tree from) MR_DEPENDENCE_FIXED_LENGTH_P (to) = MR_DEPENDENCE_FIXED_LENGTH_P (from); } +/* Clear dependence information in REF if it's for fixed access length. */ + +static inline void +clear_dependence_info (tree ref) +{ + if ((TREE_CODE (ref) != MEM_REF && TREE_CODE (ref) != TARGET_MEM_REF) + || !MR_DEPENDENCE_FIXED_LENGTH_P (ref)) + return; + + MR_DEPENDENCE_CLIQUE (ref) = 0; + MR_DEPENDENCE_BASE (ref) = 0; + MR_DEPENDENCE_FIXED_LENGTH_P (ref) = false; +} + +/* Clear all dependence information which is for fixed access length. */ + +void +clear_all_dependence_info () +{ + basic_block bb; + + FOR_EACH_BB_FN (bb, cfun) + { + for (gimple_stmt_iterator gsi = gsi_start_bb (bb); + !gsi_end_p (gsi); gsi_next (&gsi)) + { + gimple *stmt = gsi_stmt (gsi); + if (!is_gimple_assign (stmt)) + continue; + + enum tree_code code = gimple_assign_rhs_code (stmt); + if (get_gimple_rhs_class (code) != GIMPLE_SINGLE_RHS) + continue; + + clear_dependence_info (gimple_assign_lhs (stmt)); + clear_dependence_info (gimple_assign_rhs1 (stmt)); + } + } +} + /* Copies the reference information from OLD_REF to NEW_REF, where NEW_REF should be either a MEM_REF or a TARGET_MEM_REF. */ diff --git a/gcc/tree-ssa-address.h b/gcc/tree-ssa-address.h index ebba5ad..71d24a9 100644 --- a/gcc/tree-ssa-address.h +++ b/gcc/tree-ssa-address.h @@ -37,6 +37,7 @@ extern void move_fixed_address_to_symbol (struct mem_address *, tree create_mem_ref (gimple_stmt_iterator *, tree, struct aff_tree *, tree, tree, tree, bool); extern void copy_dependence_info (tree, tree); +extern void clear_all_dependence_info (); extern void copy_ref_info (tree, tree); tree maybe_fold_tmr (tree); diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c index 1e84917..0de00eb 100644 --- a/gcc/tree-ssa-loop.c +++ b/gcc/tree-ssa-loop.c @@ -32,6 +32,7 @@ along with GCC; see the file COPYING3. If not see #include "tree-ssa-loop-manip.h" #include "tree-ssa-loop-niter.h" #include "tree-ssa-loop.h" +#include "tree-ssa-address.h" #include "cfgloop.h" #include "tree-inline.h" #include "tree-scalar-evolution.h" @@ -517,6 +518,7 @@ tree_ssa_loop_done (void) free_numbers_of_iterations_estimates (cfun); scev_finalize (); loop_optimizer_finalize (); + clear_all_dependence_info (); return 0; } -- 1.9.1