Skip to content

Commit 152d0f5

Browse files
[Support] Deprecate one form of support::endian::write (NFC) (#156140)
We have two forms of write: template <typename value_type, std::size_t alignment = unaligned> inline void write(void *memory, value_type value, endianness endian) template <typename value_type, endianness endian, std::size_t alignment> inline void write(void *memory, value_type value) The difference is that endian is a function parameter in the former but a template parameter in the latter. This patch streamlines the code by migrating the use of the latter to the former while deprecating the latter. I'm planning to do the same for byte_swap and read in follow-up patches to keep this patch simple and small.
1 parent 3a2c8f7 commit 152d0f5

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

llvm/include/llvm/Support/Endian.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,8 @@ inline void write(void *memory, value_type value, endianness endian) {
9696
&value, sizeof(value_type));
9797
}
9898

99-
template<typename value_type,
100-
endianness endian,
101-
std::size_t alignment>
99+
template <typename value_type, endianness endian, std::size_t alignment>
100+
LLVM_DEPRECATED("Pass endian as a function argument instead", "write")
102101
inline void write(void *memory, value_type value) {
103102
write<value_type, alignment>(memory, value, endian);
104103
}
@@ -163,7 +162,7 @@ inline void writeAtBitAlignment(void *memory, value_type value,
163162
uint64_t startBit) {
164163
assert(startBit < 8);
165164
if (startBit == 0)
166-
write<value_type, endian, alignment>(memory, value);
165+
write<value_type, alignment>(memory, value, endian);
167166
else {
168167
// Read two values and shift the result into them.
169168
value_type val[2];
@@ -230,8 +229,8 @@ struct packed_endian_specific_integral {
230229
operator value_type() const { return value(); }
231230

232231
void operator=(value_type newValue) {
233-
endian::write<value_type, endian, alignment>(
234-
(void*)Value.buffer, newValue);
232+
endian::write<value_type, alignment>((void *)Value.buffer, newValue,
233+
endian);
235234
}
236235

237236
packed_endian_specific_integral &operator+=(value_type newValue) {
@@ -268,7 +267,7 @@ struct packed_endian_specific_integral {
268267
}
269268

270269
void operator=(value_type NewValue) {
271-
endian::write<value_type, endian, alignment>(Ptr, NewValue);
270+
endian::write<value_type, alignment>(Ptr, NewValue, endian);
272271
}
273272

274273
private:

llvm/lib/ObjectYAML/GOFFEmitter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ template <typename ValueType> struct BinaryBeImpl {
3838
template <typename ValueType>
3939
raw_ostream &operator<<(raw_ostream &OS, const BinaryBeImpl<ValueType> &BBE) {
4040
char Buffer[sizeof(BBE.Value)];
41-
support::endian::write<ValueType, llvm::endianness::big, support::unaligned>(
42-
Buffer, BBE.Value);
41+
support::endian::write<ValueType, support::unaligned>(Buffer, BBE.Value,
42+
llvm::endianness::big);
4343
OS.write(Buffer, sizeof(BBE.Value));
4444
return OS;
4545
}

llvm/unittests/Support/EndianTest.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -201,26 +201,26 @@ TEST(Endian, WriteBitAligned) {
201201

202202
TEST(Endian, Write) {
203203
unsigned char data[5];
204-
endian::write<int32_t, llvm::endianness::big, unaligned>(data, -1362446643);
204+
endian::write<int32_t, unaligned>(data, -1362446643, llvm::endianness::big);
205205
EXPECT_EQ(data[0], 0xAE);
206206
EXPECT_EQ(data[1], 0xCA);
207207
EXPECT_EQ(data[2], 0xB6);
208208
EXPECT_EQ(data[3], 0xCD);
209-
endian::write<int32_t, llvm::endianness::big, unaligned>(data + 1,
210-
-1362446643);
209+
endian::write<int32_t, unaligned>(data + 1, -1362446643,
210+
llvm::endianness::big);
211211
EXPECT_EQ(data[1], 0xAE);
212212
EXPECT_EQ(data[2], 0xCA);
213213
EXPECT_EQ(data[3], 0xB6);
214214
EXPECT_EQ(data[4], 0xCD);
215215

216-
endian::write<int32_t, llvm::endianness::little, unaligned>(data,
217-
-1362446643);
216+
endian::write<int32_t, unaligned>(data, -1362446643,
217+
llvm::endianness::little);
218218
EXPECT_EQ(data[0], 0xCD);
219219
EXPECT_EQ(data[1], 0xB6);
220220
EXPECT_EQ(data[2], 0xCA);
221221
EXPECT_EQ(data[3], 0xAE);
222-
endian::write<int32_t, llvm::endianness::little, unaligned>(data + 1,
223-
-1362446643);
222+
endian::write<int32_t, unaligned>(data + 1, -1362446643,
223+
llvm::endianness::little);
224224
EXPECT_EQ(data[1], 0xCD);
225225
EXPECT_EQ(data[2], 0xB6);
226226
EXPECT_EQ(data[3], 0xCA);

0 commit comments

Comments
 (0)