| Message ID | 20260505151030.1749548-1-waffl3x@baylibre.com |
|---|---|
| Headers |
Return-Path: <gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 3F2034B9DB42 for <patchwork@sourceware.org>; Tue, 5 May 2026 15:14:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3F2034B9DB42 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=baylibre-com.20251104.gappssmtp.com header.i=@baylibre-com.20251104.gappssmtp.com header.a=rsa-sha256 header.s=20251104 header.b=N5c0xd2g X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pf1-x435.google.com (mail-pf1-x435.google.com [IPv6:2607:f8b0:4864:20::435]) by sourceware.org (Postfix) with ESMTPS id CB9C54BA5439 for <gcc-patches@gcc.gnu.org>; Tue, 5 May 2026 15:10:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CB9C54BA5439 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=baylibre.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CB9C54BA5439 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::435 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777993837; cv=none; b=Bj1tloJjXmdp2iGwbJi9AI3PPrY+JEDfY7JdQVRA5NdUWMQ8o2gIw5PmG8gVqht47yqL+ALXxrEktcUNlLi0agvMF3g7Rkvrxl0vRoFRauNHF406YReuQvpX3kIryYEZsv4jgLFFsxg3TrQHlj9a4ajRl3kFyjroqA5lb7i6Lyw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777993837; c=relaxed/simple; bh=YkTW6e4EwAjEfJzw+rTzBFtNXhyMkTdqcRKdYIXKH/A=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=rNPM9vvpAwGMl09icEUPfSlS6WMe1kooR+BMRHmCdGUiO3xfmGMeBYYtp1wfgNk6JzWoOn7eoorIDbudlcXeDP8b8Ak9p82r2RCuDHC+gY5UiIBlUOx89a5M6+EVZ7fjOCekw7ckyKtYwgC/EB+hZw//7tZ1MCGD8z5gppA2jOk= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CB9C54BA5439 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-8270edc7e2eso185025b3a.2 for <gcc-patches@gcc.gnu.org>; Tue, 05 May 2026 08:10:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20251104.gappssmtp.com; s=20251104; t=1777993835; x=1778598635; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8tK5touAlOQXzqL2W3nmErw6rQmN4JGmkgCJhwEgb9M=; b=N5c0xd2g/NOdlgNO2Xv1V4gMH7B3B9kSDb1EOWwcTyUF+P2pspzedeg0wlJffW/7U9 BvVXs5M4Cy3Zr2JXfD/PzQyWeItNmhwjglenVdmWRbcOQZ85pdpAp/vo8h1wOpbKkrAo bKufDgm2FcDnO+mlm4hVW3vlNrhRe57MFMFZxowhozLjSaQG2Jjv2bL+DB4w/WaY/m0V LprA2PTl0JBkTJ30vzfKAhgkqObzDPm36hB4RFOWuYl/+DIw4mEr6nKRU0N8f9EiLxf7 u+cbkoOUsPeGOiY1RKTIsCR08Av5MOJHV1+KdkgHTcFBRGKP19lLuz2Fh7QFS3qpuz+d OUvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777993835; x=1778598635; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8tK5touAlOQXzqL2W3nmErw6rQmN4JGmkgCJhwEgb9M=; b=CZZSlQKekVxsrP7cegETNjUCvS3BxZO7aFTUC08+Dn3PWN7c533nvveGiV1asXl/wf LWs1CRtpVKJg3Cw95GMOs3RJ9FnEF5b8sxzzWyceCyAIBb5pqAwgdNhsUeRbWqgNN3sS PzPiPucsjcu8w61asgshLWE3iunWhxqo1afxa1tTYsvfctuFqQFUJ7fL4ae1IzD2eRI7 mjrNCAiORjbI2yaE0swGyNC2sJIdIVJNgZ+Ti3OxR2AfyhESEw1Gqg+4SBNNGfLAwvDB DZl4ULa4XMpaSx5ruC3oEBaJfTkmgWaZG/DdG/Yu9QBhMC14FEFkFnbHaabqM4SuJQBR H1mw== X-Gm-Message-State: AOJu0Yy20V4I8rz2fQxiTG/GKddK4/npj0ocGJ6sjY2cJvdfxZylgFUM PVoS2le6qRmR0ffwRCz6sA3eVLdTdhdvXOmewGxjAlrETwzDXJ0k20mX3r62M+JXqp4M0W9Tagr 2iUJp X-Gm-Gg: AeBDieutV0O0CbEubYoAhmI1CbWPCC2SqUzGhcrX7JnZaH1xzkgq9VbH08iJl5HF/vX CytwvQ0gnBTvU1gdhAzM2gj6Cv1YM4a870hQNIE5s/vUxSS47JqVSo/e0WX29DObP+Gk33dpzUq JrrPtl0VnRIHSBz2FzdfXxubr047vlFyYpgIZOwhAS7kn65obqo9bk6Q22rA0XpmRC97LHXrGSF 3ZYphBM4z+6Qq6KSmTpiNPEU03+7no7ersfUWOKXHM1jdUm3RmN8PGVwQqnGhNTCGGsxbV732Lm ZuBymYzL+S9C/eO1sZe8MoUWudt3yrfqN3OdfCgfQ2Qo5cUUVUjSqBtVi7HDXA713lL60MEGVEs y/YKTAJd1gn/kWs2BBWHJ1nc6zuifNpCZ+bm6W/J9NGIDuLA98IKJ8bSySF0qac5ETlvOk+UoNt 5DnkNvo3STVL/cOikD2IlM19+q5y7SE5TDRiNz6lkVVwuvWefsl/KIGBBzX1uP X-Received: by 2002:a05:6a00:21ca:b0:836:3faa:9693 with SMTP id d2e1a72fcca58-8393dc6e457mr1923612b3a.3.1777993835389; Tue, 05 May 2026 08:10:35 -0700 (PDT) Received: from waffl3x-prestige.lan ([2001:56a:f98a:b800:1f67:ce08:3cbd:86b8]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83965645140sm2674956b3a.12.2026.05.05.08.10.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 08:10:34 -0700 (PDT) From: Waffl3x <waffl3x@baylibre.com> To: gcc-patches@gcc.gnu.org Cc: Waffl3x <waffl3x@baylibre.com> Subject: [PATCH 00/12] OpenMP/C++: 'allocate' directive Date: Tue, 5 May 2026 09:01:53 -0600 Message-ID: <20260505151030.1749548-1-waffl3x@baylibre.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <CAH+W3Ppbho4pj6W-rWk4mMssrttOjt7aNco-oWW5Sw5f5Yx2GA@mail.gmail.com> References: <CAH+W3Ppbho4pj6W-rWk4mMssrttOjt7aNco-oWW5Sw5f5Yx2GA@mail.gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org |
| Series |
OpenMP/C++: 'allocate' directive
|
|
Message
Waffl3x
May 5, 2026, 3:01 p.m. UTC
This patchset implements support for OpenMP allocate directive support
in C++. This version splits the patch up into a significantly more coherent and
reviewable set of patches. I ran into many issues during this, as a result this
version gains a few features, and loses some early diagnostics in templates.
However, it should also be significantly more polished.
Bootstrapped and regtested on x86_64-linux-gnu.
Waffl3x (12):
libgomp.c: Change _Alignof to alignof for C++ in test
OpenMP/C: Change repetitive allocator clause diagnostic wording
OpenMP/C++: Remove case PRAGMA_OMP_ALLOCATE from
cp_parser_omp_construct
OpenMP/C++: Add support for 'omp allocate' directive
OpenMP/C++: Enhance diagnostics of 'omp allocate' directive
OpenMP/C++: Force location wrapper on 'omp allocate' directive clauses
OpenMP/C++: Don't do NRVO on vars used in an 'omp allocate' directive
OpenMP/C++: Add static analysis of allocate directive allocator clause
OpenMP/C++: Diagnose constexpr vars in an allocate directive
OpenMP/C++: Sorry for static vars in implicit constexpr functions
OpenMP/C++: Sorry for allocate directive in omp::decl attribute
OpenMP/C++: Avoid quadratic complexity in diagnostic
gcc/c/c-parser.cc | 2 +-
gcc/cp/constexpr.cc | 2 +
gcc/cp/cp-tree.def | 11 +
gcc/cp/cp-tree.h | 17 +
gcc/cp/parser.cc | 405 ++++++-
gcc/cp/pt.cc | 40 +
gcc/cp/semantics.cc | 414 +++++++
gcc/cp/typeck.cc | 5 +-
gcc/gimplify.cc | 10 +-
gcc/testsuite/c-c++-common/gomp/allocate-10.c | 5 +-
gcc/testsuite/c-c++-common/gomp/allocate-11.c | 29 +-
gcc/testsuite/c-c++-common/gomp/allocate-12.c | 33 +-
gcc/testsuite/c-c++-common/gomp/allocate-14.c | 3 -
gcc/testsuite/c-c++-common/gomp/allocate-15.c | 3 -
gcc/testsuite/c-c++-common/gomp/allocate-16.c | 20 +-
gcc/testsuite/c-c++-common/gomp/allocate-17.c | 2 +-
gcc/testsuite/c-c++-common/gomp/allocate-18.c | 18 +-
gcc/testsuite/c-c++-common/gomp/allocate-19.c | 25 +-
gcc/testsuite/c-c++-common/gomp/allocate-20.c | 343 ++++++
gcc/testsuite/c-c++-common/gomp/allocate-5.c | 32 +-
gcc/testsuite/c-c++-common/gomp/allocate-9.c | 94 +-
.../gomp/allocate-allocator-handle.h | 19 +
gcc/testsuite/c-c++-common/gomp/directive-1.c | 1 -
.../c-c++-common/gomp/uses_allocators-1.c | 4 +-
gcc/testsuite/g++.dg/gomp/allocate-10.C | 111 ++
gcc/testsuite/g++.dg/gomp/allocate-11.C | 18 +
gcc/testsuite/g++.dg/gomp/allocate-12.C | 38 +
gcc/testsuite/g++.dg/gomp/allocate-13.C | 28 +
gcc/testsuite/g++.dg/gomp/allocate-14.C | 1037 +++++++++++++++++
gcc/testsuite/g++.dg/gomp/allocate-15.C | 92 ++
gcc/testsuite/g++.dg/gomp/allocate-16.C | 251 ++++
gcc/testsuite/g++.dg/gomp/allocate-17.C | 557 +++++++++
gcc/testsuite/g++.dg/gomp/allocate-18.C | 274 +++++
gcc/testsuite/g++.dg/gomp/allocate-19.C | 128 ++
gcc/testsuite/g++.dg/gomp/allocate-20.C | 96 ++
gcc/testsuite/g++.dg/gomp/allocate-21.C | 88 ++
gcc/testsuite/g++.dg/gomp/allocate-22.C | 31 +
gcc/testsuite/g++.dg/gomp/allocate-23.C | 24 +
gcc/testsuite/g++.dg/gomp/allocate-24.C | 26 +
gcc/testsuite/g++.dg/gomp/allocate-5.C | 410 +++++++
gcc/testsuite/g++.dg/gomp/allocate-6.C | 391 +++++++
gcc/testsuite/g++.dg/gomp/allocate-7.C | 224 ++++
gcc/testsuite/g++.dg/gomp/allocate-8.C | 48 +
gcc/testsuite/g++.dg/gomp/allocate-9.C | 78 ++
.../g++.dg/gomp/allocate-allocator-handle.h | 18 +
.../g++.dg/gomp/allocate-handles-1.C | 61 +
.../g++.dg/gomp/allocate-handles-2.C | 45 +
gcc/testsuite/g++.dg/gomp/omp-constexpr.C | 3 +-
libgomp/testsuite/libgomp.c++/allocate-2.C | 329 ++++++
.../allocate-4.c | 3 -
.../allocate-5.c | 3 -
.../allocate-6.c | 3 -
.../allocate-7.c | 8 +-
53 files changed, 5752 insertions(+), 208 deletions(-)
create mode 100644 gcc/testsuite/c-c++-common/gomp/allocate-20.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/allocate-allocator-handle.h
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-10.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-11.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-12.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-13.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-14.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-15.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-16.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-17.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-18.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-19.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-20.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-21.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-22.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-23.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-24.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-5.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-6.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-7.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-8.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-9.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-allocator-handle.h
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-handles-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-handles-2.C
create mode 100644 libgomp/testsuite/libgomp.c++/allocate-2.C
rename libgomp/testsuite/{libgomp.c => libgomp.c-c++-common}/allocate-4.c (95%)
rename libgomp/testsuite/{libgomp.c => libgomp.c-c++-common}/allocate-5.c (96%)
rename libgomp/testsuite/{libgomp.c => libgomp.c-c++-common}/allocate-6.c (98%)
rename libgomp/testsuite/{libgomp.c => libgomp.c-c++-common}/allocate-7.c (84%)