From patchwork Sun Apr 7 19:21:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Uros Bizjak X-Patchwork-Id: 1080273 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-498935-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="pAPQu+9e"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="vg45pH3C"; 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 44ck2827Vlz9sPp for ; Mon, 8 Apr 2019 05:21:50 +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 :mime-version:from:date:message-id:subject:to:content-type; q= dns; s=default; b=brfa3qhDjLPkUYIpya9PmbJ+Hv2kHHQCkKBMfbcgVeELRP 0C0vCJb/oGxO+34kSYyyS4WKzN0QY6+DLIydhnrN2gu4MdMRZP1sUGv2tr52NjDi jrPmhU74BVnAJmLXroPkKnEe1HkU723ccktKq53xgUvp9VJ1l4IoYgEfdWCEs= 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=Si/a4zIs1FFnBJVZUJWfPRdhCZI=; b=pAPQu+9eOORckdm2HRUT jzwwSEwLi4O1BqC1WbMyGqvQNAu+KFy65auRFkjtHbQKsLcMFwwocPJjXdRg07Yq Ox6om3k08qKo7lQiHH7//YmXDNSuIjnPfgLN0A4hOBCF+3/MaKxSPLFZ17iIv3FS PL4earFmr/yziLfySxpby1Y= Received: (qmail 126365 invoked by alias); 7 Apr 2019 19:21:43 -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 126352 invoked by uid 89); 7 Apr 2019 19:21:43 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-6.6 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=SImode, simode, 270169, branches X-HELO: mail-it1-f178.google.com Received: from mail-it1-f178.google.com (HELO mail-it1-f178.google.com) (209.85.166.178) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 07 Apr 2019 19:21:42 +0000 Received: by mail-it1-f178.google.com with SMTP id w15so17558027itc.0 for ; Sun, 07 Apr 2019 12:21:41 -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=JUUM/aDtCZxapsyXAcpoDd2tn5hLECySmxYV8SvGweY=; b=vg45pH3CfS7S36Rw5rWs7Ug1rPsBemb7pK3t2rZC7XAimWCn6Fu9ZS1QPea7Sh+Qer GWEROJqAzeiC3gEFBtG2R1QcbV+NhrjjkJBmx6nJ6bJ0eDbLSVmd6sazO6Zogi5RWRWg 2ex82lR6C7QuyeyQ966N/FjlqEnQlbOZCHVN982rkZtNbh0528l/Fko7gRx84f5oQzZY n3Mj70lcqBUnNdIqmLEad7th0Dgjs0AGjLSbRHFP3aq2Rj/LNwu9MuklupJqyZV2o20b r+G6rJeOu3ks0SAnZpCnANo4lqhny/b7bhemU/pSJflZpCmPhRulTNebSSk2wJpYEtOj K+Og== MIME-Version: 1.0 From: Uros Bizjak Date: Sun, 7 Apr 2019 21:21:28 +0200 Message-ID: Subject: [PATCH, i386]: Fix PR89945, ICE in gen_lowpart_general To: "gcc-patches@gcc.gnu.org" 2019-04-07 Uroš Bizjak PR target/89945 * config/i386/i386.md (anddi_1 to andsi_1_zext splitter): Avoid calling gen_lowpart with SYMBOL_REF and LABEL_REF operand. testsuite/ChangeLog: 2019-04-07 Uroš Bizjak PR target/89945 * gcc.target/i386/pr89945.c: New test. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. Committed to mainline SVN, will be backported to release branches. Uros. Index: config/i386/i386.md =================================================================== --- config/i386/i386.md (revision 270169) +++ config/i386/i386.md (working copy) @@ -8609,7 +8609,16 @@ [(parallel [(set (match_dup 0) (zero_extend:DI (and:SI (match_dup 1) (match_dup 2)))) (clobber (reg:CC FLAGS_REG))])] - "operands[2] = gen_lowpart (SImode, operands[2]);") +{ + if (GET_CODE (operands[2]) == SYMBOL_REF + || GET_CODE (operands[2]) == LABEL_REF) + { + operands[2] = shallow_copy_rtx (operands[2]); + PUT_MODE (operands[2], SImode); + } + else + operands[2] = gen_lowpart (SImode, operands[2]); +}) ;; See comment for addsi_1_zext why we do use nonimmediate_operand (define_insn "*andsi_1_zext" Index: testsuite/gcc.target/i386/pr89945.c =================================================================== --- testsuite/gcc.target/i386/pr89945.c (nonexistent) +++ testsuite/gcc.target/i386/pr89945.c (working copy) @@ -0,0 +1,21 @@ +/* PR target/89945 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +void +foo () +{ + void *g[] = {&&a, &&b}; + + for (unsigned c = 0x1F;; c >>= 1) + { + unsigned d = (long)"a"; + long e = 8; + + while (e) + { + a: goto *g[c&d]; + b: e--; + } + } +}