From patchwork Mon Sep 18 11:38:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 112915 Delivered-To: patch@linaro.org Received: by 10.80.163.150 with SMTP id s22csp3270776edb; Mon, 18 Sep 2017 04:39:10 -0700 (PDT) X-Received: by 10.84.232.6 with SMTP id h6mr35442815plk.66.1505734750569; Mon, 18 Sep 2017 04:39:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1505734750; cv=none; d=google.com; s=arc-20160816; b=TM9sJ8kmQmCcdoMaJZNCHa34LLS9yFdDnqEXZaelIYdmeWdaDlLn+CTqdMnMu0arc2 muUiqRI9lLUlkrGXgpZ6TCwUPZ4JcVdT0xqmpVInSgjiPyC9cZDIHjcwhAcr1OZAluDv FI8Xkg/pOVc0e0Nm3F28KfzdQLtoCjpzSNn0DMeYJ8szou+/8vAcJjUQ42UU6ClnY0Aq GyvAPnBmumH+LxFTmGMdYXsCycuK5+9Vb7XW4IcWyuolJWjA8ZR4d63vTbwkrmg/F4oy /AnDwSiZEnJAJ6mpo3oNw6Ie3K9bi/uq0zj6cNrwWf1F0QPDZbc4z1OjszaMVpJYCWqw UzTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:user-agent:message-id:date:subject:mail-followup-to:to :from:delivered-to:sender:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mailing-list:dkim-signature :domainkey-signature:arc-authentication-results; bh=CPUAah9kE0SMMCsIjSNK35Km+0lAZIx5pBuAL/0Ah/g=; b=BJ3FPqModOZGOaGROcjb4bZEvJiiYgXKUdz+IIVyjGhIT1zpNa/tjeCGu1+3/i5w3r +qj/s79GXRps+7VqDilt/NZolWVEytxkgF+/VioTBUou8p1eh5++Bs0YTbQTqGaP6iUl fXBnJjoSlLSsyO+rfb7Fwyr6mCk+5OuQk9HHZCS2U9hK7ZlsG8phPkei1uCnSR1x1/G+ 5Eb6XQqN7bC4y0ZxF7J2QO738DtsGfhRehZxqnNBjoJy4oULJVLZ3iliH01lvIWhUq/u 06eb9PvGDMDtpHe5KP5byG4Z2UNcQvmv0Q6oZGJ8Alz01HxM6VLke2M+h553DyxmyE0h /Gyg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=VwQDz90N; spf=pass (google.com: domain of gcc-patches-return-462392-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-462392-patch=linaro.org@gcc.gnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id 3si4728340plo.278.2017.09.18.04.39.10 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 18 Sep 2017 04:39:10 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-462392-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=VwQDz90N; spf=pass (google.com: domain of gcc-patches-return-462392-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-462392-patch=linaro.org@gcc.gnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org 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:subject:date:message-id:mime-version:content-type; q=dns; s= default; b=F8kR5RfLBSlcxsDhEesTdnlns7Z8iBv55fBfoTC2zgsvsdfH+Nc1J K30rENMwPFOLo1RyQ5saBd6D2S1hHnvdEl/K3wBNn39aXwO5dDKXSe3WQy4nooxk fzvmmi3wCqX01EyL6G8Tru2I8C8RX5kufhzyWv53fqygZSjOx4pq44= 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:subject:date:message-id:mime-version:content-type; s= default; bh=7JLMYGqCeN8J9eX3N2OawA+/KNQ=; b=VwQDz90NizaO/kZkhvOZ jXDhi2oTz1nmyBUf2MXFxGSk4HZYiK2/0QjznwDsbqy88a+S+fcctlTY75yGK9Xl LZpCy+QWLMft+4oO3EBSjHN1hop3Oe67vq0XGThnRoL6r6afBym1xSuUpuhJo6xx sllrCOavkmPK92WssE+BHsM= Received: (qmail 88095 invoked by alias); 18 Sep 2017 11:39:00 -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 88085 invoked by uid 89); 18 Sep 2017 11:38:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-wr0-f177.google.com Received: from mail-wr0-f177.google.com (HELO mail-wr0-f177.google.com) (209.85.128.177) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 18 Sep 2017 11:38:58 +0000 Received: by mail-wr0-f177.google.com with SMTP id 108so216232wra.5 for ; Mon, 18 Sep 2017 04:38:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:mail-followup-to:subject:date:message-id :user-agent:mime-version; bh=CPUAah9kE0SMMCsIjSNK35Km+0lAZIx5pBuAL/0Ah/g=; b=dll9UzDgGlzOdQnZIut9O4e/dkPCmcG1z3GYBZypjS2zd3xjCQLJm5p61cGdP5f3VU YPBUE1sD1qVBbFcSMNqrFOcZ7Z3gzqtHDY8mc4/1dTDaTV9ZPaTxhn2Hx6JoyEoMYdrl Nm6XMEdHsAoaeBiQ2rKC5hbGrN9s2U/0D26tF6lCgbnrbpGvakzKpAlgixoyXNkHZE+A RF/Jek5Hjr62TAank2o4EIE0q5sSNcMBLuSRmvLnQGTnNVzRNAnfRKYM9yIw06AWHfeG SOB7I8bBWyIzKghrJ4mQyxgJU0PHuwX/WisA+yDnspM00GiOq9GovzyeAdzOsPmNyqSv CNjQ== X-Gm-Message-State: AHPjjUjKb+PanaqoYtKgLJj6YyFqcCOgOphNs7Rbl6DyM2xMzPaGO723 3Ku3FnEZhp/rWkKYYthxZg== X-Google-Smtp-Source: ADKCNb5xNgrtleNCdwjZTPambRI/075mabS7yw66NryOsS8IuxI0Apz18yQjUAuJE8qt9aDR1FgWtQ== X-Received: by 10.223.169.83 with SMTP id u77mr25377386wrc.268.1505734736424; Mon, 18 Sep 2017 04:38:56 -0700 (PDT) Received: from localhost (92.40.248.255.threembb.co.uk. [92.40.248.255]) by smtp.gmail.com with ESMTPSA id w18sm3218106wra.61.2017.09.18.04.38.54 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Sep 2017 04:38:55 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@linaro.org Subject: Prevent invalid register mode changes in combine Date: Mon, 18 Sep 2017 12:38:52 +0100 Message-ID: <87bmm8grsj.fsf@linaro.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 This patch stops combine from changing the mode of an existing register in-place if doing so would change the size of the underlying register allocation size, as given by REGMODE_NATURAL_SIZE. Without this, many tests fail in adjust_reg_mode after SVE is added. One example is gcc.c-torture/compile/20090401-1.c. Tested on aarch64-linux-gnu, x86_64-linux-gnu and powerpc64le-linux-gnu. Also tested by comparing the testsuite assembly output on at least one target per CPU directory. OK to install? Richard 2017-09-18 Richard Sandiford Alan Hayward David Sherwood gcc/ * combine.c (can_change_dest_mode): Reject changes in REGMODE_NATURAL_SIZE. Index: gcc/combine.c =================================================================== --- gcc/combine.c 2017-09-18 12:31:05.459555526 +0100 +++ gcc/combine.c 2017-09-18 12:31:05.604645232 +0100 @@ -2451,6 +2451,12 @@ can_change_dest_mode (rtx x, int added_s if (!REG_P (x)) return false; + /* Don't change between modes with different underlying register sizes, + since this could lead to invalid subregs. */ + if (REGMODE_NATURAL_SIZE (mode) + != REGMODE_NATURAL_SIZE (GET_MODE (x))) + return false; + regno = REGNO (x); /* Allow hard registers if the new mode is legal, and occupies no more registers than the old mode. */