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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [cc/] [cc1111a.ada] - Rev 720

Compare with Previous | Blame | View Log

-- CC1111A.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.
--*
-- OBJECTIVE:
--     CHECK THAT AFTER A GENERIC UNIT IS INSTANTIATED, THE SUBTYPE OF
--     AN IN OUT OBJECT PARAMETER IS DETERMINED BY THE ACTUAL PARAMETER
--     (TESTS INTEGER, ENUMERATION, FLOATING POINT, FIXED POINT, ARRAY,
--     ACCESS, AND DISCRIMINATED TYPES).
 
-- HISTORY:
--     BCB 03/28/88  CREATED ORIGINAL TEST.
--     PWN 01/31/95  REMOVED INCONSISTENCIES WITH ADA 9X.
 
WITH REPORT; USE REPORT;
 
PROCEDURE CC1111A IS
 
     SUBTYPE INT IS INTEGER RANGE 0..5;
     INTVAR : INTEGER RANGE 1..3;
 
     TYPE ENUM IS (ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT);
     SUBTYPE SUBENUM IS ENUM RANGE ONE .. FIVE;
     ENUMVAR : ENUM RANGE TWO .. THREE;
 
     TYPE FLT IS DIGITS 5 RANGE -5.0 .. 5.0;
     SUBTYPE SUBFLT IS FLT RANGE -1.0 .. 1.0;
     FLTVAR : FLT RANGE 0.0 .. 1.0;
 
     TYPE FIX IS DELTA 0.5 RANGE -5.0 .. 5.0;
     SUBTYPE SUBFIX IS FIX RANGE -1.0 .. 1.0;
     FIXVAR : FIX RANGE 0.0 .. 1.0;
 
     SUBTYPE STR IS STRING (1..10);
     STRVAR : STRING (1..5);
 
     TYPE REC (DISC : INTEGER := 5) IS RECORD
          NULL;
     END RECORD;
     SUBTYPE SUBREC IS REC (6);
     RECVAR : REC(5);
     SUBRECVAR : SUBREC;
 
     TYPE ACCREC IS ACCESS REC;
     SUBTYPE A1 IS ACCREC(1);
     SUBTYPE A2 IS ACCREC(2);
     A1VAR : A1 := NEW REC(1);
     A2VAR : A2 := NEW REC(2);
 
     PACKAGE P IS
          TYPE PRIV IS PRIVATE;
     PRIVATE
          TYPE PRIV IS RANGE 1 .. 100;
          SUBTYPE SUBPRIV IS PRIV RANGE 5 .. 10;
          PRIVVAR : PRIV RANGE 8 .. 10;
     END P;
 
     PACKAGE BODY P IS
          FUNCTION PRIVEQUAL (ONE, TWO : SUBPRIV) RETURN BOOLEAN;
 
          FUNCTION PRIVEQUAL (ONE, TWO : SUBPRIV) RETURN BOOLEAN IS
          BEGIN
               RETURN ONE = TWO;
          END PRIVEQUAL;
 
          GENERIC
               INPUT : SUBPRIV;
               OUTPUT : IN OUT SUBPRIV;
          PROCEDURE I;
 
          PROCEDURE I IS
          BEGIN
               OUTPUT := INPUT;
               FAILED ("SUBTYPE NOT DETERMINED BY ACTUAL PARAMETER - " &
                       "PRIVATE TYPE");
               IF PRIVEQUAL (OUTPUT, OUTPUT) THEN
                    COMMENT ("DON'T OPTIMIZE OUTPUT");
               END IF;
          EXCEPTION
               WHEN CONSTRAINT_ERROR =>
                    NULL;
               WHEN OTHERS =>
                    FAILED ("WRONG EXCEPTION RAISED");
          END I;
 
          PROCEDURE I1 IS NEW I (5, PRIVVAR);
          PROCEDURE I2 IS NEW I (SUBPRIV'FIRST, PRIVVAR);
 
     BEGIN
          TEST ("CC1111A", "CHECK THAT AFTER A GENERIC UNIT IS " &
                           "INSTANTIATED, THE SUBTYPE OF AN IN OUT " &
                           "OBJECT PARAMETER IS DETERMINED BY THE " &
                           "ACTUAL PARAMETER (TESTS INTEGER, " &
                           "ENUMERATION, FLOATING POINT, FIXED POINT " &
                           ", ARRAY, ACCESS, AND DISCRIMINATED TYPES)");
 
          I1;
          I2;
     END P;
 
     USE P;
 
     GENERIC
          TYPE GP IS PRIVATE;
     FUNCTION GEN_IDENT (X : GP) RETURN GP;
 
     GENERIC
          INPUT : INT;
          OUTPUT : IN OUT INT;
     PROCEDURE B;
 
     GENERIC
          INPUT : SUBENUM;
          OUTPUT : IN OUT SUBENUM;
     PROCEDURE C;
 
     GENERIC
          INPUT : SUBFLT;
          OUTPUT : IN OUT SUBFLT;
     PROCEDURE D;
 
     GENERIC
          INPUT : SUBFIX;
          OUTPUT : IN OUT SUBFIX;
     PROCEDURE E;
 
     GENERIC
          INPUT : STR;
          OUTPUT : IN OUT STR;
     PROCEDURE F;
 
     GENERIC
          INPUT : A1;
          OUTPUT : IN OUT A1;
     PROCEDURE G;
 
     GENERIC
          INPUT : SUBREC;
          OUTPUT : IN OUT SUBREC;
     PROCEDURE H;
 
     GENERIC
          TYPE GP IS PRIVATE;
     FUNCTION GENEQUAL (ONE, TWO : GP) RETURN BOOLEAN;
 
     FUNCTION GENEQUAL (ONE, TWO : GP) RETURN BOOLEAN IS
     BEGIN
          RETURN ONE = TWO;
     END GENEQUAL;
 
     FUNCTION GEN_IDENT (X : GP) RETURN GP IS
     BEGIN
               RETURN X;
     END GEN_IDENT;
 
     FUNCTION INT_IDENT IS NEW GEN_IDENT (INT);
     FUNCTION SUBENUM_IDENT IS NEW GEN_IDENT (SUBENUM);
     FUNCTION SUBFLT_IDENT IS NEW GEN_IDENT (SUBFLT);
     FUNCTION SUBFIX_IDENT IS NEW GEN_IDENT (SUBFIX);
 
     FUNCTION ENUMEQUAL IS NEW GENEQUAL (SUBENUM);
     FUNCTION FLTEQUAL IS NEW GENEQUAL (SUBFLT);
     FUNCTION FIXEQUAL IS NEW GENEQUAL (SUBFIX);
     FUNCTION STREQUAL IS NEW GENEQUAL (STR);
     FUNCTION ACCEQUAL IS NEW GENEQUAL (A2);
     FUNCTION RECEQUAL IS NEW GENEQUAL (REC);
 
     PROCEDURE B IS
     BEGIN
          OUTPUT := INPUT;
          FAILED ("SUBTYPE NOT DETERMINED BY ACTUAL PARAMETER - " &
                  "INTEGER TYPE");
          IF EQUAL (OUTPUT, OUTPUT) THEN
               COMMENT ("DON'T OPTIMIZE OUTPUT");
          END IF;
     EXCEPTION
          WHEN CONSTRAINT_ERROR =>
               NULL;
          WHEN OTHERS =>
               FAILED ("WRONG EXCEPTION RAISED");
     END B;
 
     PROCEDURE C IS
     BEGIN
          OUTPUT := INPUT;
          FAILED ("SUBTYPE NOT DETERMINED BY ACTUAL PARAMETER - " &
                  "ENUMERATION TYPE");
          IF ENUMEQUAL (OUTPUT, OUTPUT) THEN
               COMMENT ("DON'T OPTIMIZE OUTPUT");
          END IF;
     EXCEPTION
          WHEN CONSTRAINT_ERROR =>
               NULL;
          WHEN OTHERS =>
               FAILED ("WRONG EXCEPTION RAISED");
     END C;
 
     PROCEDURE D IS
     BEGIN
          OUTPUT := INPUT;
          FAILED ("SUBTYPE NOT DETERMINED BY ACTUAL PARAMETER - " &
                  "FLOATING POINT TYPE");
          IF FLTEQUAL (OUTPUT, OUTPUT) THEN
               COMMENT ("DON'T OPTIMIZE OUTPUT");
          END IF;
     EXCEPTION
          WHEN CONSTRAINT_ERROR =>
               NULL;
          WHEN OTHERS =>
               FAILED ("WRONG EXCEPTION RAISED");
     END D;
 
     PROCEDURE E IS
     BEGIN
          OUTPUT := INPUT;
          FAILED ("SUBTYPE NOT DETERMINED BY ACTUAL PARAMETER - " &
                  "FIXED POINT TYPE");
          IF FIXEQUAL (OUTPUT, OUTPUT) THEN
               COMMENT ("DON'T OPTIMIZE OUTPUT");
          END IF;
     EXCEPTION
          WHEN CONSTRAINT_ERROR =>
               NULL;
          WHEN OTHERS =>
               FAILED ("WRONG EXCEPTION RAISED");
     END E;
 
     PROCEDURE F IS
     BEGIN
          OUTPUT := INPUT;
          FAILED ("SUBTYPE NOT DETERMINED BY ACTUAL PARAMETER - " &
                  "ARRAY TYPE");
          IF STREQUAL (OUTPUT, OUTPUT) THEN
               COMMENT ("DON'T OPTIMIZE OUTPUT");
          END IF;
     EXCEPTION
          WHEN CONSTRAINT_ERROR =>
               NULL;
          WHEN OTHERS =>
               FAILED ("WRONG EXCEPTION RAISED");
     END F;
 
     PROCEDURE G IS
     BEGIN
          OUTPUT := INPUT;
          FAILED ("SUBTYPE NOT DETERMINED BY ACTUAL PARAMETER - " &
                  "ACCESS TYPE");
          IF ACCEQUAL (OUTPUT, OUTPUT) THEN
               COMMENT ("DON'T OPTIMIZE OUTPUT");
          END IF;
     EXCEPTION
          WHEN CONSTRAINT_ERROR =>
               NULL;
          WHEN OTHERS =>
               FAILED ("WRONG EXCEPTION RAISED");
     END G;
 
     PROCEDURE H IS
     BEGIN
          OUTPUT := INPUT;
          FAILED ("SUBTYPE NOT DETERMINED BY ACTUAL PARAMETER - " &
                  "DISCRIMINATED RECORD TYPE");
          IF RECEQUAL (OUTPUT, OUTPUT) THEN
               COMMENT ("DON'T OPTIMIZE OUTPUT");
          END IF;
     EXCEPTION
          WHEN CONSTRAINT_ERROR =>
               NULL;
          WHEN OTHERS =>
               FAILED ("WRONG EXCEPTION RAISED");
     END H;
 
     PROCEDURE B1 IS NEW B (4, INTVAR);
     PROCEDURE C1 IS NEW C (FOUR, ENUMVAR);
     PROCEDURE D1 IS NEW D (-1.0, FLTVAR);
     PROCEDURE E1 IS NEW E (-1.0, FIXVAR);
     PROCEDURE F1 IS NEW F ("9876543210", STRVAR);
     PROCEDURE G1 IS NEW G (A1VAR, A2VAR);
     PROCEDURE H1 IS NEW H (SUBRECVAR, RECVAR);
 
     PROCEDURE B2 IS NEW B (INT_IDENT(INT'FIRST), INTVAR);
     PROCEDURE C2 IS NEW C (SUBENUM_IDENT(SUBENUM'FIRST), ENUMVAR);
     PROCEDURE D2 IS NEW D (SUBFLT_IDENT(SUBFLT'FIRST), FLTVAR);
     PROCEDURE E2 IS NEW E (SUBFIX_IDENT(SUBFIX'FIRST), FIXVAR);
 
BEGIN
 
     B1;
     C1;
     D1;
     E1;
     F1;
     G1;
     H1;
 
     B2;
     C2;
     D2;
     E2;
 
     RESULT;
END CC1111A;
 

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.