1 /* Example of nested loops.  */
2 
3 #include "analyzer-decls.h"
4 
test(void)5 void test(void)
6 {
7   int i, j, k;
8 
9   __analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
10 
11   for (i=0; i<256; i++) {
12 
13     __analyzer_eval (i >= 0); /* { dg-warning "TRUE" } */
14 
15     __analyzer_eval (i < 256); /* { dg-warning "TRUE" } */
16 
17     for (j=0; j<256; j++) {
18 
19       __analyzer_eval (j >= 0); /* { dg-warning "TRUE" "true" } */
20       /* { dg-warning "UNKNOWN" "unknown" { target *-*-* } .-1 } */
21 
22       __analyzer_eval (j < 256); /* { dg-warning "TRUE" "true" } */
23       /* { dg-bogus "UNKNOWN" "unknown" { xfail *-*-* } .-1 } */
24       /* TODO(xfail^^^): should report TRUE twice. */
25 
26       __analyzer_dump_exploded_nodes (0); /* { dg-warning "3 processed enodes" } */
27 
28       for (k=0; k<256; k++) {
29 
30 	__analyzer_eval (k >= 0); /* { dg-warning "TRUE" "true" } */
31 	/* { dg-warning "UNKNOWN" "unknown" { target *-*-* } .-1 } */
32 
33 	__analyzer_eval (k < 256); /* { dg-warning "TRUE" "true" } */
34 	/* { dg-bogus "UNKNOWN" "unknown" { xfail *-*-* } .-1 } */
35 
36 	__analyzer_dump_exploded_nodes (0); /* { dg-warning "4 processed enodes" } */
37       }
38     }
39   }
40 
41   __analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
42 }
43