Author: Nick Desaulniers Date: 2023-04-20T10:02:32-07:00 New Revision: 691c4800be8018d8ad03f0e25be3672acbdfe403
URL: https://github.com/llvm/llvm-project/commit/691c4800be8018d8ad03f0e25be3672acbdfe403 DIFF: https://github.com/llvm/llvm-project/commit/691c4800be8018d8ad03f0e25be3672acbdfe403.diff LOG: [libcxxabi][demangle] create helper for std::string_view::starts_with Add C++ 20 style starts_with to replace StringView::startsWith in LLVMDemangle. Due to library layering (LLVMSupport depends on LLVMDemangle), we add the utility header under llvm/Demangle, instead of llvm/ADT or llvm/Support. Modify this in libcxxabi, then copy this over to llvm. Reviewed By: MaskRay, #libc_abi, phosek Differential Revision: https://reviews.llvm.org/D148556 Added: libcxxabi/src/demangle/StringViewExtras.h llvm/include/llvm/Demangle/StringViewExtras.h Modified: clang/docs/tools/clang-formatted-files.txt libcxxabi/src/demangle/cp-to-llvm.sh Removed: ################################################################################ diff --git a/clang/docs/tools/clang-formatted-files.txt b/clang/docs/tools/clang-formatted-files.txt index 004722d998f7b..a156e20fbb1e3 100644 --- a/clang/docs/tools/clang-formatted-files.txt +++ b/clang/docs/tools/clang-formatted-files.txt @@ -5251,6 +5251,7 @@ llvm/include/llvm/Debuginfod/DIFetcher.h llvm/include/llvm/Debuginfod/HTTPClient.h llvm/include/llvm/Demangle/Demangle.h llvm/include/llvm/Demangle/StringView.h +llvm/include/llvm/Demangle/StringViewExtras.h llvm/include/llvm/Demangle/Utility.h llvm/include/llvm/DWARFLinker/DWARFLinker.h llvm/include/llvm/DWARFLinker/DWARFLinkerCompileUnit.h diff --git a/libcxxabi/src/demangle/StringViewExtras.h b/libcxxabi/src/demangle/StringViewExtras.h new file mode 100644 index 0000000000000..d430e67ea3cb4 --- /dev/null +++ b/libcxxabi/src/demangle/StringViewExtras.h @@ -0,0 +1,34 @@ +//===--- StringViewExtras.h -------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// There are two copies of this file in the source tree. The one under +// libcxxabi is the original and the one under llvm is the copy. Use +// cp-to-llvm.sh to update the copy. See README.txt for more details. +// +//===----------------------------------------------------------------------===// + +#ifndef DEMANGLE_STRINGVIEW_H +#define DEMANGLE_STRINGVIEW_H + +#include "DemangleConfig.h" + +#include <string_view> + +DEMANGLE_NAMESPACE_BEGIN + +inline bool starts_with(std::string_view self, char C) { + return !self.empty() && self.front() == C; +} + +inline bool starts_with(std::string_view haystack, std::string_view needle) { + return haystack.substr(0, needle.size()) == needle; +} + +DEMANGLE_NAMESPACE_END + +#endif diff --git a/libcxxabi/src/demangle/cp-to-llvm.sh b/libcxxabi/src/demangle/cp-to-llvm.sh index d1474655b1c34..870b6dad9ac83 100755 --- a/libcxxabi/src/demangle/cp-to-llvm.sh +++ b/libcxxabi/src/demangle/cp-to-llvm.sh @@ -6,7 +6,7 @@ set -e cd $(dirname $0) -HDRS="ItaniumDemangle.h ItaniumNodes.def StringView.h Utility.h" +HDRS="ItaniumDemangle.h ItaniumNodes.def StringView.h StringViewExtras.h Utility.h" LLVM_DEMANGLE_DIR=$1 if [[ -z "$LLVM_DEMANGLE_DIR" ]]; then diff --git a/llvm/include/llvm/Demangle/StringViewExtras.h b/llvm/include/llvm/Demangle/StringViewExtras.h new file mode 100644 index 0000000000000..e4c2861ee5b67 --- /dev/null +++ b/llvm/include/llvm/Demangle/StringViewExtras.h @@ -0,0 +1,34 @@ +//===--- StringViewExtras.h ----------*- mode:c++;eval:(read-only-mode) -*-===// +// Do not edit! See README.txt. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// There are two copies of this file in the source tree. The one under +// libcxxabi is the original and the one under llvm is the copy. Use +// cp-to-llvm.sh to update the copy. See README.txt for more details. +// +//===----------------------------------------------------------------------===// + +#ifndef DEMANGLE_STRINGVIEW_H +#define DEMANGLE_STRINGVIEW_H + +#include "DemangleConfig.h" + +#include <string_view> + +DEMANGLE_NAMESPACE_BEGIN + +inline bool starts_with(std::string_view self, char C) { + return !self.empty() && self.front() == C; +} + +inline bool starts_with(std::string_view haystack, std::string_view needle) { + return haystack.substr(0, needle.size()) == needle; +} + +DEMANGLE_NAMESPACE_END + +#endif _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits