From patchwork Tue Sep 5 14:56:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tobias Burnus X-Patchwork-Id: 137528 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ab0a:0:b0:3f2:4152:657d with SMTP id m10csp1734428vqo; Tue, 5 Sep 2023 07:57:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGHHm/m85TWAJTFW2KuyKK5lBGR0UvOP9E5G+wN1J4bUnfdBTorphBXDO/mOcCLJ9TKp1th X-Received: by 2002:a17:906:3115:b0:9a1:c447:3c62 with SMTP id 21-20020a170906311500b009a1c4473c62mr51720ejx.49.1693925821372; Tue, 05 Sep 2023 07:57:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693925821; cv=none; d=google.com; s=arc-20160816; b=sHygRS3s0SU3f+XFANBPmxZ1GnnzSdg7/+NJUcEMwLsysAvKAgPJujMZpOJ8b5GzuK C/kzGu1mFDuVHxEVc6fdmQmQ0NvcpSg/HSDQgA5xUE1lnbfdW0mOiKAjJNrasrUSgWuI s6A1H5L3MiNSi/1gMZzBg9zjPHbb8KiWdD3aEiT1QQdezcsWNb+lE5ipycBhullEE080 ZS5phHUsIshYDRjwdNshHu/8BQB8IjP1b7HhT0BiXEF9Wwg4TBFD8XXlrIIpOtxfinyN HsktGW7EDg76N/hV/B1fC3qIXMSe7TtfzUiGdiVD8GT+kWGL8xy/2OcruU/ggF+yo3bm D2/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:from:to :content-language:user-agent:mime-version:date:message-id :ironport-sdr:dmarc-filter:delivered-to; bh=4oaowJgL7xVWEc6Q9zxXJl++zz5JXeJMJeJmyAJRTBw=; fh=8G0fvw9kezX2+yjwifXgHvTII1omy92vRpR1R+rFCOA=; b=t4iN76XZ5JvEfDJcFI6o80JyztSJZPnwHGLkBNaSv4fqIv8VwuRQSndbb3czz5Ssqs 0DbxjbukIaqw3g+hyAt7xNsigM5saLjqDBrNHNnW4+RZEdt+513vQHrIuzDaC5JJ9LNU xVdvTjlY/Orx44IY1MXgCDVc40ZS7FtpYBlIx+0ovB5mIRX35sitzJzjz52dgjBYYj+X WpwkiZncVI7CVz+zLFuc04dt7T6eBmEO48bOA6NcaoQF08Ij2LkBQ+9Kmp0HWH8+ggAX Aa6xAFwDe2wYxecvSCmw/HTggYekdRXtDi3FHVLNvk6H+HGDc9CRZk6PxREUNRe2l4u2 rAlg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id q20-20020a170906361400b00989a806b3fasi7280449ejb.1031.2023.09.05.07.57.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Sep 2023 07:57:01 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6D63B38560B6 for ; Tue, 5 Sep 2023 14:56:39 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 2FAB23858D32 for ; Tue, 5 Sep 2023 14:56:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2FAB23858D32 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="6.02,229,1688457600"; d="diff'?scan'208";a="18081997" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 05 Sep 2023 06:56:14 -0800 IronPort-SDR: pk7nXYp1mu0xFX19fL03GSyeVlsyZxijF1a0L+wYgfZahUbQWWrX2BhHqKZQLudIB294USz+CK MF0oX3wPX+ucfGzYk0j5OcFncKS+lf3fmjEpYkEI3uUCTnE7/T3hN2kJ2ULhNZx/pHqL/mN3NV ro/pz/zDqnwlnWuA9JrZSh2IUa1dCfh2P+2DZB3yq6LQ8VvZc6ETOWt/MbpcIXC92w1YD/a56O Ls9rIJFWetZZCdtjoIssYSyKngdBNb75Tk/CAC51LxKjlytJRfKFHlsnNVoYLJ1aiWZr7Cd2Kv x4M= Message-ID: <0c1afc67-99d4-0fb7-48c8-5977c21ad350@codesourcery.com> Date: Tue, 5 Sep 2023 16:56:09 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Content-Language: en-US To: gcc-patches From: Tobias Burnus Subject: [committed] OpenMP: Avoid ICE in c_parser_omp_clause_allocate with invalid expr X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-15.mgc.mentorg.com (139.181.222.15) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1776209961631887256 X-GMAIL-MSGID: 1776209961631887256 I encountered an ICE when playing around. As allocate clauses are a bit separate from the allocate directive, I decided to fix it separately. Note: The check also handles alignment expression (no testcases) and C++ already checked for error_mark_node, i.e. it wasn't affected. Committed as Rev. r14-3711-g55243898f8f956 Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 commit 55243898f8f9560371f258fe0c6ca202ab7b2085 Author: Tobias Burnus Date: Tue Sep 5 14:57:01 2023 +0200 OpenMP: Avoid ICE in c_parser_omp_clause_allocate with invalid expr gcc/c/ChangeLog: * c-parser.cc (c_parser_omp_clause_allocate): Handle error_mark_node. gcc/testsuite/ChangeLog: * c-c++-common/gomp/allocate-13.c: New test. --- gcc/c/c-parser.cc | 4 +++- gcc/testsuite/c-c++-common/gomp/allocate-13.c | 28 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc index cae10ba9c80..c8d285fbda1 100644 --- a/gcc/c/c-parser.cc +++ b/gcc/c/c-parser.cc @@ -16676,7 +16676,9 @@ c_parser_omp_clause_allocate (c_parser *parser, tree list) location_t expr_loc = c_parser_peek_token (parser)->location; c_expr expr = c_parser_expr_no_commas (parser, NULL); expr = convert_lvalue_to_rvalue (expr_loc, expr, false, true); - if (strcmp (p, "allocator") == 0) + if (expr.value == error_mark_node) + ; + else if (strcmp (p, "allocator") == 0) { allocator = expr.value; allocator = c_fully_fold (allocator, false, NULL); diff --git a/gcc/testsuite/c-c++-common/gomp/allocate-13.c b/gcc/testsuite/c-c++-common/gomp/allocate-13.c new file mode 100644 index 00000000000..847fe55ea2a --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/allocate-13.c @@ -0,0 +1,28 @@ +typedef enum omp_allocator_handle_t +#if __cplusplus >= 201103L +: __UINTPTR_TYPE__ +#endif +{ + omp_null_allocator = 0, + omp_default_mem_alloc = 1, + omp_large_cap_mem_alloc = 2, + omp_const_mem_alloc = 3, + omp_high_bw_mem_alloc = 4, + omp_low_lat_mem_alloc = 5, + omp_cgroup_mem_alloc = 6, + omp_pteam_mem_alloc = 7, + omp_thread_mem_alloc = 8, + __omp_allocator_handle_t_max__ = __UINTPTR_MAX__ +} omp_allocator_handle_t; + +void +f () +{ + int i; + #pragma omp parallel firstprivate(i) \ + allocate(allocator(omp_low_latency_mem_alloc): i) +/* { dg-error "'omp_low_latency_mem_alloc' undeclared \\(first use in this function\\); did you mean 'omp_low_lat_mem_alloc'\\\?" "" { target c } .-1 } */ +/* { dg-error "'omp_low_latency_mem_alloc' was not declared in this scope; did you mean 'omp_low_lat_mem_alloc'\\\?" "" { target c++ } .-2 } */ +/* { dg-note "each undeclared identifier is reported only once for each function it appears in" "" { target c } .-3 } */ + i = 4; +}