[llvm] [llvm] Drop unaligned from calls to readNext (NFC) (PR #88841)
Kazu Hirata via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 15 21:10:30 PDT 2024
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/88841
Now readNext defaults to unaligned accesses. This patch drops
unaligned to improve readability.
>From 874c39c83e38e4366575546ba7eab352174d5fcd Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Mon, 15 Apr 2024 09:41:29 -0700
Subject: [PATCH] [llvm] Drop unaligned from calls to readNext (NFC)
Now readNext defaults to unaligned accesses. This patch drops
unaligned to improve readability.
---
.../llvm/ProfileData/InstrProfReader.h | 4 +-
llvm/include/llvm/ProfileData/MemProf.h | 25 ++++-----
llvm/lib/MC/MCPseudoProbe.cpp | 2 +-
llvm/lib/ProfileData/InstrProf.cpp | 4 +-
llvm/lib/ProfileData/InstrProfReader.cpp | 53 +++++++------------
llvm/lib/ProfileData/MemProf.cpp | 25 +++++----
llvm/lib/ProfileData/MemProfReader.cpp | 14 ++---
llvm/lib/ProfileData/SampleProfReader.cpp | 2 +-
8 files changed, 55 insertions(+), 74 deletions(-)
diff --git a/llvm/include/llvm/ProfileData/InstrProfReader.h b/llvm/include/llvm/ProfileData/InstrProfReader.h
index e46570af3873f9..f662febb9216bb 100644
--- a/llvm/include/llvm/ProfileData/InstrProfReader.h
+++ b/llvm/include/llvm/ProfileData/InstrProfReader.h
@@ -508,9 +508,9 @@ class InstrProfLookupTrait {
using namespace support;
offset_type KeyLen =
- endian::readNext<offset_type, llvm::endianness::little, unaligned>(D);
+ endian::readNext<offset_type, llvm::endianness::little>(D);
offset_type DataLen =
- endian::readNext<offset_type, llvm::endianness::little, unaligned>(D);
+ endian::readNext<offset_type, llvm::endianness::little>(D);
return std::make_pair(KeyLen, DataLen);
}
diff --git a/llvm/include/llvm/ProfileData/MemProf.h b/llvm/include/llvm/ProfileData/MemProf.h
index 0431c182276ec6..92e993693871aa 100644
--- a/llvm/include/llvm/ProfileData/MemProf.h
+++ b/llvm/include/llvm/ProfileData/MemProf.h
@@ -66,7 +66,7 @@ struct PortableMemInfoBlock {
switch (Id) {
#define MIBEntryDef(NameTag, Name, Type) \
case Meta::Name: { \
- Name = endian::readNext<Type, llvm::endianness::little, unaligned>(Ptr); \
+ Name = endian::readNext<Type, llvm::endianness::little>(Ptr); \
} break;
#include "llvm/ProfileData/MIBEntryDef.inc"
#undef MIBEntryDef
@@ -221,13 +221,12 @@ struct Frame {
using namespace support;
const uint64_t F =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
const uint32_t L =
- endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint32_t, llvm::endianness::little>(Ptr);
const uint32_t C =
- endian::readNext<uint32_t, llvm::endianness::little, unaligned>(Ptr);
- const bool I =
- endian::readNext<bool, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint32_t, llvm::endianness::little>(Ptr);
+ const bool I = endian::readNext<bool, llvm::endianness::little>(Ptr);
return Frame(/*Function=*/F, /*LineOffset=*/L, /*Column=*/C,
/*IsInlineFrame=*/I);
}
@@ -474,16 +473,15 @@ class RecordLookupTrait {
using namespace support;
offset_type KeyLen =
- endian::readNext<offset_type, llvm::endianness::little, unaligned>(D);
+ endian::readNext<offset_type, llvm::endianness::little>(D);
offset_type DataLen =
- endian::readNext<offset_type, llvm::endianness::little, unaligned>(D);
+ endian::readNext<offset_type, llvm::endianness::little>(D);
return std::make_pair(KeyLen, DataLen);
}
uint64_t ReadKey(const unsigned char *D, offset_type /*Unused*/) {
using namespace support;
- return endian::readNext<external_key_type, llvm::endianness::little,
- unaligned>(D);
+ return endian::readNext<external_key_type, llvm::endianness::little>(D);
}
data_type ReadData(uint64_t K, const unsigned char *D,
@@ -615,16 +613,15 @@ class FrameLookupTrait {
using namespace support;
offset_type KeyLen =
- endian::readNext<offset_type, llvm::endianness::little, unaligned>(D);
+ endian::readNext<offset_type, llvm::endianness::little>(D);
offset_type DataLen =
- endian::readNext<offset_type, llvm::endianness::little, unaligned>(D);
+ endian::readNext<offset_type, llvm::endianness::little>(D);
return std::make_pair(KeyLen, DataLen);
}
uint64_t ReadKey(const unsigned char *D, offset_type /*Unused*/) {
using namespace support;
- return endian::readNext<external_key_type, llvm::endianness::little,
- unaligned>(D);
+ return endian::readNext<external_key_type, llvm::endianness::little>(D);
}
data_type ReadData(uint64_t K, const unsigned char *D,
diff --git a/llvm/lib/MC/MCPseudoProbe.cpp b/llvm/lib/MC/MCPseudoProbe.cpp
index eb3894dbb3c254..cec50322bb9f90 100644
--- a/llvm/lib/MC/MCPseudoProbe.cpp
+++ b/llvm/lib/MC/MCPseudoProbe.cpp
@@ -343,7 +343,7 @@ template <typename T> ErrorOr<T> MCPseudoProbeDecoder::readUnencodedNumber() {
if (Data + sizeof(T) > End) {
return std::error_code();
}
- T Val = endian::readNext<T, llvm::endianness::little, unaligned>(Data);
+ T Val = endian::readNext<T, llvm::endianness::little>(Data);
return ErrorOr<T>(Val);
}
diff --git a/llvm/lib/ProfileData/InstrProf.cpp b/llvm/lib/ProfileData/InstrProf.cpp
index a5abf63b010f7f..f9ba80bd99c857 100644
--- a/llvm/lib/ProfileData/InstrProf.cpp
+++ b/llvm/lib/ProfileData/InstrProf.cpp
@@ -1135,9 +1135,9 @@ static T swapToHostOrder(const unsigned char *&D, llvm::endianness Orig) {
using namespace support;
if (Orig == llvm::endianness::little)
- return endian::readNext<T, llvm::endianness::little, unaligned>(D);
+ return endian::readNext<T, llvm::endianness::little>(D);
else
- return endian::readNext<T, llvm::endianness::big, unaligned>(D);
+ return endian::readNext<T, llvm::endianness::big>(D);
}
static std::unique_ptr<ValueProfData> allocValueProfData(uint32_t TotalSize) {
diff --git a/llvm/lib/ProfileData/InstrProfReader.cpp b/llvm/lib/ProfileData/InstrProfReader.cpp
index a35366a106a322..8574a96a1b06fc 100644
--- a/llvm/lib/ProfileData/InstrProfReader.cpp
+++ b/llvm/lib/ProfileData/InstrProfReader.cpp
@@ -115,10 +115,9 @@ readBinaryIdsInternal(const MemoryBuffer &DataBuffer,
uint64_t BILen = 0;
if (Endian == llvm::endianness::little)
- BILen =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(BI);
+ BILen = endian::readNext<uint64_t, llvm::endianness::little>(BI);
else
- BILen = endian::readNext<uint64_t, llvm::endianness::big, unaligned>(BI);
+ BILen = endian::readNext<uint64_t, llvm::endianness::big>(BI);
if (BILen == 0)
return make_error<InstrProfError>(instrprof_error::malformed,
@@ -923,8 +922,7 @@ data_type InstrProfLookupTrait::ReadData(StringRef K, const unsigned char *D,
// Read hash.
if (D + sizeof(uint64_t) >= End)
return data_type();
- uint64_t Hash =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(D);
+ uint64_t Hash = endian::readNext<uint64_t, llvm::endianness::little>(D);
// Initialize number of counters for GET_VERSION(FormatVersion) == 1.
uint64_t CountsSize = N / sizeof(uint64_t) - 1;
@@ -932,8 +930,7 @@ data_type InstrProfLookupTrait::ReadData(StringRef K, const unsigned char *D,
if (GET_VERSION(FormatVersion) != IndexedInstrProf::ProfVersion::Version1) {
if (D + sizeof(uint64_t) > End)
return data_type();
- CountsSize =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(D);
+ CountsSize = endian::readNext<uint64_t, llvm::endianness::little>(D);
}
// Read counter values.
if (D + CountsSize * sizeof(uint64_t) > End)
@@ -943,15 +940,14 @@ data_type InstrProfLookupTrait::ReadData(StringRef K, const unsigned char *D,
CounterBuffer.reserve(CountsSize);
for (uint64_t J = 0; J < CountsSize; ++J)
CounterBuffer.push_back(
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(D));
+ endian::readNext<uint64_t, llvm::endianness::little>(D));
// Read bitmap bytes for GET_VERSION(FormatVersion) > 10.
if (GET_VERSION(FormatVersion) > IndexedInstrProf::ProfVersion::Version10) {
uint64_t BitmapBytes = 0;
if (D + sizeof(uint64_t) > End)
return data_type();
- BitmapBytes =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(D);
+ BitmapBytes = endian::readNext<uint64_t, llvm::endianness::little>(D);
// Read bitmap byte values.
if (D + BitmapBytes * sizeof(uint8_t) > End)
return data_type();
@@ -959,8 +955,7 @@ data_type InstrProfLookupTrait::ReadData(StringRef K, const unsigned char *D,
BitmapByteBuffer.reserve(BitmapBytes);
for (uint64_t J = 0; J < BitmapBytes; ++J)
BitmapByteBuffer.push_back(static_cast<uint8_t>(
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(
- D)));
+ endian::readNext<uint64_t, llvm::endianness::little>(D)));
}
DataBuffer.emplace_back(K, Hash, std::move(CounterBuffer),
@@ -1256,8 +1251,7 @@ Error IndexedInstrProfReader::readHeader() {
// memprof::MemProfVersion0 or the MemProf version number in
// memprof::MemProfVersion1.
const uint64_t FirstWord =
- support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
memprof::IndexedVersion Version = memprof::Version0;
if (FirstWord == memprof::Version1) {
@@ -1282,17 +1276,15 @@ Error IndexedInstrProfReader::readHeader() {
const uint64_t RecordTableOffset =
Version == memprof::Version0
? FirstWord
- : support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ : support::endian::readNext<uint64_t, llvm::endianness::little>(
+ Ptr);
// The offset in the stream right before invoking
// FrameTableGenerator.Emit.
const uint64_t FramePayloadOffset =
- support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
// The value returned from FrameTableGenerator.Emit.
const uint64_t FrameTableOffset =
- support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
// Read the schema.
auto SchemaOr = memprof::readMemProfSchema(Ptr);
@@ -1330,8 +1322,7 @@ Error IndexedInstrProfReader::readHeader() {
const unsigned char *Ptr = Start + BinaryIdOffset;
// Read binary ids size.
BinaryIdsSize =
- support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
if (BinaryIdsSize % sizeof(uint64_t))
return error(instrprof_error::bad_header);
// Set the binary ids start.
@@ -1348,8 +1339,7 @@ Error IndexedInstrProfReader::readHeader() {
const unsigned char *Ptr = Start + VTableNamesOffset;
CompressedVTableNamesLen =
- support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
// Writer first writes the length of compressed string, and then the actual
// content.
@@ -1369,29 +1359,24 @@ Error IndexedInstrProfReader::readHeader() {
if (Ptr + 2 * sizeof(uint64_t) > PtrEnd)
return error(instrprof_error::truncated);
const uint64_t NumTraces =
- support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
TemporalProfTraceStreamSize =
- support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
for (unsigned i = 0; i < NumTraces; i++) {
// Expect at least two 64 bit fields: Weight and NumFunctions
if (Ptr + 2 * sizeof(uint64_t) > PtrEnd)
return error(instrprof_error::truncated);
TemporalProfTraceTy Trace;
Trace.Weight =
- support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
const uint64_t NumFunctions =
- support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
// Expect at least NumFunctions 64 bit fields
if (Ptr + NumFunctions * sizeof(uint64_t) > PtrEnd)
return error(instrprof_error::truncated);
for (unsigned j = 0; j < NumFunctions; j++) {
const uint64_t NameRef =
- support::endian::readNext<uint64_t, llvm::endianness::little,
- unaligned>(Ptr);
+ support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
Trace.FunctionNameRefs.push_back(NameRef);
}
TemporalProfTraces.push_back(std::move(Trace));
diff --git a/llvm/lib/ProfileData/MemProf.cpp b/llvm/lib/ProfileData/MemProf.cpp
index 97414505f1c134..0ac29f51f85826 100644
--- a/llvm/lib/ProfileData/MemProf.cpp
+++ b/llvm/lib/ProfileData/MemProf.cpp
@@ -144,14 +144,14 @@ static IndexedMemProfRecord deserializeV0(const MemProfSchema &Schema,
// Read the meminfo nodes.
const uint64_t NumNodes =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
for (uint64_t I = 0; I < NumNodes; I++) {
IndexedAllocationInfo Node;
const uint64_t NumFrames =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
for (uint64_t J = 0; J < NumFrames; J++) {
const FrameId Id =
- endian::readNext<FrameId, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<FrameId, llvm::endianness::little>(Ptr);
Node.CallStack.push_back(Id);
}
Node.CSId = hashCallStack(Node.CallStack);
@@ -162,15 +162,15 @@ static IndexedMemProfRecord deserializeV0(const MemProfSchema &Schema,
// Read the callsite information.
const uint64_t NumCtxs =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
for (uint64_t J = 0; J < NumCtxs; J++) {
const uint64_t NumFrames =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
llvm::SmallVector<FrameId> Frames;
Frames.reserve(NumFrames);
for (uint64_t K = 0; K < NumFrames; K++) {
const FrameId Id =
- endian::readNext<FrameId, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<FrameId, llvm::endianness::little>(Ptr);
Frames.push_back(Id);
}
Record.CallSites.push_back(Frames);
@@ -188,11 +188,10 @@ static IndexedMemProfRecord deserializeV2(const MemProfSchema &Schema,
// Read the meminfo nodes.
const uint64_t NumNodes =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
for (uint64_t I = 0; I < NumNodes; I++) {
IndexedAllocationInfo Node;
- Node.CSId =
- endian::readNext<CallStackId, llvm::endianness::little, unaligned>(Ptr);
+ Node.CSId = endian::readNext<CallStackId, llvm::endianness::little>(Ptr);
Node.Info.deserialize(Schema, Ptr);
Ptr += PortableMemInfoBlock::serializedSize();
Record.AllocSites.push_back(Node);
@@ -200,10 +199,10 @@ static IndexedMemProfRecord deserializeV2(const MemProfSchema &Schema,
// Read the callsite information.
const uint64_t NumCtxs =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
for (uint64_t J = 0; J < NumCtxs; J++) {
CallStackId CSId =
- endian::readNext<CallStackId, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<CallStackId, llvm::endianness::little>(Ptr);
Record.CallSiteIds.push_back(CSId);
}
@@ -245,7 +244,7 @@ Expected<MemProfSchema> readMemProfSchema(const unsigned char *&Buffer) {
const unsigned char *Ptr = Buffer;
const uint64_t NumSchemaIds =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
if (NumSchemaIds > static_cast<uint64_t>(Meta::Size)) {
return make_error<InstrProfError>(instrprof_error::malformed,
"memprof schema invalid");
@@ -254,7 +253,7 @@ Expected<MemProfSchema> readMemProfSchema(const unsigned char *&Buffer) {
MemProfSchema Result;
for (size_t I = 0; I < NumSchemaIds; I++) {
const uint64_t Tag =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
if (Tag >= static_cast<uint64_t>(Meta::Size)) {
return make_error<InstrProfError>(instrprof_error::malformed,
"memprof schema invalid");
diff --git a/llvm/lib/ProfileData/MemProfReader.cpp b/llvm/lib/ProfileData/MemProfReader.cpp
index 580867a9083fde..caffbc971e1213 100644
--- a/llvm/lib/ProfileData/MemProfReader.cpp
+++ b/llvm/lib/ProfileData/MemProfReader.cpp
@@ -86,7 +86,7 @@ llvm::SmallVector<SegmentEntry> readSegmentEntries(const char *Ptr) {
using namespace support;
const uint64_t NumItemsToRead =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
llvm::SmallVector<SegmentEntry> Items;
for (uint64_t I = 0; I < NumItemsToRead; I++) {
Items.push_back(*reinterpret_cast<const SegmentEntry *>(
@@ -100,11 +100,11 @@ readMemInfoBlocks(const char *Ptr) {
using namespace support;
const uint64_t NumItemsToRead =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
llvm::SmallVector<std::pair<uint64_t, MemInfoBlock>> Items;
for (uint64_t I = 0; I < NumItemsToRead; I++) {
const uint64_t Id =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
const MemInfoBlock MIB = *reinterpret_cast<const MemInfoBlock *>(Ptr);
Items.push_back({Id, MIB});
// Only increment by size of MIB since readNext implicitly increments.
@@ -117,20 +117,20 @@ CallStackMap readStackInfo(const char *Ptr) {
using namespace support;
const uint64_t NumItemsToRead =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
CallStackMap Items;
for (uint64_t I = 0; I < NumItemsToRead; I++) {
const uint64_t StackId =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
const uint64_t NumPCs =
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr);
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
SmallVector<uint64_t> CallStack;
CallStack.reserve(NumPCs);
for (uint64_t J = 0; J < NumPCs; J++) {
CallStack.push_back(
- endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Ptr));
+ endian::readNext<uint64_t, llvm::endianness::little>(Ptr));
}
Items[StackId] = CallStack;
diff --git a/llvm/lib/ProfileData/SampleProfReader.cpp b/llvm/lib/ProfileData/SampleProfReader.cpp
index 98d0aa794529c5..f91a0e6177ea02 100644
--- a/llvm/lib/ProfileData/SampleProfReader.cpp
+++ b/llvm/lib/ProfileData/SampleProfReader.cpp
@@ -503,7 +503,7 @@ ErrorOr<T> SampleProfileReaderBinary::readUnencodedNumber() {
}
using namespace support;
- T Val = endian::readNext<T, llvm::endianness::little, unaligned>(Data);
+ T Val = endian::readNext<T, llvm::endianness::little>(Data);
return Val;
}
More information about the llvm-commits
mailing list