From patchwork Wed Aug 23 20:15:30 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: 9918287 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 D6A5B602CB for ; Wed, 23 Aug 2017 20:16:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C98A328A2C for ; Wed, 23 Aug 2017 20:16:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BE60128A2E; Wed, 23 Aug 2017 20:16:49 +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 61A0228A2C for ; Wed, 23 Aug 2017 20:16:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932616AbdHWUQt (ORCPT ); Wed, 23 Aug 2017 16:16:49 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:37200 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932565AbdHWUQs (ORCPT ); Wed, 23 Aug 2017 16:16:48 -0400 Received: by mail-wm0-f65.google.com with SMTP id v186so631831wmf.4 for ; Wed, 23 Aug 2017 13:16:48 -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=OIYk0Vdf19OjUM/9Q7TdCu8SQqgVqXCBogtxf096iNA=; b=HCnZQvRiv9EFtIbVHZ64+qfeLpBcHx6VN/dJ520JaYCBK5VPyiXqN6W93ri3N0wzp+ hNJNcbEZyolXXfN5xV9F4LKQZR2bQYMJrnNboGhPMuh6imrZrx33D5X3Mewpq/qpsVJw 4gjaeOOjdctKYsbrr95VfzCgMGXy3Ta5bs7WQtDpKemdFdxP3KNDzC/wSpI0tcCMkmSH g94sysVt4wsmmYsRrkDBw5pmlR/UE+VPVaFr+VK+KtcaZFBOCYVIJJoRKtKgQbaV9uxe EFK9kUBR7MKgDeMU+/B7icuQPoqFLtFTw/wVHnUsoHw4kAVGSU/ALmHLpUe3jyk1V8jm nLqg== 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=OIYk0Vdf19OjUM/9Q7TdCu8SQqgVqXCBogtxf096iNA=; b=BdNK3jtxPaziS6xgyU8vKzvJaGvZEt9B3Hk4vVFGvTvQcUMCUoSoSOu6Y9oqDOh1po cKh2/A+ObQi9sN9fHcOBX07afHfBCatXe1fG8m3/5dCtXXkyBCm4IrCoQTABLHucUPxI 1G1+z1kHXE4KRgM+0UUkZ+Us+C86QLpxW1Nd39i1ZKpKb5t80k5JSEQwhDZgL6TkqzCW +A5lEP9HJAoF+U73wen3TNKMTxpTSNsqT4XPRdDDpLlym9YtWhrmD2eZG1R0KoBgtMlA p3r2xb513BSm68x7vcQcuQCvQQGDEawHSBukFLWEky+M4lW1GabpYHnrcI0ytfNWUWG/ zr1A== X-Gm-Message-State: AHYfb5io1hFZ7C57olE4KCVoMyHEF64qatm+wdlHSxzL7LjP1Gwt80Jk gRp4ZFfDneKxwBRS2uY= X-Received: by 10.80.144.11 with SMTP id b11mr4050842eda.24.1503519407201; Wed, 23 Aug 2017 13:16:47 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:4076:600:9020:103b:7912:3a40]) by smtp.gmail.com with ESMTPSA id e29sm1183374edd.88.2017.08.23.13.16.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 23 Aug 2017 13:16:46 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Christopher Li , Luc Van Oostenryck Subject: [RFC PATCH 24/48] mem2reg: extract externaly_visible() Date: Wed, 23 Aug 2017 22:15:30 +0200 Message-Id: <20170823201554.90551-25-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.14.0 In-Reply-To: <20170823201554.90551-1-luc.vanoostenryck@gmail.com> References: <20170823201554.90551-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 --- mem2reg.c | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/mem2reg.c b/mem2reg.c index 2309d11c1..6fe864df0 100644 --- a/mem2reg.c +++ b/mem2reg.c @@ -240,26 +240,12 @@ static void kill_dominated_stores(pseudo_t pseudo, struct instruction *insn, } END_FOR_EACH_PTR(parent); } -static void promote_symbol(struct entrypoint *ep, struct symbol *sym) + +static unsigned long externaly_visible(struct symbol *sym, unsigned long mod) { - pseudo_t pseudo; + pseudo_t pseudo = sym->pseudo; struct pseudo_user *pu; - unsigned long mod; - int all; - /* Never used as a symbol? */ - pseudo = sym->pseudo; - if (!pseudo) - return; - - mod = sym->ctype.modifiers; - - /* We don't do coverage analysis of volatiles.. */ - if (mod & MOD_VOLATILE) - return; - - /* ..and symbols with external visibility need more care */ - mod = mod & (MOD_NONLOCAL|MOD_STATIC|MOD_ADDRESSABLE); if (mod) goto external_visibility; @@ -288,6 +274,31 @@ static void promote_symbol(struct entrypoint *ep, struct symbol *sym) } END_FOR_EACH_PTR(pu); external_visibility: + return mod; +} + +static void promote_symbol(struct entrypoint *ep, struct symbol *sym) +{ + pseudo_t pseudo; + struct pseudo_user *pu; + unsigned long mod; + int all; + + /* Never used as a symbol? */ + pseudo = sym->pseudo; + if (!pseudo) + return; + + mod = sym->ctype.modifiers; + + /* We don't do coverage analysis of volatiles.. */ + if (mod & MOD_VOLATILE) + return; + + /* ..and symbols with external visibility need more care */ + mod = mod & (MOD_NONLOCAL|MOD_STATIC|MOD_ADDRESSABLE); + mod = externaly_visible(sym, mod); + all = 1; FOR_EACH_PTR_REVERSE(pseudo->users, pu) { struct instruction *insn = pu->insn;