Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2196539/?format=api
{ "id": 2196539, "url": "http://patchwork.ozlabs.org/api/patches/2196539/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260214155201.1049644-2-dmalcolm@redhat.com/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/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": "<20260214155201.1049644-2-dmalcolm@redhat.com>", "list_archive_url": null, "date": "2026-02-14T15:51:57", "name": "[1/5] diagnostics: use label_text for logical_location strings", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "e22f3b5ea3a972fcec7b44f74df9830c5204012c", "submitter": { "id": 24465, "url": "http://patchwork.ozlabs.org/api/people/24465/?format=api", "name": "David Malcolm", "email": "dmalcolm@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260214155201.1049644-2-dmalcolm@redhat.com/mbox/", "series": [ { "id": 492183, "url": "http://patchwork.ozlabs.org/api/series/492183/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=492183", "date": "2026-02-14T15:51:56", "name": "Improve diagnostics for bad JSON inputs [PR124094]", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/492183/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2196539/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2196539/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 (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=BtWMHUMH;\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 (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=BtWMHUMH", "sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com", "sourceware.org; spf=pass smtp.mailfrom=redhat.com", "server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124" ], "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 4fCtvZ2gNMz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 15 Feb 2026 02:56:58 +1100 (AEDT)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 6A9A74BAD17A\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 14 Feb 2026 15:56:56 +0000 (GMT)", "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id B396D4BAD149\n for <gcc-patches@gcc.gnu.org>; Sat, 14 Feb 2026 15:52:18 +0000 (GMT)", "from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-636-idgxDjr7MA2glWR5pW7LBQ-1; Sat,\n 14 Feb 2026 10:52:15 -0500", "from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id BBB4A1956066; Sat, 14 Feb 2026 15:52:12 +0000 (UTC)", "from t14s.localdomain.com (unknown [10.22.88.22])\n by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 552D21955D71; Sat, 14 Feb 2026 15:52:09 +0000 (UTC)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 6A9A74BAD17A", "OpenDKIM Filter v2.11.0 sourceware.org B396D4BAD149" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org B396D4BAD149", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org B396D4BAD149", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1771084339; cv=none;\n b=ItY9HqhaebaquHlvFj0AgRWOLk4IjKWmhkco2/sgzPZxl+cTHmwD9KDjoFCkBNuQg/juXg8aIaIradxAaBgabMzHj6SdKfPO3P7D4pbzzyUXz6WL2X/C5VaapSl1S835QHApRryu4JA14iaKCIAryW2k5Yjkm+tMdPIT+DqlkkY=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1771084339; c=relaxed/simple;\n bh=yPGekkIp17kGeUxTIet4jLdMyE/Rtrv5rB7c57f+Jcw=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=g1CGjPjQ1y7/IgAw50KZuKE13VjhX+fS9qVAQTIBTHGuM7fD8rHw8/w3mRYcEvU6fPgsz9hJy1sblIQHCylCCrTSBFcrplosk1QdPleWj4JGSrHp/yiP9bcSBscesChSIC6pH9IOPisu4VcTd9NWvdx8GuDnD9ZzaT9X2XrznwA=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1771084338;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=nE+dM/TIuhuNRAqnVffwvNZaV3Ds+VJH22M46P5RvQQ=;\n b=BtWMHUMHfIb2o5gY00KXl0BDl6utE/9JYykoZcLDDthlRP250LdQYjbRqS+6FrNZ5uNubC\n T730WbdjY8L8gekUnoWoFqHhFXOGhqlOYhxQmow0HEQXapwwHy02KLEb4IClzb9tU5biTJ\n A/GZ7Lo/bPXTT3Evkd4TWH2oQPt7Umw=", "X-MC-Unique": "idgxDjr7MA2glWR5pW7LBQ-1", "X-Mimecast-MFC-AGG-ID": "idgxDjr7MA2glWR5pW7LBQ_1771084333", "From": "David Malcolm <dmalcolm@redhat.com>", "To": "gcc-patches@gcc.gnu.org, Yangyu Chen <cyy@cyyself.name>,\n Soumya AR <soumyaa@nvidia.com>, jakub@redhat.com,\n Richard Biener <richard.guenther@gmail.com>", "Cc": "Alfie Richards <alfie.richards@arm.com>,\n Sandra Loosemore <sloosemore@baylibre.com>,\n Martin Liska <martin.liska@hey.com>,\n Evgeny Stupachenko <evstupac@gmail.com>,\n Alice Carlotti <alice.carlotti@arm.com>,\n Jeff Law <jeffrey.law@oss.qualcomm.com>,\n Jerry DeLisle <jvdelisle@gcc.gnu.org>, Harald Anlauf <anlauf@gmx.de>,\n Paul Thomas <pault@gcc.gnu.org>,\n Richard Sandiford <rdsandiford@googlemail.com>,\n Joseph Myers <josmyers@redhat.com>, Jason Merrill <jason@redhat.com>,\n David Malcolm <dmalcolm@redhat.com>", "Subject": "[PATCH 1/5] diagnostics: use label_text for logical_location strings", "Date": "Sat, 14 Feb 2026 10:51:57 -0500", "Message-ID": "<20260214155201.1049644-2-dmalcolm@redhat.com>", "In-Reply-To": "<20260214155201.1049644-1-dmalcolm@redhat.com>", "References": "<tencent_048DF6A8630E2E590C79C840A31F1FA86006@qq.com>\n <20260214155201.1049644-1-dmalcolm@redhat.com>", "MIME-Version": "1.0", "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.17", "X-Mimecast-Spam-Score": "0", "X-Mimecast-MFC-PROC-ID": "4v93qRyBxyYodXmWr9ypUV-8fK716cjqQcS5_mqyXQw_1771084333", "X-Mimecast-Originator": "redhat.com", "Content-Transfer-Encoding": "8bit", "content-type": "text/plain; charset=\"US-ASCII\"; x-default=true", "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": "Doing so makes it possible for logical_locations::manager subclasses to\nreturn copies of temporary buffers, rather than requiring\nthe buffer to outlive the call. This is useful for generating\nJSON pointer strings, for logical locations within JSON files.\n\ngcc/ChangeLog:\n\t* diagnostics/html-sink.cc\n\t(html_builder::make_element_for_diagnostic): Update for logical\n\tlocation strings being returned as label_text rather than\n\tconst char *.\n\t* diagnostics/logical-locations.h\n\t(logical_locations::manager::get_short_name): Return label_text\n\trather than const char *.\n\t(logical_locations::manager::get_name_with_scope): Likewise.\n\t(logical_locations::manager::get_internal_name): Likewise.\n\t* diagnostics/sarif-sink.cc\n\t(sarif_builder::ensure_sarif_logical_location_for): Update for\n\tlogical location strings being returned as label_text rather than\n\tconst char *.\n\t(sarif_builder::make_minimal_sarif_logical_location): Likewise.\n\t* diagnostics/selftest-logical-locations.cc\n\t(test_manager::get_short_name): Likewise.\n\t(test_manager::get_name_with_scope): Likewise.\n\t(test_manager::get_internal_name): Likewise.\n\t(selftest_logical_locations_cc_tests): Likewise.\n\t* diagnostics/selftest-logical-locations.h\n\t(test_manager::get_short_name): Likewise.\n\t(test_manager::get_name_with_scope): Likewise.\n\t(test_manager::get_internal_name): Likewise.\n\t* diagnostics/state-graphs-to-dot.cc\n\t(state_diagram::on_node_in_table): Likewise.\n\t* libgdiagnostics.cc\n\t(impl_logical_location_manager::get_short_name): Likewise.\n\t(impl_logical_location_manager::get_name_with_scope): Likewise.\n\t(impl_logical_location_manager::get_internal_name): Likewise.\n\t* tree-logical-location.cc\n\t(tree_logical_location_manager::get_short_name): Likewise.\n\t(tree_logical_location_manager::get_name_with_scope): Likewise.\n\t(tree_logical_location_manager::get_internal_name): Likewise.\n\t* tree-logical-location.h\n\t(tree_logical_location_manager::get_short_name): Likewise.\n\t(tree_logical_location_manager::get_name_with_scope): Likewise.\n\t(tree_logical_location_manager::get_internal_name): Likewise.\n\nSigned-off-by: David Malcolm <dmalcolm@redhat.com>\n---\n gcc/diagnostics/html-sink.cc | 11 +++++---\n gcc/diagnostics/logical-locations.h | 6 ++---\n gcc/diagnostics/sarif-sink.cc | 24 ++++++++++-------\n gcc/diagnostics/selftest-logical-locations.cc | 18 ++++++-------\n gcc/diagnostics/selftest-logical-locations.h | 6 ++---\n gcc/diagnostics/state-graphs-to-dot.cc | 15 ++++++-----\n gcc/libgdiagnostics.cc | 21 ++++++++-------\n gcc/tree-logical-location.cc | 26 ++++++++++---------\n gcc/tree-logical-location.h | 6 ++---\n 9 files changed, 75 insertions(+), 58 deletions(-)", "diff": "diff --git a/gcc/diagnostics/html-sink.cc b/gcc/diagnostics/html-sink.cc\nindex f2d5917e2ed92..58442e9a62bcf 100644\n--- a/gcc/diagnostics/html-sink.cc\n+++ b/gcc/diagnostics/html-sink.cc\n@@ -1093,10 +1093,13 @@ html_builder::make_element_for_diagnostic (const diagnostic_info &diagnostic,\n \t enum logical_locations::kind kind\n \t = logical_loc_mgr->get_kind (logical_loc);;\n \t if (const char *label = get_label_for_logical_location_kind (kind))\n-\t if (const char *name_with_scope\n-\t\t = logical_loc_mgr->get_name_with_scope (logical_loc))\n-\t\tadd_labelled_value (xp, \"logical-location\",\n-\t\t\t\t label, name_with_scope, true);\n+\t {\n+\t\tlabel_text name_with_scope\n+\t\t = logical_loc_mgr->get_name_with_scope (logical_loc);\n+\t\tif (name_with_scope.get ())\n+\t\t add_labelled_value (xp, \"logical-location\",\n+\t\t\t\t label, name_with_scope.get (), true);\n+\t }\n \t m_last_logical_location = logical_loc;\n \t }\n \ndiff --git a/gcc/diagnostics/logical-locations.h b/gcc/diagnostics/logical-locations.h\nindex 847843bc800d7..b91f72825251e 100644\n--- a/gcc/diagnostics/logical-locations.h\n+++ b/gcc/diagnostics/logical-locations.h\n@@ -155,15 +155,15 @@ public:\n \n /* Get a string (or NULL) for K suitable for use by the SARIF logicalLocation\n \"name\" property (SARIF v2.1.0 section 3.33.4). */\n- virtual const char *get_short_name (key k) const = 0;\n+ virtual label_text get_short_name (key k) const = 0;\n \n /* Get a string (or NULL) for K suitable for use by the SARIF logicalLocation\n \"fullyQualifiedName\" property (SARIF v2.1.0 section 3.33.5). */\n- virtual const char *get_name_with_scope (key k) const = 0;\n+ virtual label_text get_name_with_scope (key k) const = 0;\n \n /* Get a string (or NULL) for K suitable for use by the SARIF logicalLocation\n \"decoratedName\" property (SARIF v2.1.0 section 3.33.6). */\n- virtual const char *get_internal_name (key k) const = 0;\n+ virtual label_text get_internal_name (key k) const = 0;\n \n /* Get what kind of SARIF logicalLocation K is (if any). */\n virtual enum kind get_kind (key k) const = 0;\ndiff --git a/gcc/diagnostics/sarif-sink.cc b/gcc/diagnostics/sarif-sink.cc\nindex 2cd64d65112e9..1e25b459c645f 100644\n--- a/gcc/diagnostics/sarif-sink.cc\n+++ b/gcc/diagnostics/sarif-sink.cc\n@@ -3063,16 +3063,20 @@ ensure_sarif_logical_location_for (logical_locations::key k)\n \n auto sarif_logical_loc = std::make_unique<sarif_logical_location> ();\n \n- if (const char *short_name = logical_loc_mgr->get_short_name (k))\n- sarif_logical_loc->set_string (\"name\", short_name);\n+ label_text short_name = logical_loc_mgr->get_short_name (k);\n+ if (short_name.get ())\n+ sarif_logical_loc->set_string (\"name\", short_name.get ());\n \n /* \"fullyQualifiedName\" property (SARIF v2.1.0 section 3.33.5). */\n- if (const char *name_with_scope = logical_loc_mgr->get_name_with_scope (k))\n- sarif_logical_loc->set_string (\"fullyQualifiedName\", name_with_scope);\n+ label_text name_with_scope = logical_loc_mgr->get_name_with_scope (k);\n+ if (name_with_scope.get ())\n+ sarif_logical_loc->set_string (\"fullyQualifiedName\",\n+\t\t\t\t name_with_scope.get ());\n \n /* \"decoratedName\" property (SARIF v2.1.0 section 3.33.6). */\n- if (const char *internal_name = logical_loc_mgr->get_internal_name (k))\n- sarif_logical_loc->set_string (\"decoratedName\", internal_name);\n+ label_text internal_name = logical_loc_mgr->get_internal_name (k);\n+ if (internal_name.get ())\n+ sarif_logical_loc->set_string (\"decoratedName\", internal_name.get ());\n \n /* \"kind\" property (SARIF v2.1.0 section 3.33.7). */\n enum logical_locations::kind kind = logical_loc_mgr->get_kind (k);\n@@ -3118,9 +3122,11 @@ make_minimal_sarif_logical_location (logical_locations::key logical_loc)\n sarif_logical_loc->set_integer (\"index\", index);\n \n /* \"fullyQualifiedName\" property (SARIF v2.1.0 section 3.33.5). */\n- if (const char *name_with_scope\n-\t= logical_loc_mgr->get_name_with_scope (logical_loc))\n- sarif_logical_loc->set_string (\"fullyQualifiedName\", name_with_scope);\n+ label_text name_with_scope\n+ = logical_loc_mgr->get_name_with_scope (logical_loc);\n+ if (name_with_scope.get ())\n+ sarif_logical_loc->set_string (\"fullyQualifiedName\",\n+\t\t\t\t name_with_scope.get ());\n \n return sarif_logical_loc;\n }\ndiff --git a/gcc/diagnostics/selftest-logical-locations.cc b/gcc/diagnostics/selftest-logical-locations.cc\nindex f2176e331331b..3a0ee7f20ddf1 100644\n--- a/gcc/diagnostics/selftest-logical-locations.cc\n+++ b/gcc/diagnostics/selftest-logical-locations.cc\n@@ -45,27 +45,27 @@ test_manager::dump (FILE *outfile, int indent) const\n dumping::emit_heading (outfile, indent, \"test_manager\");\n }\n \n-const char *\n+label_text\n test_manager::get_short_name (key k) const\n {\n auto item = item_from_key (k);\n if (!item)\n- return nullptr;\n- return item->m_name;\n+ return label_text ();\n+ return label_text::borrow (item->m_name);\n }\n \n-const char *\n+label_text\n test_manager::get_name_with_scope (key k) const\n {\n auto item = item_from_key (k);\n- return item->m_name;\n+ return label_text::borrow (item->m_name);\n }\n \n-const char *\n+label_text\n test_manager::get_internal_name (key k) const\n {\n auto item = item_from_key (k);\n- return item->m_name;\n+ return label_text::borrow (item->m_name);\n }\n \n enum diagnostics::logical_locations::kind\n@@ -118,8 +118,8 @@ selftest_logical_locations_cc_tests ()\n \n ASSERT_NE (loc_foo, loc_bar);\n \n- ASSERT_STREQ (mgr.get_short_name (loc_foo), \"foo\");\n- ASSERT_STREQ (mgr.get_short_name (loc_bar), \"bar\");\n+ ASSERT_STREQ (mgr.get_short_name (loc_foo).get (), \"foo\");\n+ ASSERT_STREQ (mgr.get_short_name (loc_bar).get (), \"bar\");\n }\n \n } // namespace diagnostics::logical_locations::selftest\ndiff --git a/gcc/diagnostics/selftest-logical-locations.h b/gcc/diagnostics/selftest-logical-locations.h\nindex bc01894df82b9..2d00871fc2124 100644\n--- a/gcc/diagnostics/selftest-logical-locations.h\n+++ b/gcc/diagnostics/selftest-logical-locations.h\n@@ -41,9 +41,9 @@ public:\n \n void dump (FILE *out, int indent) const final override;\n \n- const char *get_short_name (key) const final override;\n- const char *get_name_with_scope (key) const final override;\n- const char *get_internal_name (key) const final override;\n+ label_text get_short_name (key) const final override;\n+ label_text get_name_with_scope (key) const final override;\n+ label_text get_internal_name (key) const final override;\n kind get_kind (key) const final override;\n label_text get_name_for_path_output (key) const final override;\n key get_parent (key) const final override\ndiff --git a/gcc/diagnostics/state-graphs-to-dot.cc b/gcc/diagnostics/state-graphs-to-dot.cc\nindex fe5a07fd02dcf..a0ccec71ed29a 100644\n--- a/gcc/diagnostics/state-graphs-to-dot.cc\n+++ b/gcc/diagnostics/state-graphs-to-dot.cc\n@@ -324,12 +324,15 @@ private:\n \tbreak;\n case state_node_properties::kind_t::stack_frame:\n \tif (auto logical_loc = state_node.get_logical_loc ())\n-\t if (const char *function\n-\t\t= m_logical_loc_mgr.get_short_name (logical_loc))\n-\t add_title_tr (id_of_dot_node, xp, num_columns, state_node,\n-\t\t\t std::string (\"Frame: \") + function,\n-\t\t\t style::h2,\n-\t\t\t state_node_properties::dynalloc_state_t::unknown);\n+\t {\n+\t label_text function\n+\t = m_logical_loc_mgr.get_short_name (logical_loc);\n+\t if (function.get ())\n+\t add_title_tr (id_of_dot_node, xp, num_columns, state_node,\n+\t\t\t std::string (\"Frame: \") + function.get (),\n+\t\t\t style::h2,\n+\t\t\t state_node_properties::dynalloc_state_t::unknown);\n+\t }\n \tbreak;\n case state_node_properties::kind_t::dynalloc_buffer:\n \t{\ndiff --git a/gcc/libgdiagnostics.cc b/gcc/libgdiagnostics.cc\nindex 98e15bfec11e7..eb2d0ac4cac1a 100644\n--- a/gcc/libgdiagnostics.cc\n+++ b/gcc/libgdiagnostics.cc\n@@ -485,28 +485,31 @@ public:\n (outfile, indent, \"impl_logical_location_manager\");\n }\n \n- const char *get_short_name (key k) const final override\n+ label_text\n+ get_short_name (key k) const final override\n {\n if (auto loc = ptr_from_key (k))\n- return loc->m_short_name.get_str ();\n+ return label_text::borrow (loc->m_short_name.get_str ());\n else\n- return nullptr;\n+ return label_text ();\n }\n \n- const char *get_name_with_scope (key k) const final override\n+ label_text\n+ get_name_with_scope (key k) const final override\n {\n if (auto loc = ptr_from_key (k))\n- return loc->m_fully_qualified_name.get_str ();\n+ return label_text::borrow (loc->m_fully_qualified_name.get_str ());\n else\n- return nullptr;\n+ return label_text ();\n }\n \n- const char *get_internal_name (key k) const final override\n+ label_text\n+ get_internal_name (key k) const final override\n {\n if (auto loc = ptr_from_key (k))\n- return loc->m_decorated_name.get_str ();\n+ return label_text::borrow (loc->m_decorated_name.get_str ());\n else\n- return nullptr;\n+ return label_text ();\n }\n \n kind get_kind (key k) const final override\ndiff --git a/gcc/tree-logical-location.cc b/gcc/tree-logical-location.cc\nindex 71294875c99c1..b741b4e8af361 100644\n--- a/gcc/tree-logical-location.cc\n+++ b/gcc/tree-logical-location.cc\n@@ -48,33 +48,35 @@ tree_logical_location_manager::dump (FILE *outfile, int indent) const\n \t\t\t\t \"tree_logical_location_manager\");\n }\n \n-const char *\n+label_text\n tree_logical_location_manager::get_short_name (key k) const\n {\n tree node = tree_from_key (k);\n assert_valid_tree (node);\n \n if (DECL_P (node))\n- return identifier_to_locale (lang_hooks.decl_printable_name (node, 0));\n+ return label_text::borrow\n+ (identifier_to_locale (lang_hooks.decl_printable_name (node, 0)));\n if (TYPE_P (node))\n- return IDENTIFIER_POINTER (TYPE_IDENTIFIER (node));\n- return nullptr;\n+ return label_text::borrow (IDENTIFIER_POINTER (TYPE_IDENTIFIER (node)));\n+ return label_text ();\n }\n \n-const char *\n+label_text\n tree_logical_location_manager::get_name_with_scope (key k) const\n {\n tree node = tree_from_key (k);\n assert_valid_tree (node);\n \n if (DECL_P (node))\n- return identifier_to_locale (lang_hooks.decl_printable_name (node, 1));\n+ return label_text::borrow\n+ (identifier_to_locale (lang_hooks.decl_printable_name (node, 1)));\n if (TYPE_P (node))\n- return nullptr;\n- return nullptr;\n+ return label_text ();\n+ return label_text ();\n }\n \n-const char *\n+label_text\n tree_logical_location_manager::get_internal_name (key k) const\n {\n tree node = tree_from_key (k);\n@@ -85,11 +87,11 @@ tree_logical_location_manager::get_internal_name (key k) const\n if (HAS_DECL_ASSEMBLER_NAME_P (node)\n \t && TREE_CODE (node) != NAMESPACE_DECL) // FIXME\n \tif (tree id = DECL_ASSEMBLER_NAME (node))\n-\t return IDENTIFIER_POINTER (id);\n+\t return label_text::borrow (IDENTIFIER_POINTER (id));\n }\n else if (TYPE_P (node))\n- return nullptr;\n- return NULL;\n+ return label_text ();\n+ return label_text ();\n }\n \n enum kind\ndiff --git a/gcc/tree-logical-location.h b/gcc/tree-logical-location.h\nindex 037496010505f..7a37480bee026 100644\n--- a/gcc/tree-logical-location.h\n+++ b/gcc/tree-logical-location.h\n@@ -36,9 +36,9 @@ public:\n \n void dump (FILE *out, int indent) const final override;\n \n- const char *get_short_name (key) const final override;\n- const char *get_name_with_scope (key) const final override;\n- const char *get_internal_name (key) const final override;\n+ label_text get_short_name (key) const final override;\n+ label_text get_name_with_scope (key) const final override;\n+ label_text get_internal_name (key) const final override;\n kind get_kind (key) const final override;\n label_text get_name_for_path_output (key) const final override;\n key get_parent (key) const final override;\n", "prefixes": [ "1/5" ] }