1-- { dg-do run }
2-- { dg-options "-O -ftree-vrp -fno-inline" }
3
4procedure Opt88 is
5
6  Val : Integer := 1;
7
8  procedure Dummy (B : out Boolean) is
9  begin
10    B := True;
11  end;
12
13  function Test return Boolean is
14  begin
15    return False;
16  end;
17
18  procedure Do_It (OK : out Boolean) is
19
20    Blue : Boolean := False;
21    Red  : Boolean := False;
22
23  begin
24    OK := True;
25    Blue := True;
26    Dummy (Red);
27
28    if Red then
29      Red := False;
30
31      if Test then
32        Dummy (Red);
33      end if;
34    end if;
35
36    if Blue and not Red then
37      Val := 0;
38    end if;
39
40    if Red then
41      OK := False;
42    end if;
43  end;
44
45  OK : Boolean;
46
47begin
48  Do_It (OK);
49  if not OK then
50    raise Program_Error;
51  end if;
52end;
53