/* bug #1937 - Incorrect Behavior Related to OptBoolTrans */ #include unsigned char c; int *p; void f1(void) { int i = 1; int *pa = (int *)0xaaaa; int *pb = (int *)0xbbbb; p = (i == 0) ? pa : pb; c = 0x5a; } struct data_t { unsigned char c; int *p; }; struct data_t data; void f2(void) { int i = 1; int *pa = (int *)0xcccc; int *pb = (int *)0xdddd; struct data_t *po = &data; po->p = (i == 0) ? pa : pb; po->c = 0xa5; } int ret = 0; int main(void) { f1(); if (c != 0x5a) { ret++; } printf("c: %hhx\n", c); printf("p: %p\n", p); f2(); if (data.c != 0xa5) { ret++; } printf("c: %hhx\n", data.c); printf("p: %p\n", data.p); printf("failures: %d\n", ret); return ret; }