1// PR optimization/13067
2// Origin: <bryner@brianryner.com>
3
4// This used to fail on the tree-ssa because of "out-of-ssa"
5//  We might have a valid variable, but not a valid value when trying to find
6//  useless statements created by out-of-ssa translation. In this case
7//  val will be set to null, then later dereferenced.  Bad.
8
9// { dg-do compile }
10// { dg-options "-Os" }
11
12
13
14struct Iterator
15{
16  Iterator operator++();
17};
18
19void GetChar(char* aChar);
20
21void foo(char aChar)
22{
23  char quote;
24  Iterator end;
25
26  while (1) {
27    if (aChar == '"')
28      GetChar(&aChar);
29
30    switch (aChar) {
31    case 'a':
32      ++end;
33      if (quote) {
34	if (quote == aChar) {
35	  quote = 0;
36	}
37      } else {
38	quote = aChar;
39      }
40    }
41  }
42}
43
44
45
46