1 /* { dg-do compile } */ 2 /* { dg-options "-O1 -fdump-tree-dom2" } */ 3 4 typedef unsigned int cppchar_t; 5 void foo (void); 6 cppchar_t oof (void); 7 cppchar_t cpp_parse_escape(pstr,limit,wide)8cpp_parse_escape (pstr, limit, wide) 9 const unsigned char **pstr; 10 const unsigned char *limit; 11 int wide; 12 { 13 cppchar_t i = 0; 14 int overflow = 0; 15 cppchar_t mask = ~0; 16 17 while (*pstr < limit) 18 { 19 overflow |= i ^ (i << 4 >> 4); 20 i = oof (); 21 } 22 if (overflow | (i != (i & mask))) 23 foo(); 24 } 25 26 /* There should be precisely three IF statements. If there is 27 more than two, then the dominator optimizations failed. */ 28 /* { dg-final { scan-tree-dump-times "if " 3 "dom2"} } */ 29