[llvm] [nfc][InstrProfReader]Store header fields in native endianness (PR #92947)

Kazu Hirata via llvm-commits llvm-commits at lists.llvm.org
Tue May 21 12:41:48 PDT 2024


================
@@ -1620,13 +1620,12 @@ inline size_t constexpr offsetOf(T1 T2::*Member) {
   return size_t(&(Object.*Member)) - size_t(&Object);
 }
 
+// Read a uint64_t from the specified buffer offset, and swap the bytes in
+// native endianness if necessary.
 static inline uint64_t read(const unsigned char *Buffer, size_t Offset) {
-  return *reinterpret_cast<const uint64_t *>(Buffer + Offset);
-}
-
-uint64_t Header::formatVersion() const {
-  using namespace support;
-  return endian::byte_swap<uint64_t, llvm::endianness::little>(Version);
+  using namespace ::support;
+  uint64_t Data = *reinterpret_cast<const uint64_t *>(Buffer + Offset);
+  return endian::byte_swap<uint64_t, llvm::endianness::little>(Data);
----------------
kazutakahirata wrote:

May I suggest combining the read access and `byte_swap`?

```suggestion
  return endian::read<uint64_t, llvm::endianness::little, unaligned>(Buffer + Offset);
```

https://github.com/llvm/llvm-project/pull/92947


More information about the llvm-commits mailing list