/* demonstrate gcc -E bug
 *
 * Tested on:
 * gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
 * Copyright (C) 2004 Free Software Foundation, Inc.
 * This is free software; see the source for copying conditions.  There is NO
 * warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * command: gcc -E -o gcc-E-truncation.E gcc-E-truncation.c
 *
 * Result:
 *
 * - truncated output in gcc-E-truncation.E (no "break").
 *   (The long line stops at 4k characters and all following lines are missing)
 *
 * - gcc returns a 0 status and no diagnostics are produced.
 *
 * Without the -o flag, truncation doesn't happen.
 *
 * Summary: silent truncation.
 */

#define a (void)0;
#define b a a a a
#define c b b b b
#define d c c c c
#define e d d d d
#define f e e e e
// #define g f f f f
// #define h g g g g
// #define i h h h h
// #define j i i i i
// #define k j j j j
// #define l k k k k
// #define m l l l l
// #define n m m m m
// #define o n n n n
// #define p o o o o


int
main()
{
    /* works */
    d
    return 0;
    /* works */
    e
    continue;
    /* fails */
    f
    break;
}

