Commits

Joe Groff committed ec61fa4c5a6
IRGen/Runtime: Use only the 'layout' subset of the vwtable to perform value type layout. Full type metadata isn't necessary to calculate the runtime layout of a dependent struct or enum; we only need the non-function data from the value witness table (size, alignment, extra inhabitant count, and POD/BT/etc. flags). This can be generated more efficiently than the type metadata for many types--if we know a specific instantiation is fixed-layout, we can regenerate the layout information, or if we know the type has the same layout as another well-known type, we can get the layout from a common value witness table. This breaks a deadlock in most (but not all) cases where a value type is recursive using classes or fixed-layout indirected structs like UnsafePointer. rdar://problem/19898165 This time, factor out the ObjC-dependent parts of the tests so they only run with ObjC interop. Swift SVN r30266