diff --git a/llvm/tools/llvm-rc/ResourceFileWriter.cpp b/llvm/tools/llvm-rc/ResourceFileWriter.cpp
index 3d72e16..1a9f4eb 100644
--- a/llvm/tools/llvm-rc/ResourceFileWriter.cpp
+++ b/llvm/tools/llvm-rc/ResourceFileWriter.cpp
@@ -166,9 +166,7 @@
       }
     }
 
-    // Make sure to write little-endian strings, regardless of the host
-    // byte-order.
-    Result.push_back(endian::byte_swap(Char, little));
+    Result.push_back(Char);
     return Error::success();
   };
 
@@ -1131,7 +1129,7 @@
 Error ResourceFileWriter::writeMenuBody(const RCResource *Base) {
   // At first, MENUHEADER structure. In fact, these are two WORDs equal to 0.
   // Ref: msdn.microsoft.com/en-us/library/windows/desktop/ms648018.aspx
-  writeObject<uint32_t>(0);
+  writeInt<uint32_t>(0);
 
   return writeMenuDefinitionList(cast<MenuResource>(Base)->Elements);
 }
@@ -1250,9 +1248,9 @@
   uint64_t LengthLoc;
 
   if (OutputHeader) {
-    LengthLoc = writeObject<uint16_t>(0);
-    writeObject<uint16_t>(0);
-    writeObject<uint16_t>(true);
+    LengthLoc = writeInt<uint16_t>(0);
+    writeInt<uint16_t>(0);
+    writeInt<uint16_t>(1); // true
     RETURN_IF_ERROR(writeCString(Blk.Name));
     padStream(sizeof(uint32_t));
   }
@@ -1304,9 +1302,9 @@
     return createError(Twine("VALUE ") + Val.Key +
                        " cannot contain both strings and integers");
 
-  auto LengthLoc = writeObject<uint16_t>(0);
-  auto ValLengthLoc = writeObject<uint16_t>(0);
-  writeObject<uint16_t>(HasStrings);
+  auto LengthLoc = writeInt<uint16_t>(0);
+  auto ValLengthLoc = writeInt<uint16_t>(0);
+  writeInt<uint16_t>(HasStrings);
   RETURN_IF_ERROR(writeCString(Val.Key));
   padStream(sizeof(uint32_t));
 
