1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -fno-tree-forwprop -fdump-tree-evrp-details" } */ 3 4 void aa (void); 5 void aos (void); 6 void aob (void); 7 8 void blah(int code1,int code2)9blah (int code1, int code2) 10 { 11 int i; 12 int n_sets; 13 14 n_sets = (int) (code1 == 32); 15 if (code2 == 64) goto L2; else goto L3; 16 17 L2: 18 aa (); 19 20 L3: 21 if (n_sets > 1) goto L4; else goto L10; 22 23 L4: 24 aos (); 25 i = 0; 26 goto L24; 27 28 L10: 29 if (n_sets > 0) goto L25; else goto L8; 30 31 L25: 32 i = 0; 33 34 L24: 35 aob (); 36 i = i + 1; 37 if (i < n_sets) goto L24; else goto L8; 38 39 L8: 40 return; 41 } 42 43 44 45 /* The n_sets > 0 test can be simplified into n_sets == 1 since the 46 only way to reach the test is when n_sets <= 1, and the only value 47 which satisfies both conditions is n_sets == 1. */ 48 /* { dg-final { scan-tree-dump-times "Simplified relational" 1 "evrp" } } */ 49 50