
This patch uses the infrastructure added in r326307 for enabling non-trivial fields to be declared in C structs to allow __weak fields in C structs in ARC. This recommits r327206, which was reverted because it caused module-enabled builders to fail. I discovered that the CXXRecordDecl::CanPassInRegisters flag wasn't being set correctly in some cases after I moved it to RecordDecl. Thanks to Eric Liu for helping me investigate the bug. rdar://problem/33599681 https://reviews.llvm.org/D44095 llvm-svn: 327870
14 lines
156 B
C++
14 lines
156 B
C++
template <class T>
|
|
struct Class0 {
|
|
Class0();
|
|
Class0(const Class0<T> &);
|
|
~Class0();
|
|
T *p;
|
|
};
|
|
|
|
struct S0 {
|
|
id x;
|
|
};
|
|
|
|
Class0<S0> returnNonTrivial();
|