Skip to content

Commit f005c3b

Browse files
committed
hoist regexes
1 parent 84ac205 commit f005c3b

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

llvm/lib/Support/StringExtras.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,13 @@ std::string llvm::convertToSnakeFromCamelCase(StringRef input) {
9797
if (input.empty())
9898
return "";
9999

100+
llvm::Regex trailingCap = llvm::Regex("([A-Z]+)([A-Z][a-z])");
101+
llvm::Regex leadingCap = llvm::Regex("([a-z0-9])([A-Z])");
102+
100103
std::string snakeCase = input.str();
101104
for (int i = 0; i < 10; ++i) {
102-
snakeCase = llvm::Regex("([A-Z]+)([A-Z][a-z])").sub("\\1_\\2", snakeCase);
103-
snakeCase = llvm::Regex("([a-z0-9])([A-Z])").sub("\\1_\\2", snakeCase);
105+
snakeCase = trailingCap.sub("\\1_\\2", snakeCase);
106+
snakeCase = leadingCap.sub("\\1_\\2", snakeCase);
104107
}
105108
std::transform(snakeCase.begin(), snakeCase.end(), snakeCase.begin(),
106109
[](unsigned char c) { return std::tolower(c); });

llvm/unittests/ADT/StringExtrasTest.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ TEST(StringExtrasTest, ConvertToSnakeFromCamelCase) {
185185
testConvertToSnakeCase("OpName", "op_name");
186186
testConvertToSnakeCase("opName", "op_name");
187187
testConvertToSnakeCase("OPName", "op_name");
188+
testConvertToSnakeCase("Intel_OCL_BI", "intel_ocl_bi");
188189
testConvertToSnakeCase("opNAME", "op_name");
189190
testConvertToSnakeCase("opNAMe", "op_na_me");
190191
testConvertToSnakeCase("opnameE", "opname_e");

0 commit comments

Comments
 (0)