[llvm] r271942 - [yaml2obj] Get rid of MachO header union

Chris Bieneman via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 6 14:18:43 PDT 2016


Author: cbieneman
Date: Mon Jun  6 16:18:43 2016
New Revision: 271942

URL: http://llvm.org/viewvc/llvm-project?rev=271942&view=rev
Log:
[yaml2obj] Get rid of MachO header union

This is based on post-commit feedback from Sean Silva.

Modified:
    llvm/trunk/tools/yaml2obj/yaml2macho.cpp

Modified: llvm/trunk/tools/yaml2obj/yaml2macho.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2macho.cpp?rev=271942&r1=271941&r2=271942&view=diff
==============================================================================
--- llvm/trunk/tools/yaml2obj/yaml2macho.cpp (original)
+++ llvm/trunk/tools/yaml2obj/yaml2macho.cpp Mon Jun  6 16:18:43 2016
@@ -31,8 +31,7 @@ public:
   MachOWriter(MachOYAML::Object &Obj) : Obj(Obj), is64Bit(true), fileStart(0) {
     is64Bit = Obj.Header.magic == MachO::MH_MAGIC_64 ||
               Obj.Header.magic == MachO::MH_CIGAM_64;
-    memset(reinterpret_cast<void *>(&Header64), 0,
-           sizeof(MachO::mach_header_64));
+    memset(reinterpret_cast<void *>(&Header), 0, sizeof(MachO::mach_header_64));
     assert((is64Bit || Obj.Header.reserved == 0xDEADBEEFu) &&
            "32-bit MachO has reserved in header");
     assert((!is64Bit || Obj.Header.reserved != 0xDEADBEEFu) &&
@@ -64,10 +63,7 @@ private:
   bool is64Bit;
   uint64_t fileStart;
 
-  union {
-    MachO::mach_header_64 Header64;
-    MachO::mach_header Header;
-  };
+  MachO::mach_header_64 Header;
 };
 
 Error MachOWriter::writeMachO(raw_ostream &OS) {
@@ -89,12 +85,11 @@ Error MachOWriter::writeHeader(raw_ostre
   Header.ncmds = Obj.Header.ncmds;
   Header.sizeofcmds = Obj.Header.sizeofcmds;
   Header.flags = Obj.Header.flags;
-  Header64.reserved = Obj.Header.reserved;
+  Header.reserved = Obj.Header.reserved;
 
-  if (is64Bit)
-    OS.write((const char *)&Header64, sizeof(MachO::mach_header_64));
-  else
-    OS.write((const char *)&Header, sizeof(MachO::mach_header));
+  auto header_size =
+      is64Bit ? sizeof(MachO::mach_header_64) : sizeof(MachO::mach_header);
+  OS.write((const char *)&Header, header_size);
 
   return Error::success();
 }




More information about the llvm-commits mailing list