llvm-project/clang/test/CodeGenObjC/forward-decl-param.m
Douglas Gregor a9d8493310 Objective-C doesn't consider the use of incomplete types as method
parameter types to be ill-formed. However, it relies on the
completeness of method parameter types when producing metadata, e.g.,
for a protocol, leading IR generating to crash in such cases.

Since there's no real way to tighten down the semantics of Objective-C
here without breaking existing code, do something safe but lame:
suppress the generation of metadata when this happens.

Fixes <rdar://problem/9123036>.

llvm-svn: 132171
2011-05-27 01:19:52 +00:00

20 lines
300 B
Objective-C

// RUN: %clang_cc1 %s -emit-llvm -o -
// <rdar://problem/9123036> crash due to forward-declared struct in
// protocol method parameter.
@protocol P
- (void) A:(struct z) z;
@end
@interface I < P >
@end
@implementation I
@end
@interface I2
- (void) A:(struct z2) z2;
@end
@implementation I2
@end