xref: /aosp_15_r20/external/clang/test/Sema/overloaded-func-transparent-union.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -fsyntax-only -verify
2*67e74705SXin Li // expected-no-diagnostics
3*67e74705SXin Li // rdar:// 9129552
4*67e74705SXin Li // PR9406
5*67e74705SXin Li 
6*67e74705SXin Li typedef struct {
7*67e74705SXin Li 	char *str;
8*67e74705SXin Li 	char *str2;
9*67e74705SXin Li } Class;
10*67e74705SXin Li 
11*67e74705SXin Li typedef union {
12*67e74705SXin Li 	Class *object;
13*67e74705SXin Li } Instance __attribute__((transparent_union));
14*67e74705SXin Li 
Class_Init(Instance this,char * str,void * str2)15*67e74705SXin Li __attribute__((overloadable)) void Class_Init(Instance this, char *str, void *str2) {
16*67e74705SXin Li 	this.object->str  = str;
17*67e74705SXin Li 	this.object->str2 = str2;
18*67e74705SXin Li }
19*67e74705SXin Li 
Class_Init(Instance this,char * str)20*67e74705SXin Li __attribute__((overloadable)) void Class_Init(Instance this, char *str) {
21*67e74705SXin Li 	this.object->str  = str;
22*67e74705SXin Li 	this.object->str2 = str;
23*67e74705SXin Li }
24*67e74705SXin Li 
main(void)25*67e74705SXin Li int main(void) {
26*67e74705SXin Li 	Class obj;
27*67e74705SXin Li 	Class_Init(&obj, "Hello ", " World");
28*67e74705SXin Li }
29*67e74705SXin Li 
30