Author: majnemer Date: Thu Feb 18 02:15:05 2016 New Revision: 261195 URL: http://llvm.org/viewvc/llvm-project?rev=261195&view=rev Log: [MSVC] Turn C++ EH on my default
Our support for C++ EH is sufficiently good that it makes sense to enable support for it out of the box. While we are here, update the MSVCCompatibility doc. Modified: cfe/trunk/docs/MSVCCompatibility.rst cfe/trunk/lib/Driver/Tools.cpp Modified: cfe/trunk/docs/MSVCCompatibility.rst URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/MSVCCompatibility.rst?rev=261195&r1=261194&r2=261195&view=diff ============================================================================== --- cfe/trunk/docs/MSVCCompatibility.rst (original) +++ cfe/trunk/docs/MSVCCompatibility.rst Thu Feb 18 02:15:05 2016 @@ -84,18 +84,23 @@ The status of major ABI-impacting C++ fe * RTTI: :good:`Complete`. Generation of RTTI data structures has been finished, along with support for the ``/GR`` flag. -* 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++ Exceptions: :good:`Mostly complete`. Support for + C++ exceptions (``try`` / ``catch`` / ``throw``) have been implemented for + x86 and x64. Our implementation has been well tested but we still get the + odd bug report now and again. C++ exception specifications are ignored, but this is `consistent with Visual C++`_. .. _consistent with Visual C++: https://msdn.microsoft.com/en-us/library/wfa0edys.aspx +* Asynchronous Exceptions (SEH): :partial:`Partial`. + Structured exceptions (``__try`` / ``__except`` / ``__finally``) mostly + work on x86 and x64. + 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``. + * Thread-safe initialization of local statics: :good:`Complete`. MSVC 2015 added support for thread-safe initialization of such variables by taking an ABI break. Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=261195&r1=261194&r2=261195&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Thu Feb 18 02:15:05 2016 @@ -2410,11 +2410,9 @@ static void addExceptionArgs(const ArgLi } if (types::isCXX(InputType)) { - // Disable C++ EH by default on XCore, PS4, and MSVC. - // FIXME: Remove MSVC from this list once things work. - bool CXXExceptionsEnabled = Triple.getArch() != llvm::Triple::xcore && - !Triple.isPS4CPU() && - !Triple.isWindowsMSVCEnvironment(); + // Disable C++ EH by default on XCore and PS4. + bool CXXExceptionsEnabled = + Triple.getArch() != llvm::Triple::xcore && !Triple.isPS4CPU(); Arg *ExceptionArg = Args.getLastArg( options::OPT_fcxx_exceptions, options::OPT_fno_cxx_exceptions, options::OPT_fexceptions, options::OPT_fno_exceptions); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits