From c9157d925c489f07ba9c0b2ce47e5149b75969a5 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Mon, 18 Dec 2023 21:30:12 +0100 Subject: Merge llvm-project main llvmorg-18-init-15088-gd14ee76181fb This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvm-project main llvmorg-18-init-15088-gd14ee76181fb. PR: 276104 MFC after: 1 month (cherry picked from commit 5f757f3ff9144b609b3c433dfd370cc6bdc191ad) --- contrib/llvm-project/llvm/lib/Support/StringExtras.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'contrib/llvm-project/llvm/lib/Support/StringExtras.cpp') diff --git a/contrib/llvm-project/llvm/lib/Support/StringExtras.cpp b/contrib/llvm-project/llvm/lib/Support/StringExtras.cpp index 5683d7005584..6ae26267337b 100644 --- a/contrib/llvm-project/llvm/lib/Support/StringExtras.cpp +++ b/contrib/llvm-project/llvm/lib/Support/StringExtras.cpp @@ -98,15 +98,16 @@ std::string llvm::convertToSnakeFromCamelCase(StringRef input) { std::string snakeCase; snakeCase.reserve(input.size()); - for (char c : input) { - if (!std::isupper(c)) { - snakeCase.push_back(c); - continue; - } - - if (!snakeCase.empty() && snakeCase.back() != '_') + auto check = [&input](size_t j, function_ref predicate) { + return j < input.size() && predicate(input[j]); + }; + for (size_t i = 0; i < input.size(); ++i) { + snakeCase.push_back(tolower(input[i])); + // Handles "runs" of capitals, such as in OPName -> op_name. + if (check(i, isupper) && check(i + 1, isupper) && check(i + 2, islower)) + snakeCase.push_back('_'); + if ((check(i, islower) || check(i, isdigit)) && check(i + 1, isupper)) snakeCase.push_back('_'); - snakeCase.push_back(llvm::toLower(c)); } return snakeCase; } -- cgit v1.2.3