get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.2/patches/2233036/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2233036,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2233036/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260505151030.1749548-7-waffl3x@baylibre.com/",
    "project": {
        "id": 17,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/17/?format=api",
        "name": "GNU Compiler Collection",
        "link_name": "gcc",
        "list_id": "gcc-patches.gcc.gnu.org",
        "list_email": "gcc-patches@gcc.gnu.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260505151030.1749548-7-waffl3x@baylibre.com>",
    "list_archive_url": null,
    "date": "2026-05-05T15:01:59",
    "name": "[06/12] OpenMP/C++: Force location wrapper on 'omp allocate' directive clauses",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "48a93c64ff520bc40fc005301d2cad66555001d4",
    "submitter": {
        "id": 90070,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/90070/?format=api",
        "name": "Waffl3x",
        "email": "waffl3x@baylibre.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260505151030.1749548-7-waffl3x@baylibre.com/mbox/",
    "series": [
        {
            "id": 502853,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/502853/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=502853",
            "date": "2026-05-05T15:01:54",
            "name": "OpenMP/C++: 'allocate' directive",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/502853/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2233036/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2233036/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "gcc-patches@gcc.gnu.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@legolas.ozlabs.org",
            "gcc-patches@gcc.gnu.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=baylibre-com.20251104.gappssmtp.com\n header.i=@baylibre-com.20251104.gappssmtp.com header.a=rsa-sha256\n header.s=20251104 header.b=T67MG8fA;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)",
            "sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=baylibre-com.20251104.gappssmtp.com\n header.i=@baylibre-com.20251104.gappssmtp.com header.a=rsa-sha256\n header.s=20251104 header.b=T67MG8fA",
            "sourceware.org;\n dmarc=none (p=none dis=none) header.from=baylibre.com",
            "sourceware.org; spf=pass smtp.mailfrom=baylibre.com",
            "server2.sourceware.org;\n arc=none smtp.remote-ip=2607:f8b0:4864:20::435"
        ],
        "Received": [
            "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g925x5Zmrz1yJ0\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 06 May 2026 01:11:17 +1000 (AEST)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id EE9C44B9DB49\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  5 May 2026 15:11:15 +0000 (GMT)",
            "from mail-pf1-x435.google.com (mail-pf1-x435.google.com\n [IPv6:2607:f8b0:4864:20::435])\n by sourceware.org (Postfix) with ESMTPS id 5A2BF4BA900E\n for <gcc-patches@gcc.gnu.org>; Tue,  5 May 2026 15:10:43 +0000 (GMT)",
            "by mail-pf1-x435.google.com with SMTP id\n d2e1a72fcca58-824acdfb73dso414105b3a.2\n for <gcc-patches@gcc.gnu.org>; Tue, 05 May 2026 08:10:43 -0700 (PDT)",
            "from waffl3x-prestige.lan ([2001:56a:f98a:b800:1f67:ce08:3cbd:86b8])\n by smtp.gmail.com with ESMTPSA id\n d2e1a72fcca58-83965645140sm2674956b3a.12.2026.05.05.08.10.41\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 05 May 2026 08:10:41 -0700 (PDT)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org EE9C44B9DB49",
            "OpenDKIM Filter v2.11.0 sourceware.org 5A2BF4BA900E"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 5A2BF4BA900E",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 5A2BF4BA900E",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777993843; cv=none;\n b=fM0g7SaC6S7zCOXijWb1TeHRiZ9IY7TI8W17+A7JaF0+xvbEGvWZu/w/yLLSLsnASLsdGCHsFDwUdaejhJ8FOVDDR27PflhuKhtEVlS14AlcXOApKqpYxucPZN2kgdllO5tzcMr4nJWShcKK6GBOWfrI43fVsZZb/pdmK5RdxQE=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777993843; c=relaxed/simple;\n bh=XkqyPNKbct7Xq80C2qckPXdAECkGgnNUCONOIGMupd0=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=u0m+Xa26K+rtYTQIpCIYlzguwkZcHQGflAZVkH8U9LZjNb8DGVVvJxm/ssR7o8eY4bxOeBRT5LOdXkhvyOueLWt8/ABdv20TZVMAwbO4Ewi14qqGSLsvl6b7Bbeq49AjerUt7h8BqFLG8B6Av63hJQ1c8n4CYknv7I0YyjSNTp8=",
        "ARC-Authentication-Results": "i=1; server2.sourceware.org",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=baylibre-com.20251104.gappssmtp.com; s=20251104; t=1777993842;\n x=1778598642;\n darn=gcc.gnu.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=NY4AKGfBg7OhsvgHP+Fp1lLnyHflwRLlR24CsB1z0rg=;\n b=T67MG8fAI1Ybn09WlXAX100WjoYZfa76c+xrcT7Et/tl+wrWv/QdNffKZQIe5PWj17\n pxjjKF77BxDam7cFs9Zzo4KplxPLfsUGUYC+MgoPrYqlSAm77WPTUPFsWh6Mm2sMgGWU\n ZaHqGlWEU0ekzdI7uVuNgWNlpt6xPSG0mznYBDMo0N6RIBI5mzqY9m0Ejd6sdABjaIDy\n 77zt9CHeohWQlFlR7Ekw6VdKUwdDwGqUhmpKKYtxatDRtGBjw5ZCMa1WWGsEoKvIde39\n 7mQs2VjYXYv+8N7/ZAAa1curK3VuuilNNjPE4ZwshXl/ObTuXPxemL2KJ9CHB49RurSs\n Yr2A==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777993842; x=1778598642;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=NY4AKGfBg7OhsvgHP+Fp1lLnyHflwRLlR24CsB1z0rg=;\n b=LNUqIkvZEhQH7EzTmIRI0rJRNPcbjm4l1aNJqw9bG7lFx1KH/4ROBAYghxqKua+fr9\n VlTem874CPuwg+SsNN3NurZtB/N3EXN+/DJbd6O0Mv7lljQACv+XvVGUosuiDkwcoD+M\n qeUHWQb3/fgMU5Bj5ar5H240OYsJl/xTINCtYAuAMZVJTBdCrUJA2ey80PUKmaoCqWwQ\n 5Aj7SY/zujGY2TaHWsvwpKtSAhGbkKg3g4tAeTpEEbssP0SuC+tgb4aBdqQ3N+R319NW\n XverkPVrD8jF9vTeJMPueVmd9DNQBXbYtXTUT/5r4tsV2U1T4D8kxTTqRWy18LFa/5/y\n ylgA==",
        "X-Gm-Message-State": "AOJu0YyrqI2hcJX21rqj3P02BBwcZKX5lQXZOjsq33/iw0X6Nlg0yL88\n bkYnIAQvZhk+N2mqNMHgZid48qs+jrdrt+vYxwsrwyHaKq6hd2Ztc3tDAmOJ2R/07bN4PLS/83c\n EelAX",
        "X-Gm-Gg": "AeBDieuesTdK3bfxN9i+Bykiq8dzJjObINa2A0D21kaiRCGNxNp5SlOscWcQi5npVs4\n +kTTUWGU8v1jZUTC8jt3umrfkkCJCPSAAG+j8V/+nBj4w0Q3TDixlUHvoAbezZvxBA/ldeynbnc\n MY1BtF6lHW9oWiSmt4yHzpsPkMwkzL7ZzGJfGX3hlZxLcKtm/R+09s4c/GcdL1V3wH60/uzCh52\n GGBipyqtgiSP6OdHI5YL127/X9rs63Ce+CLvwKBUVHzCafTHQEsy0YnuQawD+vP49jWdSaiduT2\n 5VuUhGxY4+vORZV6MATTJB7u3MeDtti5VNvWCah6Z6DQ7juYQH+AyDPw9Qv0mqo5X3O/rdLDrDS\n mpAvtgTBhNHYl3EMlsP/dDuShh6iwhL4TUGHCVLLRIFS55A5F5yb41pWKen0768+8e1W3blDJ0w\n UF921eZcGI7ncsDgi6NIr1Z0EdiIKyXR9grgHTPlAtAhFRZ8PjFw==",
        "X-Received": "by 2002:a05:6a00:3e0b:b0:837:73ab:1013 with SMTP id\n d2e1a72fcca58-83773ab284bmr4457997b3a.6.1777993842173;\n Tue, 05 May 2026 08:10:42 -0700 (PDT)",
        "From": "Waffl3x <waffl3x@baylibre.com>",
        "To": "gcc-patches@gcc.gnu.org",
        "Cc": "Waffl3x <waffl3x@baylibre.com>",
        "Subject": "[PATCH 06/12] OpenMP/C++: Force location wrapper on 'omp allocate'\n directive clauses",
        "Date": "Tue,  5 May 2026 09:01:59 -0600",
        "Message-ID": "<20260505151030.1749548-7-waffl3x@baylibre.com>",
        "X-Mailer": "git-send-email 2.54.0",
        "In-Reply-To": "<20260505151030.1749548-1-waffl3x@baylibre.com>",
        "References": "\n <CAH+W3Ppbho4pj6W-rWk4mMssrttOjt7aNco-oWW5Sw5f5Yx2GA@mail.gmail.com>\n <20260505151030.1749548-1-waffl3x@baylibre.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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>,\n <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>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>",
        "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"
    },
    "content": "Some nodes, such as template parameters, don't get wrapped by\nmaybe_wrap_with_location. We rely on location wrappers for diagnostics of\nclause exprs in finish_omp_allocate, the easiest solution is to force a\nwrapper by replicating the the mechanisms of maybe_wrap_with_location in\ncp_parser_omp_allocate.\n\nUnfortuntely, tsubst_expr uses maybe_wrap_with_location to rewrap location\nwrappers, stripping wrappers that we previously forced. This patch solves\nthat by handling wrappers explicitly in tsubst_expr's OMP_ALLOCATE case.\n\nThis is kind of a kludge, if this is deemed to be a good solution we should\npossibly split it out into its own function (force_wrap_with_location?) and\nchange tsubst_expr to use that for rewrapping. This would be trivial to do,\nbut belongs in a different patch.\n\ngcc/cp/ChangeLog:\n\n\t* parser.cc (cp_parser_omp_allocate): Force a location wrapper.\n\t* pt.cc (tsubst_stmt): Rewrap location wrappers after tsubst_expr.\n\ngcc/testsuite/ChangeLog:\n\n\t* g++.dg/gomp/allocate-10.C: Remove xfails.\n\t* g++.dg/gomp/allocate-14.C: Likewise.\n\t* g++.dg/gomp/allocate-17.C: Likewise.\n\nSigned-off-by: Waffl3x <waffl3x@baylibre.com>\n---\n gcc/cp/parser.cc                        | 26 +++++++++++++++--\n gcc/cp/pt.cc                            | 24 ++++++++++++----\n gcc/testsuite/g++.dg/gomp/allocate-10.C | 12 +++-----\n gcc/testsuite/g++.dg/gomp/allocate-14.C | 37 +++++++++++--------------\n gcc/testsuite/g++.dg/gomp/allocate-17.C | 23 +++++++--------\n 5 files changed, 73 insertions(+), 49 deletions(-)",
    "diff": "diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc\nindex 924e52da6ea..412a71c439c 100644\n--- a/gcc/cp/parser.cc\n+++ b/gcc/cp/parser.cc\n@@ -47373,13 +47373,35 @@ cp_parser_omp_allocate (cp_parser *parser, cp_token *pragma_tok)\n     } while (true);\n   cp_parser_require_pragma_eol (parser, pragma_tok);\n \n+  /* Some codes, such as template parameters, don't get wrapped by\n+     maybe_wrap_with_location despite not being able to carry a location.\n+     We need a location to issue good diagnostics in finish_omp_allocate.  */\n+  auto maybe_force_wrap_with_location = [] (cp_expr expr_with_loc) -> tree\n+    {\n+      tree expr = expr_with_loc.get_value ();\n+      if (!expr || error_operand_p (expr))\n+\treturn expr;\n+      /* In most situations, expr will already have been wrapped.  */\n+      if (CAN_HAVE_LOCATION_P (expr))\n+\treturn expr;\n+\n+      location_t expr_loc = expr_with_loc.get_location ();\n+      /* Copied from tree.cc:maybe_wrap_with_location.  */\n+      const tree_code code\n+\t= (((CONSTANT_CLASS_P (expr) && TREE_CODE (expr) != STRING_CST)\n+\t    || (TREE_CODE (expr) == CONST_DECL && !TREE_STATIC (expr)))\n+\t   ? NON_LVALUE_EXPR : VIEW_CONVERT_EXPR);\n+      tree wrapper = build1_loc (expr_loc, code, TREE_TYPE (expr), expr);\n+      EXPR_LOCATION_WRAPPER_P (wrapper) = 1;\n+      return wrapper;\n+    };\n   /* We can still diagnose some things about allocator/alignment even if nl\n      is NULL_TREE.  */\n \n   finish_omp_allocate (pragma_tok->location,\n \t\t       nl,\n-\t\t       allocator,\n-\t\t       alignment,\n+\t\t       maybe_force_wrap_with_location (allocator),\n+\t\t       maybe_force_wrap_with_location (alignment),\n \t\t       directive_ctx);\n }\n \ndiff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc\nindex aa41a46e007..d27f3c1118f 100644\n--- a/gcc/cp/pt.cc\n+++ b/gcc/cp/pt.cc\n@@ -20469,11 +20469,25 @@ tsubst_stmt (tree t, tree args, tsubst_flags_t complain, tree in_decl)\n     case OMP_ALLOCATE:\n       {\n \tgcc_assert (flag_openmp);\n-\n-\ttree alloc\n-\t  = tsubst_expr (OMP_ALLOCATE_ALLOCATOR (t), args, complain, in_decl);\n-\ttree align\n-\t  = tsubst_expr (OMP_ALLOCATE_ALIGN (t), args, complain, in_decl);\n+\t/* We force a location wrapper in some cases that don't get wrapped by\n+\t   maybe_wrap_with_location, tsubst_expr doesn't rewrap them in those\n+\t   cases so we have to do it.  */\n+\tauto subst_and_rewrap = [&] (const tree expr)\n+\t  {\n+\t    if (!expr || expr == error_mark_node)\n+\t      return expr;\n+\t    tree ret = tsubst_expr (tree_strip_any_location_wrapper (expr),\n+\t\t\t\t    args, complain, in_decl);\n+\t    if (location_wrapper_p (expr) && !CAN_HAVE_LOCATION_P (ret))\n+\t      {\n+\t\tret = build1_loc (EXPR_LOCATION (expr), TREE_CODE (expr),\n+\t\t\t\t  TREE_TYPE (ret), ret);\n+\t\tEXPR_LOCATION_WRAPPER_P (ret) = 1;\n+\t      }\n+\t    return ret;\n+\t  };\n+\ttree alloc = subst_and_rewrap (OMP_ALLOCATE_ALLOCATOR (t));\n+\ttree align = subst_and_rewrap (OMP_ALLOCATE_ALIGN (t));\n \ttree vars = copy_list (OMP_ALLOCATE_VARS (t));\n \tfor (tree node = vars; node != NULL_TREE; node = TREE_CHAIN (node))\n \t  {\ndiff --git a/gcc/testsuite/g++.dg/gomp/allocate-10.C b/gcc/testsuite/g++.dg/gomp/allocate-10.C\nindex e0f3bcc1780..27f739df6a5 100644\n--- a/gcc/testsuite/g++.dg/gomp/allocate-10.C\n+++ b/gcc/testsuite/g++.dg/gomp/allocate-10.C\n@@ -34,7 +34,7 @@ void auto_nttp_allocator_static_0()\n   static int a;\n   #pragma omp allocate(a) allocator(Alloc)\n   /* { dg-error \"invalid conversion from 'int' to 'omp_allocator_handle_t'\" \"\" { target *-*-* } .-1 } */\n-  /* { dg-error \"'allocator' clause requires a constant predefined allocator\" \"\" { xfail *-*-* } .-2 } */\n+  /* { dg-error \"'allocator' clause requires a constant predefined allocator\" \"\" { target *-*-* } .-2 } */\n }\n \n template<auto Alloc>\n@@ -49,7 +49,7 @@ void auto_nttp_allocator_static_2()\n {\n   static int a;\n   #pragma omp allocate(a) allocator(Alloc)\n-  /* { dg-error \"'allocator' clause requires a constant predefined allocator\" \"\" { xfail *-*-* } .-1 } */\n+  /* { dg-error \"'allocator' clause requires a constant predefined allocator\" \"\" { target *-*-* } .-1 } */\n }\n \n template<auto Alloc>\n@@ -76,8 +76,6 @@ void instantiate_auto_nttp_allocator_static()\n \n #undef DEFINITELY_NOT_PREDEFINED\n \n-/* { dg-bogus \"'allocator' clause requires a constant predefined allocator\" \"\" { xfail *-*-* } 0 } */\n-\n /* Invalid align clause */\n \n template<auto Align>\n@@ -91,7 +89,7 @@ template<auto Align>\n void auto_nttp_align_0()\n {\n   int a;\n-  #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } } */\n+  #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } } */\n }\n \n template<auto Align>\n@@ -99,7 +97,7 @@ void auto_nttp_align_1()\n {\n   int a;\n   #pragma omp allocate(a) align(Align)\n-  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-1 } */\n+  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-1 } */\n   /* { dg-error {could not convert 'nullptr' from 'std::nullptr_t' to '(?:long )?unsigned int'} \"\" { target *-*-* } .-2 } */\n }\n \n@@ -111,5 +109,3 @@ void instantiate_auto_nttp_align()\n   auto_nttp_align_1<32>(); /* { dg-bogus \"required from here\" } */\n   auto_nttp_align_1<nullptr>(); /* { dg-message \"required from here\" } */\n }\n-\n-/* { dg-bogus \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } 0 } */\ndiff --git a/gcc/testsuite/g++.dg/gomp/allocate-14.C b/gcc/testsuite/g++.dg/gomp/allocate-14.C\nindex d40288d957d..a622adc34d9 100644\n--- a/gcc/testsuite/g++.dg/gomp/allocate-14.C\n+++ b/gcc/testsuite/g++.dg/gomp/allocate-14.C\n@@ -121,9 +121,9 @@ void nttp_allocator_static()\n {\n   static int a; /* { dg-note \"'a' declared here\" } */\n   #pragma omp allocate(a) allocator(Alloc)\n-  /* { dg-error \"'allocator' clause requires a constant predefined allocator\" \"\" { xfail *-*-* } .-1 } */\n+  /* { dg-error \"'allocator' clause requires a constant predefined allocator\" \"\" { target *-*-* } .-1 } */\n   /* { dg-note \"because one or more variables with static storage duration appear in the 'allocate' directive\" \"\" { target *-*-* } .-2 } */\n-  /* { dg-note \"expression evaluates to '1024'\" \"\" { xfail *-*-* } .-3 }*/\n+  /* { dg-note \"expression evaluates to '1024'\" \"\" { target *-*-* } .-3 }*/\n }\n \n template<omp_allocator_handle_t Alloc>\n@@ -145,9 +145,9 @@ void nttp_dependent_type_allocator_static_0()\n {\n   static int a; /* { dg-note \"'a' declared here\" } */\n   #pragma omp allocate(a) allocator(Alloc)\n-  /* { dg-error \"'allocator' clause requires a constant predefined allocator\" \"\" { xfail *-*-* } .-1 } */\n+  /* { dg-error \"'allocator' clause requires a constant predefined allocator\" \"\" { target *-*-* } .-1 } */\n   /* { dg-note \"because one or more variables with static storage duration appear in the 'allocate' directive\" \"\" { target *-*-* } .-2 } */\n-  /* { dg-note \"expression evaluates to '1024'\" \"\" { xfail *-*-* } .-3 }*/\n+  /* { dg-note \"expression evaluates to '1024'\" \"\" { target *-*-* } .-3 }*/\n }\n \n template<typename AllocT, AllocT Alloc>\n@@ -266,7 +266,7 @@ template<int Align>\n void nttp_align()\n {\n   int a;\n-  #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } } */\n+  #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" } */\n }\n \n template<int Align>\n@@ -289,7 +289,7 @@ template<typename AlignT, AlignT Align>\n void nttp_dependent_type_align_0()\n {\n   int a;\n-  #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } } */\n+  #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" } */\n }\n \n template<typename AlignT, AlignT Align>\n@@ -420,7 +420,7 @@ void all_dependent_2()\n   int b = 42;\n   Var a = b;\n   #pragma omp allocate(a) allocator(Alloc) align(Align)\n-  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-1 } */\n+  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-1 } */\n }\n \n template<typename Var,\n@@ -444,7 +444,7 @@ void all_dependent_4()\n   Var a = b; /* { dg-note \"'a' declared here\" } */\n   #pragma omp allocate(a) allocator(Alloc) align(Align)\n   /* { dg-error \"variables with reference type may not appear in an 'allocate' directive\" \"\" { target *-*-* } .-1 } */\n-  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-2 } */\n+  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-2 } */\n }\n \n template<typename Var,\n@@ -456,7 +456,7 @@ void all_dependent_5()\n   Var a = b;\n   #pragma omp allocate(a) allocator(Alloc) align(Align)\n   /* { dg-error \"invalid conversion from 'int' to 'omp_allocator_handle_t'\" \"\" { target *-*-* } .-1 } */\n-  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-2 } */\n+  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-2 } */\n }\n \n template<typename Var,\n@@ -469,7 +469,7 @@ void all_dependent_6()\n   #pragma omp allocate(a) allocator(Alloc) align(Align)\n   /* { dg-error \"variables with reference type may not appear in an 'allocate' directive\" \"\" { target *-*-* } .-1 } */\n   /* { dg-error \"invalid conversion from 'int' to 'omp_allocator_handle_t'\" \"\" { target *-*-* } .-2 } */\n-  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-3 } */\n+  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-3 } */\n }\n \n void instantiate_all_dependent()\n@@ -603,7 +603,7 @@ template<int Align>\n void templ_no_vars_dep_align_invalid()\n {\n   #pragma omp allocate() align(Align) /* { dg-error \"expected unqualified-id before '\\\\\\)' token\" } */\n-  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-1 } */\n+  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-1 } */\n }\n template void templ_no_vars_dep_align_invalid<42>();\n \n@@ -876,7 +876,7 @@ template<int Align>\n void templ_invalid_vars_param_dependent_align_invalid(int p) /* { dg-note \"parameter 'p' declared here\" } */\n {\n   #pragma omp allocate(p) align(Align) /* { dg-error \"function parameter 'p' may not appear as list item in an 'allocate' directive\" } */\n-  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-1 } */\n+  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-1 } */\n }\n template void templ_invalid_vars_param_dependent_align_invalid<42>(int);\n \n@@ -908,7 +908,7 @@ void templ_invalid_vars_out_of_scope_dependent_align_invalid()\n   int a; /* { dg-note \"declared here\" } */\n   {\n     #pragma omp allocate(a) align(Align) /* { dg-error \"'allocate' directive must be in the same scope as 'a'\" } */\n-    /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-1 } */\n+    /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-1 } */\n   }\n }\n template void templ_invalid_vars_out_of_scope_dependent_align_invalid<42>();\n@@ -944,7 +944,7 @@ void templ_invalid_vars_out_of_scope_and_param_dependent_align_invalid(int p) /*\n   {\n     #pragma omp allocate(a, p) align(Align) /* { dg-error \"'allocate' directive must be in the same scope as 'a'\" } */\n     /* { dg-error \"function parameter 'p' may not appear as list item in an 'allocate' directive\" \"\" { target *-*-* } .-1 } */\n-    /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-2 } */\n+    /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-2 } */\n   }\n }\n template void templ_invalid_vars_out_of_scope_and_param_dependent_align_invalid<42>(int);\n@@ -1001,7 +1001,7 @@ void multiple_uses_dep_directive_before_invalid_align()\n {\n   int a;\n   #pragma omp allocate(a) align(Align) /* { dg-note \"'a' previously appeared here\" } */\n-  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-1 } */\n+  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-1 } */\n   #pragma omp allocate(a) /* { dg-error \"'a' already appeared as list item in an 'allocate' directive\" } */\n }\n template void multiple_uses_dep_directive_before_invalid_align<42>();\n@@ -1032,11 +1032,6 @@ void multiple_uses_dep_directive_after_invalid_align()\n   int a;\n   #pragma omp allocate(a) /* { dg-note \"'a' previously appeared here\" } */\n   #pragma omp allocate(a) align(Align) /* { dg-error \"'a' already appeared as list item in an 'allocate' directive\" } */\n-  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-1 } */\n+  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-1 } */\n }\n template void multiple_uses_dep_directive_after_invalid_align<42>();\n-\n-/* These are fixed by the later location wrapping patch.  */\n-/* { dg-bogus \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } 0 } */\n-/* { dg-bogus \"'allocator' clause requires a constant predefined allocator\" \"\" { xfail *-*-* } 0 } */\n-/* { dg-bogus \"expression evaluates to '1024'\" \"\" { xfail *-*-* } 0 } */\ndiff --git a/gcc/testsuite/g++.dg/gomp/allocate-17.C b/gcc/testsuite/g++.dg/gomp/allocate-17.C\nindex e265ecdd1e7..93777d611ea 100644\n--- a/gcc/testsuite/g++.dg/gomp/allocate-17.C\n+++ b/gcc/testsuite/g++.dg/gomp/allocate-17.C\n@@ -31,7 +31,7 @@ auto lambda_0_bad_align()\n \t  int b = 42;\n \t  decltype(p3) a = b;\n \t  #pragma omp allocate(a) align(Align) allocator(p2)\n-\t  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-1 } */\n+\t  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-1 } */\n \t  return a;\n \t};\n       };\n@@ -87,7 +87,7 @@ auto lambda_0_all()\n \t  decltype(p3) a = b; /* { dg-message \"'a' declared here\" } */\n \t  #pragma omp allocate(a) align(Align) allocator(p2)\n \t  /* { dg-error \"variables with reference type may not appear in an 'allocate' directive\" \"\" { target *-*-* } .-1 } */\n-\t  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-2 } */\n+\t  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-2 } */\n \t  /* { dg-error \"invalid conversion from 'int' to 'omp_allocator_handle_t'\" \"\" { target *-*-* } .-3 } */\n \t  return a;\n \t};\n@@ -212,18 +212,18 @@ auto lambda_1_bad_align()\n {\n   return [](auto p0){\n     int a = 42;\n-    #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } } */\n+    #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" } */\n     return [](auto p1){\n       int a = 42;\n-      #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } } */\n+      #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" } */\n       return [](auto p2){\n \tint a = 42;\n-\t#pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } } */\n+\t#pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" } */\n \treturn [p2](auto p3){\n \t  int b = 42;\n \t  decltype(p3) a = b;\n \t  #pragma omp allocate(a) align(Align) allocator(p2)\n-\t  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-1 } */\n+\t  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-1 } */\n \t  return a;\n \t};\n       };\n@@ -284,19 +284,19 @@ auto lambda_1_all()\n {\n   return [](auto p0){\n     int a = 42;\n-    #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } } */\n+    #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" } */\n     return [](auto p1){\n       int a = 42;\n-      #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } } */\n+      #pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" } */\n       return [](auto p2){\n \tint a = 42;\n-\t#pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } } */\n+\t#pragma omp allocate(a) align(Align) /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" } */\n \treturn [p2](auto p3){\n \t  int b = 42;\n \t  decltype(p3) a = b; /* { dg-message \"'a' declared here\" } */\n \t  #pragma omp allocate(a) align(Align) allocator(p2)\n \t  /* { dg-error \"variables with reference type may not appear in an 'allocate' directive\" \"\" { target *-*-* } .-1 } */\n-\t  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } .-2 } */\n+\t  /* { dg-error \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { target *-*-* } .-2 } */\n \t  /* { dg-error \"invalid conversion from 'int' to 'omp_allocator_handle_t'\" \"\" { target *-*-* } .-3 } */\n \t  return a;\n \t};\n@@ -555,6 +555,3 @@ void instantiate_lambdas_2()\n     auto c3 = c2.operator()<int&>(a); /* { dg-message \"required from here\" } */\n   }\n }\n-\n-/* This is fixed by the later location wrapping patch.  */\n-/* { dg-bogus \"'align' clause argument needs to be positive constant power of two integer expression\" \"\" { xfail *-*-* } 0 } */\n",
    "prefixes": [
        "06/12"
    ]
}