MC: rework static_assert to be MSVC compatible
authorSaleem Abdulrasool <compnerd@compnerd.org>
Thu, 17 Apr 2014 06:17:20 +0000 (06:17 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Thu, 17 Apr 2014 06:17:20 +0000 (06:17 +0000)
Visual Studio does not permit referencing a structure member as a static field
for sizeof calculations.  Resort to a pointer cast which is compatible across
Visual Studio and other compilers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206445 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/WinCOFFObjectWriter.cpp

index 8e5377980d7443bdca8be498f7abf86fd3c047da..cb02fdedec3e12afe07881d35b51dd2910ced7a0 100644 (file)
@@ -632,10 +632,8 @@ void WinCOFFObjectWriter::ExecutePostLayoutBinding(MCAssembler &Asm,
                                                    const MCAsmLayout &Layout) {
   // "Define" each section & symbol. This creates section & symbol
   // entries in the staging area.
-  // FIXME: this used to be
-  //   sizeof(COFF::AuxiliaryFile::FileName) == COFF::SymbolSize
-  // but VS2013 can't compile that.
-  static_assert(sizeof(COFF::AuxiliaryFile) == COFF::SymbolSize,
+
+  static_assert(sizeof(((COFF::AuxiliaryFile *)0)->FileName) == COFF::SymbolSize,
                 "size mismatch for COFF::AuxiliaryFile::FileName");
   for (auto FI = Asm.file_names_begin(), FE = Asm.file_names_end();
        FI != FE; ++FI) {