Blame test-t/n_post99.t

Packit Service 8bf002
/*
Packit Service 8bf002
 *      n_post99.t
Packit Service 8bf002
 *   Samples to test "Post-C99" preprocessing.
Packit Service 8bf002
 *
Packit Service 8bf002
 * 2002/08      made public                                     kmatsui
Packit Service 8bf002
 * 2003/03      slightly revised                                kmatsui
Packit Service 8bf002
 */
Packit Service 8bf002
Packit Service 8bf002
Packit Service 8bf002
/* n_dslcom:    // is a comment of C99. */
Packit Service 8bf002
/*  a ; */ 
Packit Service 8bf002
    a;  // is a comment of C99
Packit Service 8bf002
Packit Service 8bf002
Packit Service 8bf002
/* n_ppnum.t:   Preprocessing number token *p+* */
Packit Service 8bf002
/* Undefined on C90, because '+A' is not a valid pp-token.  */
Packit Service 8bf002
Packit Service 8bf002
#define A   3
Packit Service 8bf002
#define glue( a, b) a ## b
Packit Service 8bf002
/*  12p+A ; */
Packit Service 8bf002
    glue( 12p+, A);
Packit Service 8bf002
Packit Service 8bf002
Packit Service 8bf002
/* n_line.t:    line number argument of #line   */
Packit Service 8bf002
/* C99: Range of line number in #line directive is [1..2147483647]  */
Packit Service 8bf002
Packit Service 8bf002
#line   2147483647
Packit Service 8bf002
    __LINE__;       /*  2147483647 ;    */
Packit Service 8bf002
#line   30  /* Resume the real line number  */
Packit Service 8bf002
    __LINE__;
Packit Service 8bf002
Packit Service 8bf002
Packit Service 8bf002
/* n_llong.t:   long long in #if expression */
Packit Service 8bf002
Packit Service 8bf002
#if 12345678901234567890 < 13345678901234567890
Packit Service 8bf002
    "long long #if expression is implemented."
Packit Service 8bf002
#else
Packit Service 8bf002
    "long long #if expression is not implemented."
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
Packit Service 8bf002
/* n_vargs.t:   Macro of variable arguments */
Packit Service 8bf002
/* from C99 Standard 6.10.3 Examples        */
Packit Service 8bf002
    #define debug( ...) fprintf( stderr, __VA_ARGS__)
Packit Service 8bf002
    #define showlist( ...)  puts( #__VA_ARGS__)
Packit Service 8bf002
    #define report( test, ...)  ((test) ? puts( #test)  \
Packit Service 8bf002
            : printf( __VA_ARGS__))
Packit Service 8bf002
    {
Packit Service 8bf002
        /* fprintf ( stderr , "Flag" ) ;    */
Packit Service 8bf002
    debug( "Flag");
Packit Service 8bf002
        /* fprintf ( stderr , "X = %d\n" , x ) ;    */
Packit Service 8bf002
    debug( "X = %d\n", x);
Packit Service 8bf002
        /* puts ( "The first , second , and third items ." ) ;  */
Packit Service 8bf002
    showlist( The first, second, and third items.);
Packit Service 8bf002
        /* ( ( x > y ) ? puts ( "x > y" ) : printf ( "x is %d but y is %d", x , y ) ) ; */
Packit Service 8bf002
    report( x>y, "x is %d but y is %d", x, y);
Packit Service 8bf002
    }
Packit Service 8bf002
Packit Service 8bf002
Packit Service 8bf002
/* n_pragma.t:  _Pragma() operator  */
Packit Service 8bf002
/* based on the proposal to C99 by Bill Homer   */
Packit Service 8bf002
Packit Service 8bf002
#define Machine_B
Packit Service 8bf002
Packit Service 8bf002
#include "pragmas.h"
Packit Service 8bf002
Packit Service 8bf002
/* #pragma vfunction    */
Packit Service 8bf002
Fast_call
Packit Service 8bf002
void f(int n, double * a, double * b) {
Packit Service 8bf002
/* #pragma ivdep    */
Packit Service 8bf002
    Independent
Packit Service 8bf002
    while(n-- > 0) {
Packit Service 8bf002
        *a++ += *b++;
Packit Service 8bf002
    }
Packit Service 8bf002
}
Packit Service 8bf002
Packit Service 8bf002
#define f(N, A, B)  \
Packit Service 8bf002
{   int n = (N), double * a = (A), double * b = (B); \
Packit Service 8bf002
    Independent while(n-- > 0) { *a++ += *b++; } \
Packit Service 8bf002
}
Packit Service 8bf002
Packit Service 8bf002
#define EXPRAG(x) _Pragma(#x)
Packit Service 8bf002
#define PRAGMA(x) EXPRAG(x)
Packit Service 8bf002
#define LIBFUNC xyz
Packit Service 8bf002
Packit Service 8bf002
int libfunc() { ... }
Packit Service 8bf002
Packit Service 8bf002
/* Direct the linker to define alternate entry points for libfunc. */
Packit Service 8bf002
/* #pragma duplicate libfunc as ( lib_func , xyz )  */
Packit Service 8bf002
PRAGMA( duplicate libfunc as (lib_func,LIBFUNC) )
Packit Service 8bf002
Packit Service 8bf002
Packit Service 8bf002
/* n_nularg.t:  Empty argument of macro call.   */
Packit Service 8bf002
Packit Service 8bf002
#define ARG( a)         # a
Packit Service 8bf002
#define EMPTY
Packit Service 8bf002
#define SHOWN( n)       printf( "%s : %d\n", # n, n)
Packit Service 8bf002
#define SHOWS( s)       printf( "%s : %s\n", # s, ARG( s))
Packit Service 8bf002
#define add( a, b)      (a + b)
Packit Service 8bf002
#define sub( a, b)      (a - b)
Packit Service 8bf002
#define math( op, a, b)     op( a, b)
Packit Service 8bf002
#define APPEND( a, b)       a ## b
Packit Service 8bf002
Packit Service 8bf002
/*  printf ( "%s : %d\n" , "math ( sub , , y )" , ( - y ) ) ;    */
Packit Service 8bf002
    SHOWN( math( sub, , y));
