-- { dg-do run } -- { dg-options "-O -ftree-vrp -fno-inline" } procedure Opt88 is Val : Integer := 1; procedure Dummy (B : out Boolean) is begin B := True; end; function Test return Boolean is begin return False; end; procedure Do_It (OK : out Boolean) is Blue : Boolean := False; Red : Boolean := False; begin OK := True; Blue := True; Dummy (Red); if Red then Red := False; if Test then Dummy (Red); end if; end if; if Blue and not Red then Val := 0; end if; if Red then OK := False; end if; end; OK : Boolean; begin Do_It (OK); if not OK then raise Program_Error; end if; end;