[llvm] r206445 - MC: rework static_assert to be MSVC compatible

Saleem Abdulrasool compnerd at compnerd.org
Wed Apr 16 23:17:21 PDT 2014


Author: compnerd
Date: Thu Apr 17 01:17:20 2014
New Revision: 206445

URL: http://llvm.org/viewvc/llvm-project?rev=206445&view=rev
Log:
MC: rework static_assert to be MSVC compatible

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.

Modified:
    llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp

Modified: llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp?rev=206445&r1=206444&r2=206445&view=diff
==============================================================================
--- llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp Thu Apr 17 01:17:20 2014
@@ -632,10 +632,8 @@ void WinCOFFObjectWriter::ExecutePostLay
                                                    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) {





More information about the llvm-commits mailing list