diff --git a/llvm/include/llvm/Support/Endian.h b/llvm/include/llvm/Support/Endian.h index d407ed1127671..9bfe46022859c 100644 --- a/llvm/include/llvm/Support/Endian.h +++ b/llvm/include/llvm/Support/Endian.h @@ -24,7 +24,11 @@ namespace llvm { namespace support { -enum endianness {big, little, native}; +enum endianness { + big, + little, + native = llvm::sys::IsBigEndianHost ? big : little +}; // These are named values for common alignments. enum {aligned = 0, unaligned = 1}; @@ -47,7 +51,7 @@ constexpr endianness system_endianness() { template [[nodiscard]] inline value_type byte_swap(value_type value, endianness endian) { - if ((endian != native) && (endian != system_endianness())) + if (endian != native) sys::swapByteOrder(value); return value; } diff --git a/llvm/include/llvm/Support/HashBuilder.h b/llvm/include/llvm/Support/HashBuilder.h index 04a7b2e7dc8ab..c3fa011b6aa7e 100644 --- a/llvm/include/llvm/Support/HashBuilder.h +++ b/llvm/include/llvm/Support/HashBuilder.h @@ -86,15 +86,8 @@ template class HashBuilderBase { }; /// Implementation of the `HashBuilder` interface. -/// -/// `support::endianness::native` is not supported. `HashBuilder` is -/// expected to canonicalize `support::endianness::native` to one of -/// `support::endianness::big` or `support::endianness::little`. template class HashBuilderImpl : public HashBuilderBase { - static_assert(Endianness != support::endianness::native, - "HashBuilder should canonicalize endianness"); - public: explicit HashBuilderImpl(HasherT &Hasher) : HashBuilderBase(Hasher) {} @@ -395,10 +388,7 @@ class HashBuilderImpl : public HashBuilderBase { /// Specifiying a non-`native` `Endianness` template parameter allows to compute /// stable hash across platforms with different endianness. template -using HashBuilder = - HashBuilderImpl; +using HashBuilder = HashBuilderImpl; namespace hashbuilder_detail { class HashCodeHasher { diff --git a/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp b/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp index 37ced88169b0a..124955236cf96 100644 --- a/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp +++ b/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp @@ -306,7 +306,6 @@ void writeImmediate(WritableArmRelocation &R, uint32_t Imm) { Expected readAddendData(LinkGraph &G, Block &B, const Edge &E) { support::endianness Endian = G.getEndianness(); - assert(Endian != support::native && "Declare as little or big explicitly"); Edge::Kind Kind = E.getKind(); const char *BlockWorkingMem = B.getContent().data(); @@ -404,7 +403,6 @@ Error applyFixupData(LinkGraph &G, Block &B, const Edge &E) { char *FixupPtr = BlockWorkingMem + E.getOffset(); auto Write32 = [FixupPtr, Endian = G.getEndianness()](int64_t Value) { - assert(Endian != native && "Must be explicit: little or big"); assert(isInt<32>(Value) && "Must be in signed 32-bit range"); uint32_t Imm = static_cast(Value); if (LLVM_LIKELY(Endian == little))