Skip to content

Commit 89071f3

Browse files
authoredApr 16, 2024··
[clang] Drop unaligned from calls to readNext (NFC) (#88842)
Now readNext defaults to unaligned accesses. This patch drops unaligned to improve readability.
1 parent 7e49b0d commit 89071f3

File tree

4 files changed

+98
-142
lines changed

4 files changed

+98
-142
lines changed
 

‎clang/lib/APINotes/APINotesReader.cpp

+55-82
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,20 @@ namespace {
3030
llvm::VersionTuple ReadVersionTuple(const uint8_t *&Data) {
3131
uint8_t NumVersions = (*Data++) & 0x03;
3232

33-
unsigned Major =
34-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
33+
unsigned Major = endian::readNext<uint32_t, llvm::endianness::little>(Data);
3534
if (NumVersions == 0)
3635
return llvm::VersionTuple(Major);
3736

38-
unsigned Minor =
39-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
37+
unsigned Minor = endian::readNext<uint32_t, llvm::endianness::little>(Data);
4038
if (NumVersions == 1)
4139
return llvm::VersionTuple(Major, Minor);
4240

4341
unsigned Subminor =
44-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
42+
endian::readNext<uint32_t, llvm::endianness::little>(Data);
4543
if (NumVersions == 2)
4644
return llvm::VersionTuple(Major, Minor, Subminor);
4745

48-
unsigned Build =
49-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
46+
unsigned Build = endian::readNext<uint32_t, llvm::endianness::little>(Data);
5047
return llvm::VersionTuple(Major, Minor, Subminor, Build);
5148
}
5249

@@ -71,16 +68,16 @@ class VersionedTableInfo {
7168

7269
static std::pair<unsigned, unsigned> ReadKeyDataLength(const uint8_t *&Data) {
7370
unsigned KeyLength =
74-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
71+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
7572
unsigned DataLength =
76-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
73+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
7774
return {KeyLength, DataLength};
7875
}
7976

8077
static data_type ReadData(internal_key_type Key, const uint8_t *Data,
8178
unsigned Length) {
8279
unsigned NumElements =
83-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
80+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
8481
data_type Result;
8582
Result.reserve(NumElements);
8683
for (unsigned i = 0; i != NumElements; ++i) {
@@ -105,14 +102,14 @@ void ReadCommonEntityInfo(const uint8_t *&Data, CommonEntityInfo &Info) {
105102
Info.setSwiftPrivate(static_cast<bool>((UnavailableBits >> 3) & 0x01));
106103

107104
unsigned MsgLength =
108-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
105+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
109106
Info.UnavailableMsg =
110107
std::string(reinterpret_cast<const char *>(Data),
111108
reinterpret_cast<const char *>(Data) + MsgLength);
112109
Data += MsgLength;
113110

114111
unsigned SwiftNameLength =
115-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
112+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
116113
Info.SwiftName =
117114
std::string(reinterpret_cast<const char *>(Data),
118115
reinterpret_cast<const char *>(Data) + SwiftNameLength);
@@ -124,15 +121,15 @@ void ReadCommonTypeInfo(const uint8_t *&Data, CommonTypeInfo &Info) {
124121
ReadCommonEntityInfo(Data, Info);
125122

126123
unsigned SwiftBridgeLength =
127-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
124+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
128125
if (SwiftBridgeLength > 0) {
129126
Info.setSwiftBridge(std::string(reinterpret_cast<const char *>(Data),
130127
SwiftBridgeLength - 1));
131128
Data += SwiftBridgeLength - 1;
132129
}
133130

134131
unsigned ErrorDomainLength =
135-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
132+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
136133
if (ErrorDomainLength > 0) {
137134
Info.setNSErrorDomain(std::optional<std::string>(std::string(
138135
reinterpret_cast<const char *>(Data), ErrorDomainLength - 1)));
@@ -163,9 +160,9 @@ class IdentifierTableInfo {
163160

164161
static std::pair<unsigned, unsigned> ReadKeyDataLength(const uint8_t *&Data) {
165162
unsigned KeyLength =
166-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
163+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
167164
unsigned DataLength =
168-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
165+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
169166
return {KeyLength, DataLength};
170167
}
171168

@@ -175,8 +172,7 @@ class IdentifierTableInfo {
175172

176173
static data_type ReadData(internal_key_type key, const uint8_t *Data,
177174
unsigned Length) {
178-
return endian::readNext<uint32_t, llvm::endianness::little, unaligned>(
179-
Data);
175+
return endian::readNext<uint32_t, llvm::endianness::little>(Data);
180176
}
181177
};
182178

@@ -203,26 +199,24 @@ class ObjCContextIDTableInfo {
203199

204200
static std::pair<unsigned, unsigned> ReadKeyDataLength(const uint8_t *&Data) {
205201
unsigned KeyLength =
206-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
202+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
207203
unsigned DataLength =
208-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
204+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
209205
return {KeyLength, DataLength};
210206
}
211207

212208
static internal_key_type ReadKey(const uint8_t *Data, unsigned Length) {
213209
auto ParentCtxID =
214-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
210+
endian::readNext<uint32_t, llvm::endianness::little>(Data);
215211
auto ContextKind =
216-
endian::readNext<uint8_t, llvm::endianness::little, unaligned>(Data);
217-
auto NameID =
218-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
212+
endian::readNext<uint8_t, llvm::endianness::little>(Data);
213+
auto NameID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
219214
return {ParentCtxID, ContextKind, NameID};
220215
}
221216

222217
static data_type ReadData(internal_key_type Key, const uint8_t *Data,
223218
unsigned Length) {
224-
return endian::readNext<uint32_t, llvm::endianness::little, unaligned>(
225-
Data);
219+
return endian::readNext<uint32_t, llvm::endianness::little>(Data);
226220
}
227221
};
228222

@@ -232,8 +226,7 @@ class ObjCContextInfoTableInfo
232226
ObjCContextInfo> {
233227
public:
234228
static internal_key_type ReadKey(const uint8_t *Data, unsigned Length) {
235-
return endian::readNext<uint32_t, llvm::endianness::little, unaligned>(
236-
Data);
229+
return endian::readNext<uint32_t, llvm::endianness::little>(Data);
237230
}
238231

239232
hash_value_type ComputeHash(internal_key_type Key) {
@@ -273,8 +266,7 @@ void ReadVariableInfo(const uint8_t *&Data, VariableInfo &Info) {
273266
}
274267
++Data;
275268

276-
auto TypeLen =
277-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
269+
auto TypeLen = endian::readNext<uint16_t, llvm::endianness::little>(Data);
278270
Info.setType(std::string(Data, Data + TypeLen));
279271
Data += TypeLen;
280272
}
@@ -286,12 +278,9 @@ class ObjCPropertyTableInfo
286278
ObjCPropertyInfo> {
287279
public:
288280
static internal_key_type ReadKey(const uint8_t *Data, unsigned Length) {
289-
auto ClassID =
290-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
291-
auto NameID =
292-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
293-
char IsInstance =
294-
endian::readNext<uint8_t, llvm::endianness::little, unaligned>(Data);
281+
auto ClassID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
282+
auto NameID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
283+
char IsInstance = endian::readNext<uint8_t, llvm::endianness::little>(Data);
295284
return {ClassID, NameID, IsInstance};
296285
}
297286

@@ -314,8 +303,7 @@ class ObjCPropertyTableInfo
314303
void ReadParamInfo(const uint8_t *&Data, ParamInfo &Info) {
315304
ReadVariableInfo(Data, Info);
316305

317-
uint8_t Payload =
318-
endian::readNext<uint8_t, llvm::endianness::little, unaligned>(Data);
306+
uint8_t Payload = endian::readNext<uint8_t, llvm::endianness::little>(Data);
319307
if (auto RawConvention = Payload & 0x7) {
320308
auto Convention = static_cast<RetainCountConventionKind>(RawConvention - 1);
321309
Info.setRetainCountConvention(Convention);
@@ -331,8 +319,7 @@ void ReadParamInfo(const uint8_t *&Data, ParamInfo &Info) {
331319
void ReadFunctionInfo(const uint8_t *&Data, FunctionInfo &Info) {
332320
ReadCommonEntityInfo(Data, Info);
333321

334-
uint8_t Payload =
335-
endian::readNext<uint8_t, llvm::endianness::little, unaligned>(Data);
322+
uint8_t Payload = endian::readNext<uint8_t, llvm::endianness::little>(Data);
336323
if (auto RawConvention = Payload & 0x7) {
337324
auto Convention = static_cast<RetainCountConventionKind>(RawConvention - 1);
338325
Info.setRetainCountConvention(Convention);
@@ -343,12 +330,12 @@ void ReadFunctionInfo(const uint8_t *&Data, FunctionInfo &Info) {
343330
assert(Payload == 0 && "Bad API notes");
344331

345332
Info.NumAdjustedNullable =
346-
endian::readNext<uint8_t, llvm::endianness::little, unaligned>(Data);
333+
endian::readNext<uint8_t, llvm::endianness::little>(Data);
347334
Info.NullabilityPayload =
348-
endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Data);
335+
endian::readNext<uint64_t, llvm::endianness::little>(Data);
349336

350337
unsigned NumParams =
351-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
338+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
352339
while (NumParams > 0) {
353340
ParamInfo pi;
354341
ReadParamInfo(Data, pi);
@@ -357,7 +344,7 @@ void ReadFunctionInfo(const uint8_t *&Data, FunctionInfo &Info) {
357344
}
358345

359346
unsigned ResultTypeLen =
360-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
347+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
361348
Info.ResultType = std::string(Data, Data + ResultTypeLen);
362349
Data += ResultTypeLen;
363350
}
@@ -369,12 +356,10 @@ class ObjCMethodTableInfo
369356
ObjCMethodInfo> {
370357
public:
371358
static internal_key_type ReadKey(const uint8_t *Data, unsigned Length) {
372-
auto ClassID =
373-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
359+
auto ClassID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
374360
auto SelectorID =
375-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
376-
auto IsInstance =
377-
endian::readNext<uint8_t, llvm::endianness::little, unaligned>(Data);
361+
endian::readNext<uint32_t, llvm::endianness::little>(Data);
362+
auto IsInstance = endian::readNext<uint8_t, llvm::endianness::little>(Data);
378363
return {ClassID, SelectorID, IsInstance};
379364
}
380365

@@ -419,29 +404,26 @@ class ObjCSelectorTableInfo {
419404

420405
static std::pair<unsigned, unsigned> ReadKeyDataLength(const uint8_t *&Data) {
421406
unsigned KeyLength =
422-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
407+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
423408
unsigned DataLength =
424-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
409+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
425410
return {KeyLength, DataLength};
426411
}
427412

428413
static internal_key_type ReadKey(const uint8_t *Data, unsigned Length) {
429414
internal_key_type Key;
430-
Key.NumArgs =
431-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
415+
Key.NumArgs = endian::readNext<uint16_t, llvm::endianness::little>(Data);
432416
unsigned NumIdents = (Length - sizeof(uint16_t)) / sizeof(uint32_t);
433417
for (unsigned i = 0; i != NumIdents; ++i) {
434418
Key.Identifiers.push_back(
435-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(
436-
Data));
419+
endian::readNext<uint32_t, llvm::endianness::little>(Data));
437420
}
438421
return Key;
439422
}
440423

441424
static data_type ReadData(internal_key_type Key, const uint8_t *Data,
442425
unsigned Length) {
443-
return endian::readNext<uint32_t, llvm::endianness::little, unaligned>(
444-
Data);
426+
return endian::readNext<uint32_t, llvm::endianness::little>(Data);
445427
}
446428
};
447429

@@ -451,12 +433,10 @@ class GlobalVariableTableInfo
451433
GlobalVariableInfo> {
452434
public:
453435
static internal_key_type ReadKey(const uint8_t *Data, unsigned Length) {
454-
auto CtxID =
455-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
436+
auto CtxID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
456437
auto ContextKind =
457-
endian::readNext<uint8_t, llvm::endianness::little, unaligned>(Data);
458-
auto NameID =
459-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
438+
endian::readNext<uint8_t, llvm::endianness::little>(Data);
439+
auto NameID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
460440
return {CtxID, ContextKind, NameID};
461441
}
462442

@@ -478,12 +458,10 @@ class GlobalFunctionTableInfo
478458
GlobalFunctionInfo> {
479459
public:
480460
static internal_key_type ReadKey(const uint8_t *Data, unsigned Length) {
481-
auto CtxID =
482-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
461+
auto CtxID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
483462
auto ContextKind =
484-
endian::readNext<uint8_t, llvm::endianness::little, unaligned>(Data);
485-
auto NameID =
486-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
463+
endian::readNext<uint8_t, llvm::endianness::little>(Data);
464+
auto NameID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
487465
return {CtxID, ContextKind, NameID};
488466
}
489467

@@ -505,8 +483,7 @@ class EnumConstantTableInfo
505483
EnumConstantInfo> {
506484
public:
507485
static internal_key_type ReadKey(const uint8_t *Data, unsigned Length) {
508-
auto NameID =
509-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
486+
auto NameID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
510487
return NameID;
511488
}
512489

@@ -527,13 +504,11 @@ class TagTableInfo
527504
: public VersionedTableInfo<TagTableInfo, ContextTableKey, TagInfo> {
528505
public:
529506
static internal_key_type ReadKey(const uint8_t *Data, unsigned Length) {
530-
auto CtxID =
531-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
507+
auto CtxID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
532508
auto ContextKind =
533-
endian::readNext<uint8_t, llvm::endianness::little, unaligned>(Data);
509+
endian::readNext<uint8_t, llvm::endianness::little>(Data);
534510
auto NameID =
535-
endian::readNext<IdentifierID, llvm::endianness::little, unaligned>(
536-
Data);
511+
endian::readNext<IdentifierID, llvm::endianness::little>(Data);
537512
return {CtxID, ContextKind, NameID};
538513
}
539514

@@ -553,21 +528,21 @@ class TagTableInfo
553528
static_cast<EnumExtensibilityKind>((Payload & 0x3) - 1);
554529

555530
unsigned ImportAsLength =
556-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
531+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
557532
if (ImportAsLength > 0) {
558533
Info.SwiftImportAs =
559534
std::string(reinterpret_cast<const char *>(Data), ImportAsLength - 1);
560535
Data += ImportAsLength - 1;
561536
}
562537
unsigned RetainOpLength =
563-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
538+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
564539
if (RetainOpLength > 0) {
565540
Info.SwiftRetainOp =
566541
std::string(reinterpret_cast<const char *>(Data), RetainOpLength - 1);
567542
Data += RetainOpLength - 1;
568543
}
569544
unsigned ReleaseOpLength =
570-
endian::readNext<uint16_t, llvm::endianness::little, unaligned>(Data);
545+
endian::readNext<uint16_t, llvm::endianness::little>(Data);
571546
if (ReleaseOpLength > 0) {
572547
Info.SwiftReleaseOp = std::string(reinterpret_cast<const char *>(Data),
573548
ReleaseOpLength - 1);
@@ -585,13 +560,11 @@ class TypedefTableInfo
585560
TypedefInfo> {
586561
public:
587562
static internal_key_type ReadKey(const uint8_t *Data, unsigned Length) {
588-
auto CtxID =
589-
endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Data);
563+
auto CtxID = endian::readNext<uint32_t, llvm::endianness::little>(Data);
590564
auto ContextKind =
591-
endian::readNext<uint8_t, llvm::endianness::little, unaligned>(Data);
565+
endian::readNext<uint8_t, llvm::endianness::little>(Data);
592566
auto nameID =
593-
endian::readNext<IdentifierID, llvm::endianness::little, unaligned>(
594-
Data);
567+
endian::readNext<IdentifierID, llvm::endianness::little>(Data);
595568
return {CtxID, ContextKind, nameID};
596569
}
597570

0 commit comments

Comments
 (0)
Please sign in to comment.