Packit Service 8bf002
Packit Service 8bf002
/*  printf ( "%s : %s\n" , "EMPTY" , "" ) ;  */
Packit Service 8bf002
    SHOWS( EMPTY);
Packit Service 8bf002
Packit Service 8bf002
/*  printf ( "%s : %s\n" , "APPEND ( CON , 1 )" , "CON1" ) ; */
Packit Service 8bf002
    SHOWS( APPEND( CON, 1));
Packit Service 8bf002
Packit Service 8bf002
/*  printf ( "%s : %s\n" , "APPEND ( CON , )" , "CON" ) ;    */
Packit Service 8bf002
    SHOWS( APPEND( CON, ));
Packit Service 8bf002
Packit Service 8bf002
/*  printf ( "%s : %s\n" , "APPEND( , )" , "" ) ;   */
Packit Service 8bf002
    SHOWS( APPEND( , ));
Packit Service 8bf002
Packit Service 8bf002
Packit Service 8bf002
/* n_stdmac.t:  C99 Standard pre-defined macros.    */
Packit Service 8bf002
Packit Service 8bf002
/*  199901L ;   */
Packit Service 8bf002
    __STDC_VERSION__;
Packit Service 8bf002
Packit Service 8bf002
/*  1 ; or 0 ;  */
Packit Service 8bf002
    __STDC_HOSTED__;
Packit Service 8bf002
Packit Service 8bf002
Packit Service 8bf002
/* n_tlimit.t:  Tests of translation limits.   */
Packit Service 8bf002
Packit Service 8bf002
/* 37.1L:    Number of parameters of macro definition: at least 127. */
Packit Service 8bf002
Packit Service 8bf002
#define glue127(    \
Packit Service 8bf002
    a0, b0, c0, d0, e0, f0, g0, h0, i0, j0, k0, l0, m0, n0, o0, p0, \
Packit Service 8bf002
    a1, b1, c1, d1, e1, f1, g1, h1, i1, j1, k1, l1, m1, n1, o1, p1, \
Packit Service 8bf002
    a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2, \
Packit Service 8bf002
    a3, b3, c3, d3, e3, f3, g3, h3, i3, j3, k3, l3, m3, n3, o3, p3, \
Packit Service 8bf002
    a4, b4, c4, d4, e4, f4, g4, h4, i4, j4, k4, l4, m4, n4, o4, p4, \
Packit Service 8bf002
    a5, b5, c5, d5, e5, f5, g5, h5, i5, j5, k5, l5, m5, n5, o5, p5, \
Packit Service 8bf002
    a6, b6, c6, d6, e6, f6, g6, h6, i6, j6, k6, l6, m6, n6, o6, p6, \
Packit Service 8bf002
    a7, b7, c7, d7, e7, f7, g7, h7, i7, j7, k7, l7, m7, n7, o7)     \
Packit Service 8bf002
    a0 ## b0 ## c0 ## d0 ## e0 ## f0 ## g0 ## h0 ## \
Packit Service 8bf002
    p0 ## p1 ## p2 ## p3 ## p4 ## p5 ## p6 ## o7
