Blame test-t/n_post99.t

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