1 // { dg-do compile }
2 
3 typedef long unsigned int size_t;
4 extern void fancy_abort () __attribute__ ((__noreturn__));
5 class cpp_string_location_reader { };
6 class cpp_substring_ranges {
7 public:
8     void add_range ();
9 };
10 typedef unsigned char uchar;
11 void
cpp_interpret_string_1(size_t count,cpp_string_location_reader * loc_readers,cpp_substring_ranges * ranges,uchar c,const uchar * p)12 cpp_interpret_string_1 (size_t count, cpp_string_location_reader *loc_readers,    cpp_substring_ranges *ranges, uchar c, const uchar *p)
13 {
14   size_t i;
15   ((void)(!((loc_readers !=   __null  ) == (ranges !=   __null  )) ? fancy_abort (), 0 : 0));
16   cpp_string_location_reader *loc_reader = __null;
17   for (i = 0; i < count; i++)
18     {
19       if (loc_readers)  loc_reader = &loc_readers[i];
20       if (*p == 'R') 	continue;
21       for (;;)
22 	{
23 	  switch (c)     {
24 	    case 'x':       if (ranges) ranges->add_range (); break;
25 	    case '7':       ((void)(!((loc_reader !=   __null  ) == (ranges !=   __null  )) ? fancy_abort (), 0 : 0)); break;
26 	  }
27 	  p = 0;
28 	}
29     }
30 }
31