aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/debug/pr43972.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/debug/pr43972.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/debug/pr43972.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/debug/pr43972.c b/gcc-4.9/gcc/testsuite/gcc.dg/debug/pr43972.c
new file mode 100644
index 000000000..5fcf1e0e8
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/debug/pr43972.c
@@ -0,0 +1,29 @@
+/* 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);
+ }
+ }
+}