summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2014-02-24 19:10:37 +0000
committerFariborz Jahanian <fjahanian@apple.com>2014-02-24 19:10:37 +0000
commita7352db7b42f284a3df651b2450a734542e104ed (patch)
tree16621d40bc49c95e6aca8ac018f4931da9333ac4
parent3c5d3339be0eb6a6b6b58033b24d613c46c4d4d3 (diff)
downloadbcm5719-llvm-a7352db7b42f284a3df651b2450a734542e104ed.tar.gz
bcm5719-llvm-a7352db7b42f284a3df651b2450a734542e104ed.zip
Objective-C. Remove an assertion which asserts
on correctly handled block layout IRGen. // rdar://16111839 llvm-svn: 202063
-rw-r--r--clang/lib/CodeGen/CGObjCMac.cpp6
-rw-r--r--clang/test/CodeGenObjC/block-var-layout.m8
2 files changed, 8 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp
index 7b7c1ef7466..99bd35f0fb7 100644
--- a/clang/lib/CodeGen/CGObjCMac.cpp
+++ b/clang/lib/CodeGen/CGObjCMac.cpp
@@ -2123,9 +2123,6 @@ void CGObjCCommonMac::BuildRCRecordLayout(const llvm::StructLayout *RecLayout,
ElCount *= CArray->getSize().getZExtValue();
FQT = CArray->getElementType();
}
-
- assert(!FQT->isUnionType() &&
- "layout for array of unions not supported");
if (FQT->isRecordType() && ElCount) {
int OldIndex = RunSkipBlockVars.size() - 1;
const RecordType *RT = FQT->getAs<RecordType>();
@@ -4594,9 +4591,6 @@ void CGObjCCommonMac::BuildAggrIvarLayout(const ObjCImplementationDecl *OI,
ElCount *= CArray->getSize().getZExtValue();
FQT = CArray->getElementType();
}
-
- assert(!FQT->isUnionType() &&
- "layout for array of unions not supported");
if (FQT->isRecordType() && ElCount) {
int OldIndex = IvarsInfo.size() - 1;
int OldSkIndex = SkipIvars.size() -1;
diff --git a/clang/test/CodeGenObjC/block-var-layout.m b/clang/test/CodeGenObjC/block-var-layout.m
index 0ad44daa0bd..171df7b2748 100644
--- a/clang/test/CodeGenObjC/block-var-layout.m
+++ b/clang/test/CodeGenObjC/block-var-layout.m
@@ -164,3 +164,11 @@ void test_empty_block() {
};
wrapperBlock();
}
+
+// rdar://16111839
+typedef union { char ch[8]; } SS;
+typedef struct { SS s[4]; } CS;
+void test_union_in_layout() {
+ CS cs;
+ ^{ cs; };
+}
OpenPOWER on IntegriCloud