From patchwork Wed Aug 16 15:34:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 9903989 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 240B260231 for ; Wed, 16 Aug 2017 15:35:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1654D22B27 for ; Wed, 16 Aug 2017 15:35:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0B3BA286AC; Wed, 16 Aug 2017 15:35:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B454A22B27 for ; Wed, 16 Aug 2017 15:35:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751605AbdHPPfg (ORCPT ); Wed, 16 Aug 2017 11:35:36 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:35507 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751575AbdHPPff (ORCPT ); Wed, 16 Aug 2017 11:35:35 -0400 Received: by mail-wr0-f195.google.com with SMTP id w63so3696209wrc.2 for ; Wed, 16 Aug 2017 08:35:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=w9tb4oZt53oIPboUiGi/o4CiS6jbs1/VtA71CRYfD6Y=; b=Nq9Kc9QaNeKeoU2aasvoU7kr1HfLoDFgLw2lpttSPTFXwxblH/tx+TUZPF+E16YiNx zQzwdN8GEqgSJgvjYhjOa5gPoGlupa0ZCBVXprGwIMVjbXbOxyFkDM4MLHH5YTlbD35Q 84Q6kL8i+qe/lYmFkQSi+8lgHPHgBK2SErGaA3uECXTcHSIefpbDATVSTGo2dh1AQ4NN XkKDTV9XHGWkOx+QTL55HAWVlP+sB2HeWS3o05dEJDLCCAUMxxZgvLmqhYVlfCvCI6MP iWcVTQNP8TEWXy8F2EBAs+r3lzHhOM6hwPLQuCc64rxUrKACmeqhrz8FvKEnT29+hNk5 ubDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=w9tb4oZt53oIPboUiGi/o4CiS6jbs1/VtA71CRYfD6Y=; b=KJnYNCOTzASZDGnr4wlu1PJN+cB8YynkE8UE5M4SL9XzU2YoG7/Q8/fTziBLU8qeH/ LTcWYvJpLDaxqtAdJHMxcB37+8/VXECzRN5qXvjIePmNwhsdUTAmgvJ9UVqkMObfWM8W jcr9AvFTF+ATMfjXdxUly3nalEPPwlRP5yWShF/0p+S5gyJuPRV2aEEeBCnpXfqw2xB5 ppO3KG8N030u3xafWY70RFDfjMnNHr/GJ4U7RLAlDDXnyBPKAGCBPzbanY9L5Lz3axFR qK+LntYxfObxdRfSPt99Ph91GY6UnFSrKTvTbd53iUpxAujOTEvJKTEiHjHHiYbZ6brA qHig== X-Gm-Message-State: AHYfb5jLXsWSuD4f4QDxqgnVM/IwpAiwpSKFPAJiqMJQBVCJ5QKtBy9H LA4FINgexfR4SgSxuKA= X-Received: by 10.80.148.130 with SMTP id s2mr2357666eda.106.1502897734657; Wed, 16 Aug 2017 08:35:34 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:4076:600:895a:bb88:13f:9772]) by smtp.gmail.com with ESMTPSA id y19sm690635edi.6.2017.08.16.08.35.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Aug 2017 08:35:34 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Linus Torvalds , Christopher Li , Luc Van Oostenryck Subject: [PATCH 15/29] add remove_use() Date: Wed, 16 Aug 2017 17:34:41 +0200 Message-Id: <20170816153455.97693-16-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.14.0 In-Reply-To: <20170816153455.97693-1-luc.vanoostenryck@gmail.com> References: <20170816153455.97693-1-luc.vanoostenryck@gmail.com> Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add an helper to remove the usage of a pseudo, like kill_use() do but unlike kill_use(), without trying to kill (recursively!) the defining instruction if the usage drop to zero. It will be used during SSA construction, when it is not yet safe to kill instructions. If the usage drop to zero, nothing special is done, the instruaction becomes dead and will be eliminated later. Signed-off-by: Luc Van Oostenryck --- flow.h | 1 + simplify.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/flow.h b/flow.h index b592ad4d3..3133245e5 100644 --- a/flow.h +++ b/flow.h @@ -24,6 +24,7 @@ extern int simplify_instruction(struct instruction *); extern void kill_bb(struct basic_block *); extern void kill_use(pseudo_t *); +extern void remove_use(pseudo_t *); extern void kill_unreachable_bbs(struct entrypoint *ep); extern void kill_insn(struct instruction *, int force); diff --git a/simplify.c b/simplify.c index 2bc86f53e..d007bee02 100644 --- a/simplify.c +++ b/simplify.c @@ -202,6 +202,19 @@ void kill_use(pseudo_t *usep) } } +/* + * Like kill_use() but do not recursively kill instructions + * that become without users. + */ +void remove_use(pseudo_t *usep) +{ + pseudo_t p = *usep; + *usep = VOID; + if (has_use_list(p)) { + delete_pseudo_user_list_entry(&p->users, usep, 1); + } +} + static void kill_use_list(struct pseudo_list *list) { pseudo_t p;