From patchwork Tue May 11 14:20:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Merrill X-Patchwork-Id: 1477156 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=tddqa4EU; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Ffg7f3m17z9s1l for ; Wed, 12 May 2021 00:20:45 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 324B5388E838; Tue, 11 May 2021 14:20:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 324B5388E838 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1620742841; bh=Esl5Sz+dVqmI4JQ4a2xc9Rhg5z4NYD2s0k9MqhMJH8I=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=tddqa4EUSMkmCAS4VvHaeJd89sCjRtxPCRMUx8vqir0BAC/5QjMpsJqF57Y59s6h8 tBW0/BwH/NiYRE5Y5CaczBZfjDkElNf/QVY0Aw/iv5wSc16SlDSMjG3MsEA1aobXh3 ScDKC/W2FV3MLlHf9RQuUx+h95DoklgRXB/BzuZs= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id CC38D388A43A for ; Tue, 11 May 2021 14:20:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org CC38D388A43A Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-310-R7kEc4efNAmkwzYMoIVFpg-1; Tue, 11 May 2021 10:20:36 -0400 X-MC-Unique: R7kEc4efNAmkwzYMoIVFpg-1 Received: by mail-qk1-f199.google.com with SMTP id n142-20020a3727940000b02902fa8eadfa9eso804167qkn.7 for ; Tue, 11 May 2021 07:20:36 -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:subject:date:message-id:mime-version :content-transfer-encoding; bh=Esl5Sz+dVqmI4JQ4a2xc9Rhg5z4NYD2s0k9MqhMJH8I=; b=HenaOr0TcHEV0PTOM8NXGGooAV+XXVsxeO4VGmQZPjV0wHXhbEwMdq6pxsVvTPw0EJ x8ZvKS88IKq4XXmetMi7EHk1hQVIE1PIc3z2rXbDuQBXGwUPh2srSoL+LeXaV2KaT95+ R6Kd21emBHko9T0cWtn6AbA9/67b2Q7xQryotov57wH9QHIbPs1hl7lkiP9a7qgc8Lke /aJu2SpevTphGmSF2L8bH52oqQPUUN9pSUY87r03XjNLUTSrl1YatmQmBy1pQCYrR4qP bnIIVOtneNByQt15nCNbX1lb+MwxVNL7p0F5BenjZMuVvIKK115JxxbBpAjop+Izww7i yk5Q== X-Gm-Message-State: AOAM532PzBhz+iakHF9gOxSsIxfb6t3O+nCK/Jxl1c5Kwr0UUP+bzoGI BRBjLAmZQK3mkVAkOy/S6mAK+1h/OXykEP/XrShkvmgwcF1eG8l9jgdQx9kLe6g9tyTBO01Xwp7 ovvQLcTPZdi9fqy5kxGIiKT4WhUDjD8ky831J/LrJiR4LpzfYJp744hf9oXEO2LszZw== X-Received: by 2002:a05:6214:e8f:: with SMTP id hf15mr2642076qvb.51.1620742835781; Tue, 11 May 2021 07:20:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJximbwNp1Z6HR/bQHpkLROX7lWNvQyIvc+XtBzk9klY++6nDjgNDA9esFBMkzosX3cy7CvQdg== X-Received: by 2002:a05:6214:e8f:: with SMTP id hf15mr2642045qvb.51.1620742835374; Tue, 11 May 2021 07:20:35 -0700 (PDT) Received: from barrymore.redhat.com ([130.44.159.43]) by smtp.gmail.com with ESMTPSA id u6sm4916261qkj.117.2021.05.11.07.20.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 May 2021 07:20:34 -0700 (PDT) To: gcc-patches@gcc.gnu.org Subject: [pushed] c++: ICE casting class to vector [PR100517] Date: Tue, 11 May 2021 10:20:31 -0400 Message-Id: <20210511142031.331770-1-jason@redhat.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jason Merrill via Gcc-patches From: Jason Merrill Reply-To: Jason Merrill Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" My recent change to reject calling rvalue() with an argument of class type crashes on this testcase, where we use rvalue() on what we expect to be an argument of integer or vector type. Fixed by checking first. Tested x86_64-pc-linux-gnu, applying to trunk. gcc/cp/ChangeLog: PR c++/100517 * typeck.c (build_reinterpret_cast_1): Check intype on cast to vector. gcc/testsuite/ChangeLog: PR c++/100517 * g++.dg/ext/vector41.C: New test. --- gcc/cp/typeck.c | 2 +- gcc/testsuite/g++.dg/ext/vector41.C | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/ext/vector41.C base-commit: 2301a394607b88f8996efe864350c5f841000f76 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 9002dd14fae..703ddd3cc7a 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -8114,7 +8114,7 @@ build_reinterpret_cast_1 (location_t loc, tree type, tree expr, "pointer-to-object is conditionally-supported"); return build_nop_reinterpret (type, expr); } - else if (gnu_vector_type_p (type)) + else if (gnu_vector_type_p (type) && scalarish_type_p (intype)) return convert_to_vector (type, rvalue (expr)); else if (gnu_vector_type_p (intype) && INTEGRAL_OR_ENUMERATION_TYPE_P (type)) diff --git a/gcc/testsuite/g++.dg/ext/vector41.C b/gcc/testsuite/g++.dg/ext/vector41.C new file mode 100644 index 00000000000..bfc3bb6db4b --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/vector41.C @@ -0,0 +1,12 @@ +// PR c++/100517 +// { dg-options "" } + +typedef int __v2si __attribute__ ((__vector_size__ (8))); + +struct S { }; + +void +f (S s) +{ + (void) reinterpret_cast<__v2si> (s); // { dg-error "" } +}