/* PR debug/43972 */ /* { dg-do compile } */ /* { dg-options "-g -w" } */ /* { dg-options "-g -fpic -w" { target fpic } } */ struct { int *b1; } *f1 (); short v1[1]; struct S { int b2; }; void foo (struct S *a1, union { char *b3; unsigned *b4; int *b5; } *a2) { int d; switch (d) { case 0: { int c = a1->b2, i; if (f1 () == 0) *a2->b3++ = 2; else if (((long) (f1 () - f1 ())) ^ ((long) f1 ()->b1 - ((long) f1 () & 8))) *a2->b3++ = (long) f1 - ((long) f1 () & 0xff); else *a2->b4++ = (long) f1; for (i = 0; i < c; i++) *a2->b5++ = (long) v1; foo (a1, a2); } } }