Annotation of researchv10no/cmd/lcc/ph/d41b.c, revision 1.1.1.1

1.1       root        1: /* The Plum Hall Validation Suite for C
                      2:  * Unpublished copyright (c) 1986-1991, Chiron Systems Inc and Plum Hall Inc.
                      3:  * VERSION: 4
                      4:  * DATE: 1993-01-01
                      5:  * The "ANSI" mode of this suite corresponds to official ANSI C, X3.159-1989.
                      6:  * As per your license agreement, your distribution is not to be moved or copied outside the Designated Site
                      7:  * without specific permission from Plum Hall Inc.
                      8:  */
                      9: 
                     10: #define LIB_TEST 1
                     11: #include "defs.h"
                     12: #if !ANSI || !HAS_PROTOTYPES
                     13: #define SKIP41 1
                     14: #endif
                     15: 
                     16: #include "flags.h"
                     17: #ifndef SKIP41
                     18: #include <limits.h>
                     19: /*
                     20:  * 4.1.4 - Limits <limits.h>
                     21:  */
                     22: void d41_4a()
                     23:        {
                     24:        Filename = "d41b.c";
                     25: 
                     26:        /* All of these must be restricted constant expresions. */
                     27: if (CHAR_BIT < 8)
                     28:        complain(__LINE__);
                     29: if (SCHAR_MIN > -127)
                     30:        complain(__LINE__);
                     31: if (SCHAR_MAX < 127)
                     32:        complain(__LINE__);
                     33: if (UCHAR_MAX < 255U)
                     34:        complain(__LINE__);
                     35: if (CHAR_MIN != SCHAR_MIN && CHAR_MIN != 0)
                     36:        complain(__LINE__);
                     37: if (CHAR_MAX != SCHAR_MAX && CHAR_MAX != UCHAR_MAX)
                     38:        complain(__LINE__);
                     39: if (SHRT_MIN > -32767)
                     40:        complain(__LINE__);
                     41: if (SHRT_MAX < 32767)
                     42:        complain(__LINE__);
                     43: if (USHRT_MAX < 65535U)
                     44:        complain(__LINE__);
                     45: if (INT_MIN > -32767)
                     46:        complain(__LINE__);
                     47: if (INT_MAX < 32767)
                     48:        complain(__LINE__);
                     49: if (UINT_MAX < 65535U)
                     50:        complain(__LINE__);
                     51: if (LONG_MIN > -2147483647)
                     52:        complain(__LINE__);
                     53: if (LONG_MAX <  2147483647)
                     54:        complain(__LINE__);
                     55: if (ULONG_MAX < 0xffffffff)
                     56:        complain(__LINE__);
                     57: 
                     58: #ifndef SKIP_1992_PENDING
                     59: /* Review Board meeting August 1992 approved update item #461:
                     60:  * ...  d41b.c  ought to contain some
                     61:  * tests to verify that these are all restricted constant expressions,
                     62:  * suitable to being tested by  #if .  If you try to implement them
                     63:  * with casts, they won't be testable by  #if .
                     64:  * As of now, this conformance test is in the "Pending" category.
                     65:  * It will not become a formal certification requirement until the
                     66:  * 1993 Review Board meeting.
                     67:  */
                     68:        /* All of these must be restricted constant expresions. */
                     69: #if (CHAR_BIT < 8)
                     70:        complain(__LINE__);
                     71: #endif
                     72: #if (SCHAR_MIN > -127)
                     73:        complain(__LINE__);
                     74: #endif
                     75: #if (SCHAR_MAX < 127)
                     76:        complain(__LINE__);
                     77: #endif
                     78: #if (UCHAR_MAX < 255U)
                     79:        complain(__LINE__);
                     80: #endif
                     81: #if (CHAR_MIN != SCHAR_MIN && CHAR_MIN != 0)
                     82:        complain(__LINE__);
                     83: #endif
                     84: #if (CHAR_MAX != SCHAR_MAX && CHAR_MAX != UCHAR_MAX)
                     85:        complain(__LINE__);
                     86: #endif
                     87: #if (SHRT_MIN > -32767)
                     88:        complain(__LINE__);
                     89: #endif
                     90: #if (SHRT_MAX < 32767)
                     91:        complain(__LINE__);
                     92: #endif
                     93: #if (USHRT_MAX < 65535U)
                     94:        complain(__LINE__);
                     95: #endif
                     96: #if (INT_MIN > -32767)
                     97:        complain(__LINE__);
                     98: #endif
                     99: #if (INT_MAX < 32767)
                    100:        complain(__LINE__);
                    101: #endif
                    102: #if (UINT_MAX < 65535U)
                    103:        complain(__LINE__);
                    104: #endif
                    105: #if (LONG_MIN > -2147483647)
                    106:        complain(__LINE__);
                    107: #endif
                    108: #if (LONG_MAX <  2147483647)
                    109:        complain(__LINE__);
                    110: #endif
                    111: #if (ULONG_MAX < 0xffffffff)
                    112:        complain(__LINE__);
                    113: #endif
                    114: #endif /* SKIP_1992_PENDING */
                    115: 
                    116: #ifndef SKIP_1992_PENDING
                    117: /* Review Board meeting August 1992 approved update item #511:
                    118:  * "There should be explicit tests that the type of the <limits.h>
                    119:  * constants is the appropriate type.  This probably means a set of
                    120:  * sizeof tests."
                    121:  * As of now, this conformance test is in the "Pending" category.
                    122:  * It will not become a formal certification requirement until the
                    123:  * 1993 Review Board meeting.
                    124:  */
                    125: if(sizeof(SCHAR_MIN) != sizeof(int))
                    126:        complain(__LINE__);
                    127: if(sizeof(SCHAR_MAX) != sizeof(int))
                    128:        complain(__LINE__);
                    129: if(sizeof(UCHAR_MAX) != sizeof(int))
                    130:        complain(__LINE__);
                    131: if(sizeof(CHAR_MIN) != sizeof(int))
                    132:        complain(__LINE__);
                    133: if(sizeof(CHAR_MAX) != sizeof(int))
                    134:        complain(__LINE__);
                    135: if(sizeof(SHRT_MIN) != sizeof(int))
                    136:        complain(__LINE__);
                    137: if(sizeof(SHRT_MAX) != sizeof(int))
                    138:        complain(__LINE__);
                    139: if(sizeof(USHRT_MAX) != sizeof(int))
                    140:        complain(__LINE__);
                    141: if(sizeof(INT_MIN) != sizeof(int))
                    142:        complain(__LINE__);
                    143: if(sizeof(INT_MAX) != sizeof(int))
                    144:        complain(__LINE__);
                    145: if(sizeof(UINT_MAX) != sizeof(int))
                    146:        complain(__LINE__);
                    147: if(sizeof(LONG_MIN) != sizeof(long))
                    148:        complain(__LINE__);
                    149: if(sizeof(LONG_MAX) != sizeof(long))
                    150:        complain(__LINE__);
                    151: if(sizeof(ULONG_MAX) != sizeof(unsigned long))
                    152:        complain(__LINE__);
                    153: #endif /* SKIP_1992_PENDING */
                    154: 
                    155: 
                    156: #if !defined(CHAR_BIT) ||  !defined(SCHAR_MIN) ||  !defined(SCHAR_MAX) ||  !defined(UCHAR_MAX) ||  !defined(CHAR_MIN)
                    157:        complain(__LINE__);
                    158: #endif
                    159: #if !defined(CHAR_MAX) ||  !defined(SHRT_MIN) ||  !defined(SHRT_MAX) ||  !defined(USHRT_MAX) ||  !defined(INT_MIN)
                    160:        complain(__LINE__);
                    161: #endif
                    162: #if !defined(INT_MAX) ||  !defined(UINT_MAX) ||  !defined(LONG_MIN) ||  !defined(LONG_MAX) ||  !defined(ULONG_MAX)
                    163:        complain(__LINE__);
                    164: #endif
                    165: 
                    166: /* ANSI8809 - Each limit must be properly represented to equal its value stored in appropriate object */
                    167:        #if ANSI8809
                    168:        {
                    169:        char cmin = CHAR_MIN;                   char c = CHAR_MAX;
                    170:        signed char scmin = SCHAR_MIN;  signed char sc = SCHAR_MAX;     unsigned char uc = UCHAR_MAX;
                    171:        short smin = SHRT_MIN;                  short s = SHRT_MAX;                     unsigned short us = USHRT_MAX;
                    172:        int imin = INT_MIN;                             int i = INT_MAX;                        unsigned int ui = UINT_MAX;
                    173:        long Lmin = LONG_MIN;                   long L = LONG_MAX;                      unsigned long uL = ULONG_MAX;
                    174:        
                    175:        if (CHAR_MIN != cmin)
                    176:                complain(__LINE__);
                    177:        if (CHAR_MAX != c)
                    178:                complain(__LINE__);
                    179:        if (SCHAR_MIN != scmin)
                    180:                complain(__LINE__);
                    181:        if (SCHAR_MAX != sc)
                    182:                complain(__LINE__);
                    183:        if (UCHAR_MAX != uc)
                    184:                complain(__LINE__);
                    185:        if (SHRT_MIN != smin)
                    186:                complain(__LINE__);
                    187:        if (SHRT_MAX != s)
                    188:                complain(__LINE__);
                    189:        if (USHRT_MAX != us)
                    190:                complain(__LINE__);
                    191:        if (INT_MIN != imin)
                    192:                complain(__LINE__);
                    193:        if (INT_MAX != i)
                    194:                complain(__LINE__);
                    195: 
                    196: 
                    197: 
                    198:        if (UINT_MAX != ui)
                    199:                complain(__LINE__);
                    200:        if (LONG_MIN != Lmin)
                    201:                complain(__LINE__);
                    202:        if (LONG_MAX != L)
                    203:                complain(__LINE__);
                    204:        if (ULONG_MAX != uL)
                    205:                complain(__LINE__);
                    206:        }
                    207:        #endif  /* ANSI8809 */
                    208:        }
                    209: #else  /* SKIP41 */
                    210: int skp41b = 1;        /* must have one def */
                    211: #endif /* SKIP41 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.