cxh30031.am

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· AM 代码 · 共 216 行

AM
216
字号
-- CXH30031.AM----                             Grant of Unlimited Rights----     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,--     F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained--     unlimited rights in the software and documentation contained herein.--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making--     this public release, the Government intends to confer upon all--     recipients unlimited rights  equal to those held by the Government.--     These rights include rights to use, duplicate, release or disclose the--     released technical data and computer software in whole or in part, in--     any manner and for any purpose whatsoever, and to have or permit others--     to do so.----                                    DISCLAIMER----     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A--     PARTICULAR PURPOSE OF SAID MATERIAL.--*---- OBJECTIVE--     Check pragma Reviewable.--     Check that pragma Reviewable is accepted as a configuration pragma.---- TEST DESCRIPTION--     This test checks that pragma Reviewable is processed as a--     configuration pragma.  See CXH3001 for testing pragma Reviewable as--     other than a configuration pragma.---- TEST FILES:--      The following files comprise this test:----         CXH30030.A--      => CXH30031.AM---- APPLICABILITY CRITERIA:--      This test is only applicable for a compiler attempting validation--      for the Safety and Security Annex.---- SPECIAL REQUIREMENTS--      The implementation must process a configuration pragma which is not--      part of any Compilation Unit; the method employed is implementation--      defined.------ CHANGE HISTORY:--      26 OCT 95   SAIC   Initial version for 2.1--      07 JUN 96   SAIC   Revised by reviewer request--      03 NOV 96   SAIC   Documentation revision----      03 NOV 96   Keith  Documentation revision--      27 AUG 99   RLB    Removed result dependence on uninitialized object.--      30 AUG 99   RLB    Repaired the above.----!  pragma Reviewable;----------------------------------------------------------------- CXH3003_0package CXH3003_0 is  type Enum is (Item,Stuff,Things);  type Int is range 0..256;  type Unt is mod 256;  type Flt is digits 5;  type Fix is delta 0.5 range -1.0..1.0;  type Root(Disc: Enum) is tagged record    I: Int; U:Unt;  end record;  type List is array(Unt) of Root(Stuff);  type A_List is access List;  type A_Proc is access procedure(R:Root);  procedure P(R:Root);  function F return A_Proc;  Global_Variable : Boolean := False;end CXH3003_0;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --with Report;package body CXH3003_0 is procedure P(R:Root) is    Warnable : Positive := 0;                             -- OPTIONAL WARNING  begin    case R.Disc is      when Item   => Report.Comment("Got Item");      when Stuff  => Report.Comment("Got Stuff");      when Things => Report.Comment("Got Things");    end case;    if Report.Ident_Int( Warnable ) = 0 then      Global_Variable := not Global_Variable;     -- known to be initialized    end if;  end P;  function F return A_Proc is  begin    return P'Access;  end F;end CXH3003_0;----------------------------------------------------------------- CXH3003_1package CXH3003_0.CXH3003_1 is  protected PT is    entry Set(Switch: Boolean);    function Enquire return Boolean;  private    Toggle : Boolean;  end PT;  task TT is    entry Release;  end TT;end CXH3003_0.CXH3003_1;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --package body CXH3003_0.CXH3003_1 is  protected body PT is    entry Set(Switch: Boolean) when True is    begin      Toggle := Switch;    end Set;    function Enquire return Boolean is    begin      return Toggle;    end Enquire;  end PT;  task body TT is  begin    loop      accept Release;      exit when Global_Variable;    end loop;  end TT; -- TT activationend CXH3003_0.CXH3003_1;------------------------------------------------------------------- CXH3003with Report;with CXH3003_0.CXH3003_1;procedure CXH30031 isbegin  Report.Test("CXH3003", "Check pragma Reviewable as a configuration pragma");  Block: declare    A_Truth : Boolean;    Message : String := Report.Ident_Str( "Bad value encountered" );  begin    begin      A_Truth := Report.Ident_Bool( True ) or A_Truth;  -- not initialized      if not A_Truth then        Report.Comment ("True or Uninit = False");        A_Truth := Report.Ident_Bool (True);      else        A_Truth := Report.Ident_Bool (True);          -- We do this separately on each branch in order to insure that a          -- clever optimizer can find out little about this value. Ident_Bool          -- is supposed to be opaque to any optimizer.      end if;    exception      when Constraint_Error | Program_Error =>           -- Possible results of accessing an uninitialized object.        A_Truth := Report.Ident_Bool (True);    end;    CXH3003_0.CXH3003_1.PT.Set( A_Truth );    CXH3003_0.Global_Variable := A_Truth;    CXH3003_0.CXH3003_1.TT.Release;  -- rendezvous with TT    while CXH3003_0.CXH3003_1.TT'Callable loop  -- wait for TT to complete      delay 1.0;    end loop;    if   not CXH3003_0.CXH3003_1.PT.Enquire      or not CXH3003_0.Global_Variable then      Report.Failed(Message);    end if;  end Block;  Report.Result;end CXH30031;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?