| /* { dg-do run } */ |
| |
| extern void _exit(int); |
| extern int strcmp(const char *, const char *); |
| |
| typedef struct Vec { |
| double xv[10], yv[5]; |
| float fscal; |
| int z; |
| } xyz_t ; |
| |
| typedef struct { |
| float fscalar; |
| double dscalar; |
| xyz_t dv; |
| int iscalar; |
| long ln; |
| long long lln; |
| } anonymous; |
| |
| const char *enc = @encode(xyz_t); |
| const char *enc2 = @encode(anonymous); |
| |
| #ifdef __LP64__ |
| #define L "q" |
| #else |
| #define L "l" |
| #endif |
| |
| int main(void) { |
| const char *encode = @encode(long); |
| |
| if (strcmp (encode, L)) |
| _exit(-(__LINE__)); |
| |
| if (strcmp (enc, "{Vec=[10d][5d]fi}")) |
| _exit(-(__LINE__)); |
| |
| if (strcmp (enc2, "{?=fd{Vec=[10d][5d]fi}i" L "q}")) |
| _exit(-(__LINE__)); |
| |
| return 0; |
| } |