From patchwork Mon Apr 23 17:53:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Monakov X-Patchwork-Id: 903095 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-476726-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ispras.ru Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="KT5FLKdh"; 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 40VDcf2d2yz9rxs for ; Tue, 24 Apr 2018 03:54:40 +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:in-reply-to:references; q=dns; s= default; b=ErlFKedUH0XioNI6TZ1RuRll9F7rwpsJ8ss/4NLE/clCF3TKN4qsm DBunGbJzQjvjtTf33PAkqjNn0isObhGUS4/OnTVVtuPYeqlYEffl65kGoRWdi7cQ qnqEpQVT2yPW1wn2XAf/OWmGJkAWTyT4QB25b3a8itcfT4g20qOjEI= 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:in-reply-to:references; s= default; bh=UJwIYqAFAZ4vGCvUVSUOa8UbYVI=; b=KT5FLKdheM1KTZm6fntX In7F4kMG0JNw5wDP2gKfv5j0cDFAaN/7zxDYSFj3D3b3R1xgVZyGcbmptNPR71Vk uGiMZHOjpO7jpCQ43NN9KpmvcwN2PR82/T6cGwReJDITMXkwNLM9uzPkTJmoN1j9 G6QJk0LpU8J9Fjv4gc8P4VI= Received: (qmail 74651 invoked by alias); 23 Apr 2018 17:54:33 -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 74618 invoked by uid 89); 23 Apr 2018 17:54:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=letter X-HELO: smtp.ispras.ru Received: from bran.ispras.ru (HELO smtp.ispras.ru) (83.149.199.196) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 23 Apr 2018 17:54:30 +0000 Received: from monopod.intra.ispras.ru (monopod.intra.ispras.ru [10.10.3.121]) by smtp.ispras.ru (Postfix) with ESMTP id 6E3A322285; Mon, 23 Apr 2018 20:54:27 +0300 (MSK) From: Alexander Monakov To: gcc-patches@gcc.gnu.org Cc: Sandra Loosemore , Michael Matz , Alexander Monakov Subject: [PATCH 2/2] df-scan: remove ad-hoc handling of global regs in asms Date: Mon, 23 Apr 2018 20:53:48 +0300 Message-Id: <20180423175348.26101-3-amonakov@ispras.ru> In-Reply-To: <20180423175348.26101-1-amonakov@ispras.ru> References: <20180423175348.26101-1-amonakov@ispras.ru> As discussed in the cover letter, the code removed in this patch is unnecessary, references to global reg vars from inline asms do not work reliably, and so we should simply require that inline asms use constraints to make such references properly visible to the compiler. Bootstrapped/regtested on powerpc64, will retest on ppc64le and x86 in stage 1. PR rtl-optimization/79985 * df-scan.c (df_insn_refs_collect): Remove special case for global registers and asm statements. --- gcc/df-scan.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/gcc/df-scan.c b/gcc/df-scan.c index 95e1e0df2d5..cbb08fc36ae 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -3207,17 +3207,6 @@ df_insn_refs_collect (struct df_collection_rec *collection_rec, if (CALL_P (insn_info->insn)) df_get_call_refs (collection_rec, bb, insn_info, flags); - if (asm_noperands (PATTERN (insn_info->insn)) >= 0) - for (unsigned i = 0; i < FIRST_PSEUDO_REGISTER; i++) - if (global_regs[i]) - { - /* As with calls, asm statements reference all global regs. */ - df_ref_record (DF_REF_BASE, collection_rec, regno_reg_rtx[i], - NULL, bb, insn_info, DF_REF_REG_USE, flags); - df_ref_record (DF_REF_BASE, collection_rec, regno_reg_rtx[i], - NULL, bb, insn_info, DF_REF_REG_DEF, flags); - } - /* Record other defs. These should be mostly for DF_REF_REGULAR, so that a qsort on the defs is unnecessary in most cases. */ df_defs_record (collection_rec,