1 /* Example of nested loops. */ 2 3 #include "analyzer-decls.h" 4 test(void)5void 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