/*      $NetBSD: d_packed_structs.c,v 1.6 2023/08/05 10:00:59 rillig Exp $      */
# 3 "d_packed_structs.c"

/* packed tests */

/* lint1-extra-flags: -X 351 */

struct in_addr {
       int x;
};
struct ip_timestamp {
       char ipt_code;
       char ipt_len;
       char ipt_ptr;
       unsigned int
           ipt_flg: 4,
           ipt_oflw: 4;
       union ipt_timestamp {
               int ipt_time[1];
               struct ipt_ta {
                       struct in_addr ipt_addr;
                       int ipt_time;
               } ipt_ta[1]__packed;
       } ipt_timestamp__packed;
} __packed;

typedef struct __packed {
       int x;
} t;

struct x {
       char c;
       long long l;
} __packed;

struct y {
       char c;
       long long l;
};

int a[sizeof(struct y) - sizeof(struct x) - 1];

/* expect+1: error: negative array dimension (-9) [20] */
typedef int sizeof_x[-(int)sizeof(struct x)];
/* expect+1: error: negative array dimension (-16) [20] */
typedef int sizeof_y[-(int)sizeof(struct y)];