[PATCH] D146394: Replace strlen with StringRef::size
Ilyas Mustafazade via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Mar 19 14:07:20 PDT 2023
1lyasm created this revision.
1lyasm added reviewers: serge-sans-paille, vitalybuka.
Herald added a subscriber: hiraditya.
Herald added a project: All.
1lyasm requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Replace multiple strlen calls with a StringRef constructor and a StringRef::size call.
Rename ArgSize to SpellingSize, and add ArgStringSize.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D146394
Files:
llvm/lib/Option/Option.cpp
Index: llvm/lib/Option/Option.cpp
===================================================================
--- llvm/lib/Option/Option.cpp
+++ llvm/lib/Option/Option.cpp
@@ -108,20 +108,21 @@
std::unique_ptr<Arg> Option::acceptInternal(const ArgList &Args,
StringRef Spelling,
unsigned &Index) const {
- size_t ArgSize = Spelling.size();
+ size_t SpellingSize = Spelling.size();
+ size_t ArgStringSize = StringRef(Args.getArgString(Index)).size();
switch (getKind()) {
case FlagClass: {
- if (ArgSize != strlen(Args.getArgString(Index)))
+ if (SpellingSize != ArgStringSize)
return nullptr;
return std::make_unique<Arg>(*this, Spelling, Index++);
}
case JoinedClass: {
- const char *Value = Args.getArgString(Index) + ArgSize;
+ const char *Value = Args.getArgString(Index) + SpellingSize;
return std::make_unique<Arg>(*this, Spelling, Index++, Value);
}
case CommaJoinedClass: {
// Always matches.
- const char *Str = Args.getArgString(Index) + ArgSize;
+ const char *Str = Args.getArgString(Index) + SpellingSize;
auto A = std::make_unique<Arg>(*this, Spelling, Index++);
// Parse out the comma separated values.
@@ -149,8 +150,7 @@
}
case SeparateClass:
// Matches iff this is an exact match.
- // FIXME: Avoid strlen.
- if (ArgSize != strlen(Args.getArgString(Index)))
+ if (SpellingSize != ArgStringSize)
return nullptr;
Index += 2;
@@ -162,8 +162,7 @@
Args.getArgString(Index - 1));
case MultiArgClass: {
// Matches iff this is an exact match.
- // FIXME: Avoid strlen.
- if (ArgSize != strlen(Args.getArgString(Index)))
+ if (SpellingSize != ArgStringSize)
return nullptr;
Index += 1 + getNumArgs();
@@ -178,9 +177,8 @@
}
case JoinedOrSeparateClass: {
// If this is not an exact match, it is a joined arg.
- // FIXME: Avoid strlen.
- if (ArgSize != strlen(Args.getArgString(Index))) {
- const char *Value = Args.getArgString(Index) + ArgSize;
+ if (SpellingSize != ArgStringSize) {
+ const char *Value = Args.getArgString(Index) + SpellingSize;
return std::make_unique<Arg>(*this, Spelling, Index++, Value);
}
@@ -201,12 +199,11 @@
return nullptr;
return std::make_unique<Arg>(*this, Spelling, Index - 2,
- Args.getArgString(Index - 2) + ArgSize,
+ Args.getArgString(Index - 2) + SpellingSize,
Args.getArgString(Index - 1));
case RemainingArgsClass: {
// Matches iff this is an exact match.
- // FIXME: Avoid strlen.
- if (ArgSize != strlen(Args.getArgString(Index)))
+ if (SpellingSize != ArgStringSize)
return nullptr;
auto A = std::make_unique<Arg>(*this, Spelling, Index++);
while (Index < Args.getNumInputArgStrings() &&
@@ -216,9 +213,9 @@
}
case RemainingArgsJoinedClass: {
auto A = std::make_unique<Arg>(*this, Spelling, Index);
- if (ArgSize != strlen(Args.getArgString(Index))) {
+ if (SpellingSize != ArgStringSize) {
// An inexact match means there is a joined arg.
- A->getValues().push_back(Args.getArgString(Index) + ArgSize);
+ A->getValues().push_back(Args.getArgString(Index) + SpellingSize);
}
Index++;
while (Index < Args.getNumInputArgStrings() &&
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D146394.506422.patch
Type: text/x-patch
Size: 3472 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230319/76663ba9/attachment.bin>
More information about the llvm-commits
mailing list