OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [c9/] [c95071a.ada] - Rev 816

Compare with Previous | Blame | View Log

-- C95071A.ADA
 
--                             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.
--*
-- CHECK THAT OBJECTS DESIGNATED BY IN PARAMETERS OF ACCESS TYPES CAN
-- BE USED AS THE TARGET OF AN ASSIGNMENT STATEMENT AND AS AN ACTUAL
-- PARAMETER OF ANY MODE.  SUBTESTS ARE:
--        (A) INTEGER ACCESS TYPE.
--        (B) ARRAY ACCESS TYPE.
--        (C) RECORD ACCESS TYPE.
 
-- JWC 7/11/85
 
WITH REPORT; USE REPORT;
PROCEDURE C95071A IS
 
BEGIN
 
     TEST ("C95071A", "CHECK THAT COMPONENTS OF ACCESS IN PARAMETERS " &
                      "MAY BE USED IN ASSIGNMENT CONTEXTS");
 
     --------------------------------------------------
 
     DECLARE   -- (A)
 
          TYPE PTRINT IS ACCESS INTEGER;
          PI : PTRINT;
 
          TASK TA IS
               ENTRY EA (PI : IN PTRINT);
          END TA;
 
          TASK BODY TA IS
          BEGIN
               ACCEPT EA (PI : IN PTRINT) DO
                    DECLARE
                         TASK TA1 IS
                              ENTRY EA1 (I : OUT INTEGER);
                              ENTRY EA2 (I : IN OUT INTEGER);
                         END TA1;
 
                         TASK BODY TA1 IS
                         BEGIN
                              ACCEPT EA1 (I : OUT INTEGER) DO
                                   I := 7;
                              END EA1;
 
                              ACCEPT EA2 (I : IN OUT INTEGER) DO
                                   I := I + 1;
                              END EA2;
                         END TA1;
 
                    BEGIN
                         TA1.EA1 (PI.ALL);
                         TA1.EA2 (PI.ALL);
                         PI.ALL := PI.ALL + 1;
                         IF (PI.ALL /= 9) THEN
                              FAILED ("ASSIGNMENT TO COMPONENT OF " &
                                      "INTEGER ACCESS PARAMETER " &
                                      "FAILED");
                         END IF;
                    END;
               END EA;
          END TA;
 
     BEGIN     -- (A)
 
          PI := NEW INTEGER'(0);
          TA.EA (PI);
 
     END;      -- (A)
 
     ---------------------------------------------
 
     DECLARE   -- (B)
 
          TYPE TBL IS ARRAY (1..3) OF INTEGER;
          TYPE PTRTBL IS ACCESS TBL;
          PT : PTRTBL;
 
          TASK TB IS
               ENTRY EB (PT : IN PTRTBL);
          END TB;
 
          TASK BODY TB IS
          BEGIN
               ACCEPT EB (PT : IN PTRTBL) DO
                    DECLARE
                         TASK TB1 IS
                              ENTRY EB1 (T : OUT TBL);
                              ENTRY EB2 (T : IN OUT TBL);
                              ENTRY EB3 (I : OUT INTEGER);
                              ENTRY EB4 (I : IN OUT INTEGER);
                         END TB1;
 
                         TASK BODY TB1 IS
                         BEGIN
                              ACCEPT EB1 (T : OUT TBL) DO
                                   T := (1,2,3);
                              END EB1;
 
                              ACCEPT EB2 (T : IN OUT TBL) DO
                                   T(3) := T(3) - 1;
                              END EB2;
 
                              ACCEPT EB3 (I : OUT INTEGER) DO
                                   I := 7;
                              END EB3;
 
                              ACCEPT EB4 (I : IN OUT INTEGER) DO
                                   I := I + 1;
                              END EB4;
                         END TB1;
 
                    BEGIN
                         TB1.EB1 (PT.ALL);         -- (1,2,3)
                         TB1.EB2 (PT.ALL);         -- (1,2,2)
                         TB1.EB3 (PT(2));          -- (1,7,2)
                         TB1.EB4 (PT(1));          -- (2,7,2)
                         PT(3) := PT(3) + 7;      -- (2,7,9)
                         IF (PT.ALL /= (2,7,9)) THEN
                              FAILED ("ASSIGNMENT TO COMPONENT OF " &
                                      "ARRAY ACCESS PARAMETER FAILED");
                         END IF;
                    END;
               END EB;
          END TB;
 
     BEGIN     -- (B)
 
          PT := NEW TBL'(0,0,0);
          TB.EB (PT);
 
     END;      -- (B)
 
     ---------------------------------------------
 
     DECLARE   -- (C)
 
          TYPE REC IS
               RECORD
                    I1   : INTEGER;
                    I2   : INTEGER;
                    I3   : INTEGER;
               END RECORD;
 
          TYPE PTRREC IS ACCESS REC;
          PR : PTRREC;
 
          TASK TC IS
               ENTRY EC (PR : IN PTRREC);
          END TC;
 
          TASK BODY TC IS
          BEGIN
               ACCEPT EC (PR : IN PTRREC) DO
                    DECLARE
                         TASK TC1 IS
                              ENTRY EC1 (R : OUT REC);
                              ENTRY EC2 (R : IN OUT REC);
                              ENTRY EC3 (I : OUT INTEGER);
                              ENTRY EC4 (I : IN OUT INTEGER);
                         END TC1;
 
                         TASK BODY TC1 IS
                         BEGIN
                              ACCEPT EC1 (R : OUT REC) DO
                                   R := (1,2,3);
                              END EC1;
 
                              ACCEPT EC2 (R : IN OUT REC) DO
                                   R.I3 := R.I3 - 1;
                              END EC2;
 
                              ACCEPT EC3 (I : OUT INTEGER) DO
                                   I := 7;
                              END  EC3;
 
                              ACCEPT EC4 (I : IN OUT INTEGER) DO
                                   I := I + 1;
                              END EC4;
                         END TC1;
 
                    BEGIN
                         TC1.EC1 (PR.ALL);         -- (1,2,3)
                         TC1.EC2 (PR.ALL);         -- (1,2,2)
                         TC1.EC3 (PR.I2);          -- (1,7,2)
                         TC1.EC4 (PR.I1);          -- (2,7,2)
                         PR.I3 := PR.I3 + 7;       -- (2,7,9)
                         IF (PR.ALL /= (2,7,9)) THEN
                              FAILED ("ASSIGNMENT TO COMPONENT OF " &
                                      "RECORD ACCESS PARAMETER " &
                                      "FAILED");
                         END IF;
                    END;
               END EC;
          END TC;
 
     BEGIN     -- (C)
 
          PR := NEW REC'(0,0,0);
          TC.EC (PR);
 
     END;      -- (C)
 
     ---------------------------------------------
 
     RESULT;
 
END C95071A;
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.