Mercurial > hg > CbC > CbC_llvm
diff tools/clang/docs/MSVCCompatibility.rst @ 95:afa8332a0e37 LLVM3.8
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | 60c9769439b8 |
children | 1172e4bd9c6f |
line wrap: on
line diff
--- a/tools/clang/docs/MSVCCompatibility.rst Wed Feb 18 14:56:07 2015 +0900 +++ b/tools/clang/docs/MSVCCompatibility.rst Tue Oct 13 17:48:58 2015 +0900 @@ -84,14 +84,23 @@ * RTTI: :good:`Complete`. Generation of RTTI data structures has been finished, along with support for the ``/GR`` flag. -* Exceptions and SEH: :partial:`Minimal`. Clang can parse both constructs, but - does not know how to emit compatible handlers. Clang cannot throw exceptions - but it can rethrow them. +* Exceptions and SEH: :partial:`Partial`. + C++ exceptions (``try`` / ``catch`` / ``throw``) and + structured exceptions (``__try`` / ``__except`` / ``__finally``) mostly + work on x64. 32-bit exception handling support is being worked on. LLVM does + not model asynchronous exceptions, so it is currently impossible to catch an + asynchronous exception generated in the same frame as the catching ``__try``. + C++ exception specifications are ignored, but this is `consistent with Visual + C++`_. -* Thread-safe initialization of local statics: :none:`Unstarted`. We are ABI - compatible with MSVC 2013, which does not support thread-safe local statics. - MSVC "14" changed the ABI to make initialization of local statics thread safe, - and we have not yet implemented this. +.. _consistent with Visual C++: + https://msdn.microsoft.com/en-us/library/wfa0edys.aspx + +* Thread-safe initialization of local statics: :good:`Complete`. MSVC 2015 + added support for thread-safe initialization of such variables by taking an + ABI break. + We are ABI compatible with both the MSVC 2013 and 2015 ABI for static local + variables. * Lambdas: :good:`Mostly complete`. Clang is compatible with Microsoft's implementation of lambdas except for providing overloads for conversion to @@ -112,7 +121,7 @@ controlled by the ``-fdelayed-template-parsing`` flag. While Clang delays parsing of method bodies, it still parses the bodies *before* template argument substitution, which is not what MSVC does. The following compatibility tweaks -are necessary to parse the the template in those cases. +are necessary to parse the template in those cases. MSVC allows some name lookup into dependent base classes. Even on other platforms, this has been a `frequently asked question`_ for Clang users. A