1 /* { dg-additional-options "-fno-analyzer-transitivity" } */ 2 #include "analyzer-decls.h" 3 test(int i,int j)4void test (int i, int j) 5 { 6 if (i > 4) 7 { 8 __analyzer_eval (i > 4); /* { dg-warning "TRUE" } */ 9 __analyzer_eval (i <= 4); /* { dg-warning "FALSE" } */ 10 __analyzer_eval (i > 3); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 11 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 12 13 __analyzer_eval (i > 5); /* { dg-warning "UNKNOWN" } */ 14 __analyzer_eval (i != 3); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 15 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 16 17 __analyzer_eval (i == 3); /* { dg-warning "FALSE" "desired" { xfail *-*-* } } */ 18 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 19 20 __analyzer_eval (i != 4); /* { dg-warning "TRUE" } */ 21 __analyzer_eval (i == 4); /* { dg-warning "FALSE" } */ 22 __analyzer_eval (i == 5); /* { dg-warning "UNKNOWN" } */ 23 __analyzer_eval (i != 5); /* { dg-warning "UNKNOWN" } */ 24 __analyzer_eval (i < 5); /* { dg-warning "FALSE" } */ 25 __analyzer_eval (i <= 5); /* { dg-warning "UNKNOWN" } */ 26 27 /* Tests of transitivity. */ 28 if (j < i) 29 { 30 __analyzer_eval (j < i); /* { dg-warning "TRUE" } */ 31 __analyzer_eval (j <= 4); /* { dg-warning "UNKNOWN" } */ 32 } 33 else 34 { 35 __analyzer_eval (j >= i); /* { dg-warning "TRUE" } */ 36 __analyzer_eval (j > 4); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 37 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 38 } 39 } 40 else 41 { 42 __analyzer_eval (i > 4); /* { dg-warning "FALSE" } */ 43 __analyzer_eval (i <= 4); /* { dg-warning "TRUE" } */ 44 __analyzer_eval (i > 3); /* { dg-warning "UNKNOWN" } */ 45 46 __analyzer_eval (i > 5); /* { dg-warning "FALSE" "desired" { xfail *-*-* } } */ 47 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 48 __analyzer_eval (i != 3); /* { dg-warning "UNKNOWN" } */ 49 50 __analyzer_eval (i == 3); /* { dg-warning "UNKNOWN" } */ 51 52 __analyzer_eval (i != 4); /* { dg-warning "UNKNOWN" } */ 53 __analyzer_eval (i == 4); /* { dg-warning "UNKNOWN" } */ 54 __analyzer_eval (i == 5); /* { dg-warning "FALSE" "desired" { xfail *-*-* } } */ 55 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 56 __analyzer_eval (i != 5); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 57 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 58 __analyzer_eval (i < 5); /* { dg-warning "TRUE" } */ 59 __analyzer_eval (i <= 5); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 60 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 61 } 62 } 63 test_2(int i,int j,int k)64void test_2 (int i, int j, int k) 65 { 66 if (i >= j) 67 { 68 __analyzer_eval (i == k); /* { dg-warning "UNKNOWN" } */ 69 if (j >= k) 70 { 71 __analyzer_eval (i >= k); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 72 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 73 __analyzer_eval (i == k); /* { dg-warning "UNKNOWN" } */ 74 if (k >= i) 75 __analyzer_eval (i == k); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 76 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 77 } 78 } 79 } 80 test_3(int flag,unsigned int i)81void test_3 (int flag, unsigned int i) 82 { 83 if (!flag) { 84 return; 85 } 86 87 __analyzer_eval (flag); /* { dg-warning "TRUE" } */ 88 89 if (i>0) { 90 __analyzer_eval (i > 0); /* { dg-warning "TRUE" } */ 91 __analyzer_eval (flag); /* { dg-warning "TRUE" } */ 92 } else { 93 __analyzer_eval (i <= 0); /* { dg-warning "TRUE" } */ 94 __analyzer_eval (flag); /* { dg-warning "TRUE" } */ 95 } 96 97 __analyzer_eval (flag); /* { dg-warning "TRUE" } */ 98 } 99 test_range_int_gt_lt(int i)100void test_range_int_gt_lt (int i) 101 { 102 if (i > 3) 103 if (i < 5) 104 __analyzer_eval (i == 4); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 105 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 106 } 107 test_range_float_gt_lt(float f)108void test_range_float_gt_lt (float f) 109 { 110 if (f > 3) 111 if (f < 5) 112 __analyzer_eval (f == 4); /* { dg-warning "UNKNOWN" } */ 113 } 114 test_range_int_ge_lt(int i)115void test_range_int_ge_lt (int i) 116 { 117 if (i >= 4) 118 if (i < 5) 119 __analyzer_eval (i == 4); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 120 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 121 } 122 test_range_float_ge_lt(float f)123void test_range_float_ge_lt (float f) 124 { 125 if (f >= 4) 126 if (f < 5) 127 __analyzer_eval (f == 4); /* { dg-warning "UNKNOWN" } */ 128 } 129 test_range_int_gt_le(int i)130void test_range_int_gt_le (int i) 131 { 132 if (i > 3) 133 if (i <= 4) 134 __analyzer_eval (i == 4); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 135 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 136 } 137 test_range_float_gt_le(float f)138void test_range_float_gt_le (float f) 139 { 140 if (f > 3) 141 if (f <= 4) 142 __analyzer_eval (f == 4); /* { dg-warning "UNKNOWN" } */ 143 } 144 test_range_int_ge_le(int i)145void test_range_int_ge_le (int i) 146 { 147 if (i >= 4) 148 if (i <= 4) 149 __analyzer_eval (i == 4); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 150 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 151 } 152 test_range_float_ge_le(float f)153void test_range_float_ge_le (float f) 154 { 155 if (f >= 4) 156 if (f <= 4) 157 __analyzer_eval (f == 4); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ 158 /* { dg-bogus "UNKNOWN" "status quo" { xfail *-*-* } .-1 } */ 159 } 160 test_float_selfcmp(float f)161void test_float_selfcmp (float f) 162 { 163 __analyzer_eval (f == f); /* { dg-warning "UNKNOWN" } */ 164 __analyzer_eval (f != f); /* { dg-warning "UNKNOWN" } */ 165 } 166