@@ -43,14 +43,14 @@ ABI features
43
43
44
44
The status of major ABI-impacting C++ features:
45
45
46
- * Record layout: :good: `Mostly complete `. We've tested this with a fuzzer, and
47
- most of the remaining failures involve ``#pragma pack ``,
48
- ``__declspec(align(N)) ``, or other pragmas.
46
+ * Record layout: :good: `Complete `. We've tested this with a fuzzer and have
47
+ fixed all known bugs.
49
48
50
49
* Class inheritance: :good: `Mostly complete `. This covers all of the standard
51
50
OO features you would expect: virtual method inheritance, multiple
52
51
inheritance, and virtual inheritance. Every so often we uncover a bug where
53
- our tables are incompatible, but this is pretty well in hand.
52
+ our tables are incompatible, but this is pretty well in hand. This feature
53
+ has also been fuzz tested.
54
54
55
55
* Name mangling: :good: `Ongoing `. Every new C++ feature generally needs its own
56
56
mangling. For example, member pointer template arguments have an interesting
@@ -78,23 +78,21 @@ The status of major ABI-impacting C++ features:
78
78
enabling stack traces in all modern Windows debuggers. Clang does not emit
79
79
any type info or description of variable layout.
80
80
81
- * `RTTI `_: :none: `Unstarted `. See the bug for a discussion of what needs to
82
- happen first.
83
-
84
- .. _RTTI : http://llvm.org/PR18951
81
+ * `RTTI `_: :good: `Complete `. Generation of RTTI data structures has been
82
+ finished, along with support for the ``/GR `` flag.
85
83
86
84
* Exceptions and SEH: :none: `Unstarted `. Clang can parse both constructs, but
87
85
does not know how to emit compatible handlers. This depends on RTTI.
88
86
89
87
* Thread-safe initialization of local statics: :none: `Unstarted `. We are ABI
90
- compatible with MSVC 2012 , which does not support thread-safe local statics.
91
- MSVC 2013 changed the ABI to make initialization of local statics thread safe,
88
+ compatible with MSVC 2013 , which does not support thread-safe local statics.
89
+ MSVC "14" changed the ABI to make initialization of local statics thread safe,
92
90
and we have not yet implemented this.
93
91
94
- * Lambdas in ABI boundaries : :none: `Infeasible `. It is unlikely that we will
95
- ever be fully ABI compatible with lambdas declared in inline functions due to
96
- what appears to be a hash code in the name mangling . Lambdas that are not
97
- externally visible should work fine .
92
+ * Lambdas: :none: `Mostly complete `. Clang is compatible with Microsoft's
93
+ implementation of lambdas except for providing overloads for conversion to
94
+ function pointer for different calling conventions . However, Microsoft's
95
+ extension is non-conforming .
98
96
99
97
Template instantiation and name lookup
100
98
======================================
0 commit comments