From patchwork Thu Nov 2 22:27:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 117846 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp2719629qgn; Thu, 2 Nov 2017 15:27:33 -0700 (PDT) X-Google-Smtp-Source: ABhQp+QTlEpFmcMeZ/kecDywqbINzfwXlnO8m1RmiXpU8J29EdfS0/+6wk61rFqEh/69oFnzYt4C X-Received: by 10.99.123.83 with SMTP id k19mr5046996pgn.338.1509661653521; Thu, 02 Nov 2017 15:27:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509661653; cv=none; d=google.com; s=arc-20160816; b=fKMsm2eHKYv1IeTUxhYuvOd/bht/bB+7YDztoqetU8gDKz4MoBw9Jb+0FdkZyaujxS jV2gpbzgoup7MVQW3LxfECjwsZI6QyjivvCEdvMrO1DtNOjs3gpJsnnp1BNE/DSW+wFZ 2X4gK7uvOQ8/AIbGZ7lBscHnsTW+P/oz9WE3hvnfN1qPAyLZlIXmYxFhZyF9nEEA2jrK nh0AksAtHGXSYFGjEYD0pDjVw3yYY58dGorzDqHe9I/Twx/ypZO6A3Ta2XgDA4ilYKxY yfib/H3lJKuWFd4KO0iuj9Uvtfy8bD6bfbI2eLQSTCGs5utTLxYO1l35yQxXMg9tVl0P +f5Q== 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=q7qhrLKHJL8rmcIn5C0REoCFkKG5Eny8cNhaBf07UXQ=; b=V3ANmmBpknSk4HY/lQyHDfAXd1UdBZzk0LLmkZo7yfw9SHxbivpspShVHqurALvY3T 97GLoAgqulc5ry8o6CmH1TGHcRCbnAaRtls3pKOuO67Mt8l393tZqvmzNXnypnyaTrB6 4bMMg/Lfw2cf1yvkNDKiNgnqKwYMdwiGR8vNhRQT4iQHFlMWUrpjVQ4GXbZRSJSxYQ69 iPFAQgUumpK7Z2j3GONPJ/X2Yz/k1o62jS73g6wxGiMEbkL25cchli2ZF0rZWu/dQz52 yTAzKHlVoD78WKcGV4jBfqyeD/lHqEvUj74ZLg9cPYkW64qOyYXlR34aPLPSUFmGx5Lg PVeQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Qyvql3Fo; spf=pass (google.com: domain of gcc-patches-return-465797-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-465797-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 be3si2949831plb.408.2017.11.02.15.27.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 02 Nov 2017 15:27:33 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-465797-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=Qyvql3Fo; spf=pass (google.com: domain of gcc-patches-return-465797-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-465797-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=qPLhb8yEZh1FNny0FMUXG4Dy9oW7M5ZAQOuHo7A3tEzAs7tQ6b4sf ogVl+3NKqGj4dqt+hnt/tUefrjEJedNoxdKssazbWuZE61stPCXJdj4meRK01m3X v28kkwgn6ktPauqvSQ/UETr0U4e9iD2KjPOlHXVOCGQMmqPbDceVwc= 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=VR6fkhfRBALVKJFQ5Xq3Xw1W4VQ=; b=Qyvql3FoAm4vWe5IwObf GJqtRi+ki3EHwf7fLcLMgP3KQGyoMdlK5AXpZu/ZjDKgq2PI1XpI0NSzC+oD4ktd /m88cpizdJ7THE4qEzIVPmQlgCNt/Pm0pFnztAcchEo0bUDiClnjawc2OygH1DlE WYCC05MOJ7Ky/7ceLZRy57I= Received: (qmail 98257 invoked by alias); 2 Nov 2017 22:27:20 -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 98247 invoked by uid 89); 2 Nov 2017 22:27:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-wr0-f179.google.com Received: from mail-wr0-f179.google.com (HELO mail-wr0-f179.google.com) (209.85.128.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 02 Nov 2017 22:27:18 +0000 Received: by mail-wr0-f179.google.com with SMTP id p96so944263wrb.7 for ; Thu, 02 Nov 2017 15:27:17 -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=q7qhrLKHJL8rmcIn5C0REoCFkKG5Eny8cNhaBf07UXQ=; b=qBuLolHopGvmvns4xVzS9Jv/HHDY2bjG2hliN4t4gOAo8dF4Ew+vyZ7Xu602fv9AMK UHwnzRysRnRMn27iJUyCNFP9qHw47A+RrVtmtMyByWwenPE7fj6FiiLlUTTcLp/UCvRs 6MnlWJdozGBnSjX3aJjEFTc97yJlYt6Vvw8JT0VKiJCY7fDN2xtXcfC7fwvpfurQnBja hMMwCTFhl4pxh4MYuuZx7GjMWLjynR1LWYd1h633tHxfq0qCIaKV6Edo/elj+4vam6gy 4HryS4ylrNaoTD76aBRv+sEhH5anXJOhLDmr6JoYPyLuuBKq9SUjEM+boOHesVjIVX35 KAwA== X-Gm-Message-State: AMCzsaXvxKhXxtN+qeeBzFXWbem0lBmR0jBkOjey+2oxyDKESblo6Uan 1d0ii+xFtXBY7XMl+jZ45O7ttYTa6t0= X-Received: by 10.223.161.210 with SMTP id v18mr4371585wrv.76.1509661635876; Thu, 02 Nov 2017 15:27:15 -0700 (PDT) Received: from localhost ([2.26.27.199]) by smtp.gmail.com with ESMTPSA id o24sm748572wmi.39.2017.11.02.15.27.14 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 Nov 2017 15:27:14 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@linaro.org Subject: PR82809: register handling in ix86_vector_duplicate_value Date: Thu, 02 Nov 2017 22:27:14 +0000 Message-ID: <87bmkkmi4d.fsf@linaro.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 When adding the call to gen_vec_duplicate, I failed to notice that code further down modified the VEC_DUPLICATE in place. That isn't safe if gen_vec_duplicate returned a const_vector. Tested on x86_64-linux-gnu. OK to install? Thanks, Richard 2017-11-02 Richard Sandiford gcc/ PR target/82809 * config/i386/i386.c (ix86_vector_duplicate_value): Use gen_vec_duplicate after forcing the scalar into a register. gcc/testsuite/ * gcc.dg/pr82809.c: New test. Index: gcc/config/i386/i386.c =================================================================== --- gcc/config/i386/i386.c 2017-11-01 09:20:07.353478095 +0000 +++ gcc/config/i386/i386.c 2017-11-02 22:22:41.073913390 +0000 @@ -41232,7 +41232,7 @@ ix86_vector_duplicate_value (machine_mod reg = force_reg (innermode, val); if (GET_MODE (reg) != innermode) reg = gen_lowpart (innermode, reg); - XEXP (dup, 0) = reg; + SET_SRC (PATTERN (insn)) = gen_vec_duplicate (mode, reg); seq = get_insns (); end_sequence (); if (seq) Index: gcc/testsuite/gcc.dg/pr82809.c =================================================================== --- /dev/null 2017-11-02 18:54:18.211305311 +0000 +++ gcc/testsuite/gcc.dg/pr82809.c 2017-11-02 22:22:41.076914027 +0000 @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-Ofast -fno-tree-dominator-opts" } */ + +struct locale_time_t +{ + const char *abday[7]; + const unsigned int *wabday[7]; +}; + +static const unsigned int empty_wstr[1] = { 0 }; + +void +time_read (struct locale_time_t *time) +{ + int cnt; + + for (cnt=0; cnt < 7; cnt++) + { + time->abday[cnt] = ""; + time->wabday[cnt] = empty_wstr; + } +}