ObjCGNU: Fix empty v3 protocols being emitted two fields short
authorDavid Chisnall <csdavec@swan.ac.uk>
Thu, 12 Apr 2018 06:46:15 +0000 (06:46 +0000)
committerDavid Chisnall <csdavec@swan.ac.uk>
Thu, 12 Apr 2018 06:46:15 +0000 (06:46 +0000)
commit10e590e950b80dd1cef95c5ec3cfc11b513343da
tree0bf451f3043ef5acc8046fe293d8dacd7724c7d3
parent60874d4fafde7439cb4610b704abba93ab45af13
ObjCGNU: Fix empty v3 protocols being emitted two fields short

Summary:
Protocols that were being referenced but could not be fully realized were being emitted without `properties`/`optional_properties`. Since all v3 protocols must be 9 processor words wide, the lack of these fields is catastrophic for the runtime.

As an example, the runtime cannot know [here](https://github.com/gnustep/libobjc2/blob/master/protocol.c#L73) that `properties` and `optional_properties` are invalid.

Reviewers: rjmccall, theraven

Reviewed By: rjmccall, theraven

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D45305

llvm-svn: 329882
clang/lib/CodeGen/CGObjCGNU.cpp
clang/test/CodeGenObjC/gnu-empty-protocol-v3.m [new file with mode: 0644]