Skip to content

Commit 3ece37b

Browse files
committed
[Demangle] Remove uses of llvm::itanium_demangle::StringView::{dropBack,dropFront}. NFC
Make it easier to migrate StringView to std::string_view.
1 parent 9f4051b commit 3ece37b

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed

llvm/include/llvm/Demangle/StringView.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,13 @@ class StringView {
6161
return StringView(First + N, Last);
6262
}
6363

64-
StringView dropBack(size_t N = 1) const {
65-
if (N >= size())
66-
N = size();
67-
return StringView(First, Last - N);
64+
void remove_prefix(size_t N) {
65+
assert(size() >= N);
66+
First += N;
67+
}
68+
void remove_suffix(size_t N) {
69+
assert(size() >= N);
70+
Last -= N;
6871
}
6972

7073
char front() const {

llvm/lib/Demangle/MicrosoftDemangle.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ static bool startsWithLocalScopePattern(StringView S) {
158158
// If it's not 0-9, then it's an encoded number terminated with an @
159159
if (Candidate.back() != '@')
160160
return false;
161-
Candidate = Candidate.dropBack();
161+
Candidate.remove_suffix(1);
162162

163163
// An encoded number starts with B-P and all subsequent digits are in A-P.
164164
// Note that the reason the first digit cannot be A is two fold. First, it
@@ -168,11 +168,11 @@ static bool startsWithLocalScopePattern(StringView S) {
168168
// ambiguity is also why single digit encoded numbers use 0-9 rather than A-J.
169169
if (Candidate[0] < 'B' || Candidate[0] > 'P')
170170
return false;
171-
Candidate = Candidate.dropFront();
171+
Candidate.remove_prefix(1);
172172
while (!Candidate.empty()) {
173173
if (Candidate[0] < 'A' || Candidate[0] > 'P')
174174
return false;
175-
Candidate = Candidate.dropFront();
175+
Candidate.remove_prefix(1);
176176
}
177177

178178
return true;
@@ -486,7 +486,7 @@ SymbolNode *Demangler::demangleSpecialIntrinsic(StringView &MangledName) {
486486
IdentifierNode *
487487
Demangler::demangleFunctionIdentifierCode(StringView &MangledName) {
488488
assert(MangledName.startsWith('?'));
489-
MangledName = MangledName.dropFront();
489+
MangledName.remove_prefix(1);
490490
if (MangledName.empty()) {
491491
Error = true;
492492
return nullptr;
@@ -965,7 +965,7 @@ NamedIdentifierNode *Demangler::demangleBackRefName(StringView &MangledName) {
965965
return nullptr;
966966
}
967967

968-
MangledName = MangledName.dropFront();
968+
MangledName.remove_prefix(1);
969969
return Backrefs.Names[I];
970970
}
971971

@@ -1036,7 +1036,7 @@ uint8_t Demangler::demangleCharLiteral(StringView &MangledName) {
10361036
if (!MangledName.startsWith('?'))
10371037
return MangledName.popFront();
10381038

1039-
MangledName = MangledName.dropFront();
1039+
MangledName.remove_prefix(1);
10401040
if (MangledName.empty())
10411041
goto CharLiteralError;
10421042

@@ -1057,7 +1057,7 @@ uint8_t Demangler::demangleCharLiteral(StringView &MangledName) {
10571057
if (startsWithDigit(MangledName)) {
10581058
const char *Lookup = ",/\\:. \n\t'-";
10591059
char C = Lookup[MangledName[0] - '0'];
1060-
MangledName = MangledName.dropFront();
1060+
MangledName.remove_prefix(1);
10611061
return C;
10621062
}
10631063

@@ -1067,7 +1067,7 @@ uint8_t Demangler::demangleCharLiteral(StringView &MangledName) {
10671067
'\xEF', '\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5',
10681068
'\xF6', '\xF7', '\xF8', '\xF9', '\xFA'};
10691069
char C = Lookup[MangledName[0] - 'a'];
1070-
MangledName = MangledName.dropFront();
1070+
MangledName.remove_prefix(1);
10711071
return C;
10721072
}
10731073

@@ -1077,7 +1077,7 @@ uint8_t Demangler::demangleCharLiteral(StringView &MangledName) {
10771077
'\xCF', '\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5',
10781078
'\xD6', '\xD7', '\xD8', '\xD9', '\xDA'};
10791079
char C = Lookup[MangledName[0] - 'A'];
1080-
MangledName = MangledName.dropFront();
1080+
MangledName.remove_prefix(1);
10811081
return C;
10821082
}
10831083

@@ -2124,7 +2124,7 @@ NodeArrayNode *Demangler::demangleFunctionParameterList(StringView &MangledName,
21242124
Error = true;
21252125
return nullptr;
21262126
}
2127-
MangledName = MangledName.dropFront();
2127+
MangledName.remove_prefix(1);
21282128

21292129
*Current = Arena.alloc<NodeList>();
21302130
(*Current)->N = Backrefs.FunctionParams[N];
@@ -2206,7 +2206,7 @@ Demangler::demangleTemplateParameterList(StringView &MangledName) {
22062206
TP.N = TPRN = Arena.alloc<TemplateParameterReferenceNode>();
22072207
TPRN->IsMemberPointer = true;
22082208

2209-
MangledName = MangledName.dropFront();
2209+
MangledName.remove_prefix(1);
22102210
// 1 - single inheritance <name>
22112211
// H - multiple inheritance <name> <number>
22122212
// I - virtual inheritance <name> <number> <number>
@@ -2252,7 +2252,7 @@ Demangler::demangleTemplateParameterList(StringView &MangledName) {
22522252
TP.N = TPRN = Arena.alloc<TemplateParameterReferenceNode>();
22532253

22542254
// Data member pointer.
2255-
MangledName = MangledName.dropFront();
2255+
MangledName.remove_prefix(1);
22562256
char InheritanceSpecifier = MangledName.popFront();
22572257

22582258
switch (InheritanceSpecifier) {

0 commit comments

Comments
 (0)