Support for unions

This commit is contained in:
Ganesh Viswanathan 2018-12-04 23:37:08 -06:00
commit dfe06fd9d4
7 changed files with 112 additions and 50 deletions

View file

@ -1,35 +1,51 @@
#include "test.h"
int test_call_int() {
return 5;
return 5;
}
#ifdef FORCE
struct STRUCT1 _test_call_int_param_(int param1) {
struct STRUCT1 _test_call_param_(int param1) {
struct STRUCT1 s;
s.field1 = param1;
return s;
}
#endif
STRUCT2 test_call_int_param2(int param1, STRUCT2 param2) {
STRUCT2 test_call_param2(int param1, STRUCT2 param2) {
STRUCT2 s;
s.field1 = param1 + param2.field1;
return s;
}
STRUCT2 test_call_int_param3(int param1, struct STRUCT1 param2) {
STRUCT2 test_call_param3(int param1, struct STRUCT1 param2) {
STRUCT2 s;
s.field1 = param1 + param2.field1;
return s;
}
ENUM2 test_call_int_param4(enum ENUM param1) {
ENUM2 test_call_param4(enum ENUM param1) {
return enum4;
}
union UNION1 test_call_param5(float param1) {
union UNION1 u;
u.field2 = param1;
return u;
}
unsigned char test_call_param6(UNION2 param1) {
return param1.field2;
}
int test_call_param7(union UNION1 param1) {
return param1.field1;
}

View file

@ -36,8 +36,21 @@ typedef struct {
int *field;
} STRUCT4;
union UNION1 {
int field1;
float field2;
};
typedef union {
double field1;
unsigned char field2;
} UNION2;
int test_call_int();
struct STRUCT1 _test_call_int_param_(int param1);
STRUCT2 test_call_int_param2(int param1, STRUCT2 param2);
STRUCT2 test_call_int_param3(int param1, struct STRUCT1 param2);
ENUM2 test_call_int_param4(enum ENUM param1);
struct STRUCT1 _test_call_param_(int param1);
STRUCT2 test_call_param2(int param1, STRUCT2 param2);
STRUCT2 test_call_param3(int param1, struct STRUCT1 param2);
ENUM2 test_call_param4(enum ENUM param1);
union UNION1 test_call_param5(float param1);
unsigned char test_call_param6(UNION2 param1);
int test_call_param7(union UNION1 param1);