1 /* { dg-additional-options "-fno-analyzer-state-merge" } */ 2 3 #include "analyzer-decls.h" 4 __analyzer_only_called_when_flag_a_true(int i)5static void __analyzer_only_called_when_flag_a_true (int i) 6 { 7 __analyzer_eval (i == 42); /* { dg-warning "TRUE" } */ 8 } 9 __analyzer_only_called_when_flag_b_true(int i)10static void __analyzer_only_called_when_flag_b_true (int i) 11 { 12 __analyzer_eval (i == 17); /* { dg-warning "TRUE" } */ 13 } 14 test_1(int flag_a,int flag_b)15int test_1 (int flag_a, int flag_b) 16 { 17 int i = 17; 18 19 __analyzer_eval (flag_a); /* { dg-warning "UNKNOWN" } */ 20 __analyzer_eval (flag_b); /* { dg-warning "UNKNOWN" } */ 21 22 if (flag_a) 23 { 24 __analyzer_eval (flag_a); /* { dg-warning "TRUE" } */ 25 __analyzer_eval (flag_b); /* { dg-warning "UNKNOWN" } */ 26 i = 42; 27 } 28 29 __analyzer_eval (flag_b); /* { dg-warning "UNKNOWN" } */ 30 31 if (flag_a) 32 { 33 __analyzer_eval (flag_a); /* { dg-warning "TRUE" } */ 34 __analyzer_eval (flag_b); /* { dg-warning "UNKNOWN" } */ 35 __analyzer_eval (i == 42); /* { dg-warning "TRUE" } */ 36 __analyzer_eval (i == 17); /* { dg-warning "FALSE" } */ 37 __analyzer_only_called_when_flag_a_true (i); 38 } 39 else 40 { 41 __analyzer_eval (flag_a); /* { dg-warning "FALSE" } */ 42 __analyzer_eval (flag_b); /* { dg-warning "UNKNOWN" } */ 43 __analyzer_eval (i == 42); /* { dg-warning "FALSE" } */ 44 __analyzer_eval (i == 17); /* { dg-warning "TRUE" } */ 45 __analyzer_only_called_when_flag_b_true (i); 46 } 47 } 48