Packit Service 8bf002
Packit Service 8bf002
/* 37.2L:    Number of arguments of macro call: at least 127.    */
Packit Service 8bf002
Packit Service 8bf002
/*  A0B0C0D0E0F0G0H0P0P1P2P3P4P5P6O7 ;  */
Packit Service 8bf002
    glue127(
Packit Service 8bf002
    A0, B0, C0, D0, E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0,
Packit Service 8bf002
    A1, B1, C1, D1, E1, F1, G1, H1, I1, J1, K1, L1, M1, N1, O1, P1,
Packit Service 8bf002
    A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, K2, L2, M2, N2, O2, P2,
Packit Service 8bf002
    A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, K3, L3, M3, N3, O3, P3,
Packit Service 8bf002
    A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, K4, L4, M4, N4, O4, P4,
Packit Service 8bf002
    A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, K5, L5, M5, N5, O5, P5,
Packit Service 8bf002
    A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, K6, L6, M6, N6, O6, P6,
Packit Service 8bf002
    A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, K7, L7, M7, N7, O7);
Packit Service 8bf002
Packit Service 8bf002
/* 37.3L:   Significant initial characters in an internal identifier or a
Packit Service 8bf002
        macro name: at least 63 bytes.  */
Packit Service 8bf002
Packit Service 8bf002
    int
Packit Service 8bf002
A23456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef = 63;
Packit Service 8bf002
Packit Service 8bf002
/*  37.4L:  Nested conditional inclusion: at least 63 level.    */
Packit Service 8bf002
Packit Service 8bf002
/*  ifdef_nest = 0x3f ; */
Packit Service 8bf002
#define     X3F
Packit Service 8bf002
#include    "ifdef15.h"
Packit Service 8bf002
Packit Service 8bf002
/*  37.5L:  Nested source file inclusion: at least 15 level.    */
Packit Service 8bf002
Packit Service 8bf002
/*  nest = 0x0f ;   */
Packit Service 8bf002
#define     X0F
Packit Service 8bf002
#include    "nest1.h"
Packit Service 8bf002
Packit Service 8bf002
/*  37.6L:  Parenthesized expression: at least 63 level.    */
Packit Service 8bf002
Packit Service 8bf002
/*  nest = 63 ; */
Packit Service 8bf002
#if \
Packit Service 8bf002
        (0x00 + (0x01 - (0x02 + (0x03 - (0x04 + (0x05 - (0x06 + (0x07 - \
Packit Service 8bf002
        (0x08 + (0x09 - (0x0A + (0x0B - (0x0C + (0x0D - (0x0E + (0x0F - \
Packit Service 8bf002
        (0x10 + (0x11 - (0x12 + (0x13 - (0x14 + (0x15 - (0x16 + (0x17 - \
Packit Service 8bf002
        (0x18 + (0x19 - (0x1A + (0x1B - (0x1C + (0x1D - (0x1E + (0x1F - \
Packit Service 8bf002
        (0x20 + (0x21 - (0x22 + (0x23 - (0x24 + (0x25 - (0x26 + (0x27 - \
Packit Service 8bf002
        (0x28 + (0x29 - (0x2A + (0x2B - (0x2C + (0x2D - (0x2E + (0x2F - \
Packit Service 8bf002
        (0x30 + (0x31 - (0x32 + (0x33 - (0x34 + (0x35 - (0x36 + (0x37 - \
Packit Service 8bf002
        (0x38 + (0x39 - (0x3A + (0x3B - (0x3C + (0x3D - 0x3E)           \
Packit Service 8bf002
        )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))   \
Packit Service 8bf002
        == -1
Packit Service 8bf002
    nest = 63;
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
/* 37.7L:   Characters in a string (after concatenation)
Packit Service 8bf002
        : at least 4095 bytes.  */
Packit Service 8bf002
Packit Service 8bf002
/*  4095 bytes long.    */
Packit Service 8bf002
    char    *string4093 =
Packit Service 8bf002
"123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
1123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
2123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
3123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
4123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
5123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
6123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
7123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
8123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
9123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
a123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
b123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
c123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
d123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
e123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
f123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
A123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
1123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
2123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
3123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
4123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
5123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
6123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
7123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
8123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
9123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
a123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
b123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
c123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
d123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
e123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
f123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
B123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
1123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
2123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
3123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
4123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
5123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
6123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
7123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
8123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
9123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
a123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
b123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
c123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
d123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
e123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
f123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
C123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
1123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
2123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
3123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
4123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
5123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
6123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
7123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
8123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
9123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
a123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
b123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
c123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
d123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
e123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\
Packit Service 8bf002
f123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd"
Packit Service 8bf002
;
Packit Service 8bf002
Packit Service 8bf002
/* 37.8L:   Length of logical source line: at least 4095 bytes. */
Packit Service 8bf002
Packit Service 8bf002
#include    "long4095.h"
Packit Service 8bf002
Packit Service 8bf002
/* 37.9L:   Number of macro definitions: at least 4095. */
Packit Service 8bf002
Packit Service 8bf002
#undef  ARG
Packit Service 8bf002
#include    "m4095.h"
Packit Service 8bf002
Packit Service 8bf002
/*  0x0fff ;    */
Packit Service 8bf002
    GBM;
Packit Service 8bf002