[libcxxabi] r253435 - c++abi: use __builtin_offsetof instead of offsetof

Saleem Abdulrasool via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 17 21:33:38 PST 2015


Author: compnerd
Date: Tue Nov 17 23:33:38 2015
New Revision: 253435

URL: http://llvm.org/viewvc/llvm-project?rev=253435&view=rev
Log:
c++abi: use __builtin_offsetof instead of offsetof

Use `__builtin_offsetof` in place of `offsetof`.  Certain environments provide a
macro definition of `offsetof` which may end up causing issues.  This was
observed on Windows.  Use `__builtin_offsetof` to ensure correct evaluation
everywhere.  NFC.

Modified:
    libcxxabi/trunk/src/cxa_exception.cpp

Modified: libcxxabi/trunk/src/cxa_exception.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/src/cxa_exception.cpp?rev=253435&r1=253434&r2=253435&view=diff
==============================================================================
--- libcxxabi/trunk/src/cxa_exception.cpp (original)
+++ libcxxabi/trunk/src/cxa_exception.cpp Tue Nov 17 23:33:38 2015
@@ -448,14 +448,15 @@ void __cxa_end_catch()
   static_assert(sizeof(__cxa_exception) == sizeof(__cxa_dependent_exception),
                 "sizeof(__cxa_exception) must be equal to "
                 "sizeof(__cxa_dependent_exception)");
-    static_assert(offsetof(__cxa_exception, referenceCount) ==
-                      offsetof(__cxa_dependent_exception, primaryException),
-                  "the layout of __cxa_exception must match the layout of "
-                  "__cxa_dependent_exception");
-    static_assert(offsetof(__cxa_exception, handlerCount) ==
-                      offsetof(__cxa_dependent_exception, handlerCount),
-                  "the layout of __cxa_exception must match the layout of "
-                  "__cxa_dependent_exception");
+  static_assert(__builtin_offsetof(__cxa_exception, referenceCount) ==
+                    __builtin_offsetof(__cxa_dependent_exception,
+                                       primaryException),
+                "the layout of __cxa_exception must match the layout of "
+                "__cxa_dependent_exception");
+  static_assert(__builtin_offsetof(__cxa_exception, handlerCount) ==
+                    __builtin_offsetof(__cxa_dependent_exception, handlerCount),
+                "the layout of __cxa_exception must match the layout of "
+                "__cxa_dependent_exception");
     __cxa_eh_globals* globals = __cxa_get_globals_fast(); // __cxa_get_globals called in __cxa_begin_catch
     __cxa_exception* exception_header = globals->caughtExceptions;
     // If we've rethrown a foreign exception, then globals->caughtExceptions




More information about the cfe-commits mailing list