summaryrefslogtreecommitdiff
path: root/docs/MSVCCompatibility.rst
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-07-02 17:26:04 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-07-02 17:26:04 +0000
commitd2aaf2f173d71bf45f6370357ac02c783cae6e17 (patch)
treec686ffb11e90a34f204a628e85c9bb420bb41f84 /docs/MSVCCompatibility.rst
parent3cb5e19adf10673769111bae06cdb0b27b5a46cb (diff)
downloadclang-d2aaf2f173d71bf45f6370357ac02c783cae6e17.tar.gz
Update the MSVC Compatibility document
It hasn't been updated to reflect the progress we've made. We've fuzz tested VFTables, VBTables, layout, and RTTI data. We support lambdas that are compatible with their scheme. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212193 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/MSVCCompatibility.rst')
-rw-r--r--docs/MSVCCompatibility.rst26
1 files changed, 12 insertions, 14 deletions
diff --git a/docs/MSVCCompatibility.rst b/docs/MSVCCompatibility.rst
index 683ce937b4..2a7f7b15bc 100644
--- a/docs/MSVCCompatibility.rst
+++ b/docs/MSVCCompatibility.rst
@@ -43,14 +43,14 @@ ABI features
The status of major ABI-impacting C++ features:
-* Record layout: :good:`Mostly complete`. We've tested this with a fuzzer, and
- most of the remaining failures involve ``#pragma pack``,
- ``__declspec(align(N))``, or other pragmas.
+* Record layout: :good:`Complete`. We've tested this with a fuzzer and have
+ fixed all known bugs.
* Class inheritance: :good:`Mostly complete`. This covers all of the standard
OO features you would expect: virtual method inheritance, multiple
inheritance, and virtual inheritance. Every so often we uncover a bug where
- our tables are incompatible, but this is pretty well in hand.
+ our tables are incompatible, but this is pretty well in hand. This feature
+ has also been fuzz tested.
* Name mangling: :good:`Ongoing`. Every new C++ feature generally needs its own
mangling. For example, member pointer template arguments have an interesting
@@ -78,23 +78,21 @@ The status of major ABI-impacting C++ features:
enabling stack traces in all modern Windows debuggers. Clang does not emit
any type info or description of variable layout.
-* `RTTI`_: :none:`Unstarted`. See the bug for a discussion of what needs to
- happen first.
-
-.. _RTTI: http://llvm.org/PR18951
+* `RTTI`_: :good:`Complete`. Generation of RTTI data structures has been
+ finished, along with support for the ``/GR`` flag.
* Exceptions and SEH: :none:`Unstarted`. Clang can parse both constructs, but
does not know how to emit compatible handlers. This depends on RTTI.
* Thread-safe initialization of local statics: :none:`Unstarted`. We are ABI
- compatible with MSVC 2012, which does not support thread-safe local statics.
- MSVC 2013 changed the ABI to make initialization of local statics thread safe,
+ 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.
-* Lambdas in ABI boundaries: :none:`Infeasible`. It is unlikely that we will
- ever be fully ABI compatible with lambdas declared in inline functions due to
- what appears to be a hash code in the name mangling. Lambdas that are not
- externally visible should work fine.
+* Lambdas: :none:`Mostly complete`. Clang is compatible with Microsoft's
+ implementation of lambdas except for providing overloads for conversion to
+ function pointer for different calling conventions. However, Microsoft's
+ extension is non-conforming.
Template instantiation and name lookup
======================================