From patchwork Tue Mar 26 19:05:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Uros Bizjak X-Patchwork-Id: 1065983 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-498470-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="lIio1Y8x"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="gCXiee3z"; 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 44TLFW3LWcz9sTk for ; Wed, 27 Mar 2019 06:06:00 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:from:date:message-id:subject:to:content-type; q= dns; s=default; b=YxTpWamTPWd5MmwRWjZYvrYswxiwb503WcZhbzyxdg0Yv3 k9WyaRAY4eNsNoGu/OAVN8zxmcsxfqQqNHrotfr/yJtB3cTsTkGR86C6bpukoIrw GHvr/13ptSQ1+UxuQuk+ZuWR3FySqU4LennUXK2/A0rS7w6wSO8Dl74LHGQRY= 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 :mime-version:from:date:message-id:subject:to:content-type; s= default; bh=xfjYS8eKA1nUy/X8BBE5zEHYpB0=; b=lIio1Y8xnNoo8G1hpwkm fHupHqPBQBuizqqt4s/t86smKPeesI0eR/ef9++zyHsG9pvbisePkHrc/NufpwKV rK2h8yCSk9xgqhok59Cbme/RIr3no56/SBZoP67eeHi7XplKppA4USYeDKEjxaK0 OWIybsQTgJjsW0dMeqQSvUc= Received: (qmail 46696 invoked by alias); 26 Mar 2019 19:05:51 -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 46679 invoked by uid 89); 26 Mar 2019 19:05:51 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-6.5 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-io1-f43.google.com Received: from mail-io1-f43.google.com (HELO mail-io1-f43.google.com) (209.85.166.43) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 26 Mar 2019 19:05:49 +0000 Received: by mail-io1-f43.google.com with SMTP id s7so11815024iom.12 for ; Tue, 26 Mar 2019 12:05:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=IT3qmkLn3FXcTJyb7wMz598grIDJd9NsqIysKmDuK50=; b=gCXiee3zVN5spKZ6stlQcz21cQzJCzLgpb71TIDKQGBtvq6HhEbXE0+c0pT7ksIr0G tfveP/qXohaNDejUzSRiJtrKauQ3CrHwfHmivrbkHx7bJ0MkTSvyEOYjeoa7N9EqvRUG kQXRisgsxdQjPVXftrlPdIbNLbopuFcyaSOBFlq4oq6f+UdrMZ6e7Ot/EQ1ltK1Q8tSI ZGmkOplRhFeXXM/pCOhs42CzXOR87qZ2Q5ZKC9JxLmbDHozS0WBkZbt3egm/d9KA6oXw ZxVbbBDat/hUSKpUHJKt9ixvUBVrbaYUU3zjxbdkPQ+EDhDysCQTTtiF4//0qgo1b0J3 4Fvw== MIME-Version: 1.0 From: Uros Bizjak Date: Tue, 26 Mar 2019 20:05:35 +0100 Message-ID: Subject: [PATCH, i386]: Fix PR89827, ICE: in convert_op To: "gcc-patches@gcc.gnu.org" Attached patch fixes a corner case in STV pass where the shift operand register equals shift count register. The specialization for shift insns marked register as processed, but didn't process shift input operand, leaving an unprocessed DImode register. 2019-03-26 Uroš Bizjak PR target/89827 * config/i386/i386.c (dimode_scalar_chain::convert_reg): Also process XEXP (src, 0) of a shift insn. testsuite/ChangeLog: 2019-03-26 Uroš Bizjak PR target/89827 * gcc.target/i386/pr89827.c: New test. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. Committed to mainline SVN, will be backported to gcc-8 branch. Uros. Index: config/i386/i386.c =================================================================== --- config/i386/i386.c (revision 269950) +++ config/i386/i386.c (working copy) @@ -2040,6 +2040,7 @@ dimode_scalar_chain::convert_reg (unsigned regno) emit_insn_before (seq, insn); + XEXP (src, 0) = replace_with_subreg (XEXP (src, 0), reg, reg); XEXP (src, 1) = gen_rtx_SUBREG (DImode, tmp2, 0); } else if (!MEM_P (dst) || !REG_P (src)) Index: testsuite/gcc.target/i386/pr89827.c =================================================================== --- testsuite/gcc.target/i386/pr89827.c (nonexistent) +++ testsuite/gcc.target/i386/pr89827.c (working copy) @@ -0,0 +1,11 @@ +/* PR target/89827 */ +/* { dg-do compile { target ia32 } } */ +/* { dg-options "-O2 -msse2 -mstv -mno-stackrealign" } */ + +unsigned long long a; + +void +foo (void) +{ + a >>= (unsigned short) a; +}