[llvm] [nfc][InstrProf]Remove 'offsetOf' when parsing indexed profiles (PR #93346)
Kazu Hirata via llvm-commits
llvm-commits at lists.llvm.org
Wed May 29 15:30:08 PDT 2024
================
@@ -1627,66 +1627,46 @@ void OverlapStats::dump(raw_fd_ostream &OS) const {
}
namespace IndexedInstrProf {
-// A C++14 compatible version of the offsetof macro.
-template <typename T1, typename T2>
-inline size_t constexpr offsetOf(T1 T2::*Member) {
- constexpr T2 Object{};
- 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) {
- using namespace ::support;
- return endian::read<uint64_t, llvm::endianness::little, unaligned>(Buffer +
- Offset);
-}
-
Expected<Header> Header::readFromBuffer(const unsigned char *Buffer) {
using namespace support;
static_assert(std::is_standard_layout_v<Header>,
- "The header should be standard layout type since we use offset "
- "of fields to read.");
+ "Use standard layout for Header for simplicity");
Header H;
- H.Magic = read(Buffer, offsetOf(&Header::Magic));
+ H.Magic =
+ endian::readNext<uint64_t, llvm::endianness::little, unaligned>(Buffer);
----------------
kazutakahirata wrote:
I've made `unaligned` a default parameter a while ago. May I suggest the following?
```suggestion
endian::readNext<uint64_t, llvm::endianness::little>(Buffer);
```
The same applies to other calls to `readNext`.
https://github.com/llvm/llvm-project/pull/93346
More information about the llvm-commits
mailing list