annotate gcc/testsuite/gcc.dg/uninit-6.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Spurious uninitialized variable warnings.
kono
parents:
diff changeset
2 This one inspired by java/class.c:build_utf8_ref. */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 /* { dg-do compile } */
kono
parents:
diff changeset
5 /* { dg-options "-O -Wuninitialized" } */
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 #include <stddef.h>
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 struct tree
kono
parents:
diff changeset
10 {
kono
parents:
diff changeset
11 struct tree *car;
kono
parents:
diff changeset
12 struct tree *cdr;
kono
parents:
diff changeset
13 int type, data;
kono
parents:
diff changeset
14 };
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 extern void *malloc(size_t);
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 #define INTEGER_T 1
kono
parents:
diff changeset
19 #define PTR_T 2
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 #define APPEND(TREE, LAST, TYPE, VALUE) \
kono
parents:
diff changeset
22 do { \
kono
parents:
diff changeset
23 struct tree *tmp = malloc (sizeof (struct tree)); \
kono
parents:
diff changeset
24 tmp->car = 0; tmp->cdr = 0; tmp->type = TYPE; \
kono
parents:
diff changeset
25 tmp->data = VALUE; \
kono
parents:
diff changeset
26 if (TREE->car) \
kono
parents:
diff changeset
27 LAST->cdr = tmp; \
kono
parents:
diff changeset
28 else \
kono
parents:
diff changeset
29 TREE->car = tmp; \
kono
parents:
diff changeset
30 LAST = tmp; \
kono
parents:
diff changeset
31 } while(0)
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 struct tree *
kono
parents:
diff changeset
34 make_something(int a, int b, int c)
kono
parents:
diff changeset
35 {
kono
parents:
diff changeset
36 struct tree *rv;
kono
parents:
diff changeset
37 struct tree *field;
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 rv = malloc (sizeof (struct tree));
kono
parents:
diff changeset
40 rv->car = 0;
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 APPEND(rv, field, INTEGER_T, a); /* { dg-bogus "field" "uninitialized variable warning" } */
kono
parents:
diff changeset
43 APPEND(rv, field, PTR_T, b);
kono
parents:
diff changeset
44 APPEND(rv, field, INTEGER_T, c);
kono
parents:
diff changeset
45
kono
parents:
diff changeset
46 return rv;
kono
parents:
diff changeset
47 }