| /* { dg-do compile } */ |
| /* { dg-options "-Wuninitialized -O2 -Wno-implicit" } */ |
| /* { dg-require-effective-target ptr32plus } */ |
| |
| extern int optind; |
| struct undefinfo |
| { |
| unsigned long l1; |
| unsigned long l2; |
| }; |
| struct undeffoo |
| { |
| char a[64]; |
| long b[4]; |
| int c[33]; |
| }; |
| struct problem |
| { |
| unsigned long l1; |
| unsigned long l2; |
| unsigned long l3; |
| unsigned long l4; |
| }; |
| static unsigned int undef1, undef2, undef3, undef4, undef5, undef6; |
| static void *undefvp1; |
| extern struct undefinfo undefinfo; |
| static int |
| undefinit1 (void) |
| { |
| struct undeffoo foo; |
| int i; |
| for (i = 0; i < 2000; i++) |
| { |
| undef6++; |
| external_function5 (((void *) 0), 0, (void *) &foo); |
| } |
| } |
| |
| static int |
| undefinit2 (void *problemp, unsigned long problem) |
| { |
| int ret, u; |
| if (undefinit1 ()) |
| return 1; |
| if (fn10 ()) |
| return 1; |
| for (u = 0; u < undef6; u++) |
| { |
| ret = external_function1 (3 + u * 10, 10); |
| if (ret) |
| return ret; |
| external_function6 (0, 0, 0, problemp + problem); |
| return 1; |
| } |
| } |
| |
| static int |
| fn6 (struct undefinfo *uip, struct problem *problem) |
| { |
| unsigned long amt; |
| if (external_function3 (((void *) 0), ((void *) 0), &amt, 0, 0)) |
| return 1; |
| problem->l1 = (unsigned long) undefvp1; |
| problem->l4 = uip->l1; |
| problem->l3 = uip->l2; |
| return 0; |
| } |
| |
| static int |
| setup (void) |
| { |
| struct problem problem; |
| if (fn6 (&undefinfo, &problem)) |
| return 1; |
| if (fn2 ()) |
| return 1; |
| if (fn4 (101)) |
| return 1; |
| if (undefinit2 ((void *) problem.l1, problem.l3 * 4)) /* { dg-bogus "problem.l3" "uninitialized variable warning" } */ |
| return 1; |
| } |
| |
| int |
| main (int argc, char **argv) |
| { |
| int optc; |
| if (external_function (1)) |
| return 1; |
| if (external_function (1)) |
| return 1; |
| if (external_function (1)) |
| return 1; |
| while ((optc = |
| getopt_long (argc, argv, ((void *) 0), ((void *) 0), |
| ((void *) 0))) != -1) |
| { |
| switch (optc) |
| { |
| case 0: |
| break; |
| case 'F': |
| external_function (1); |
| default: |
| return 1; |
| } |
| } |
| if ((optind != 99)) |
| { |
| return 1; |
| } |
| setup (); |
| } |