Blob Blame History Raw
/* n_13_7.c:    Short-circuit evaluation of #if expression. */

/* 13.7:    10/0 or 10/MACRO_0 are never evaluated, "divide by zero" error
        cannot occur.   */
#define MACRO_0     0

/*  Valid block */
#if     0 && 10 / 0
    Block to be skipped
#endif
#if     not_defined && 10 / not_defined
    Block to be skipped
#endif
#if     MACRO_0 && 10 / MACRO_0 > 1
    Block to be skipped
#endif
#if     MACRO_0 ? 10 / MACRO_0 : 0
    Block to be skipped
#endif
#if     MACRO_0 == 0 || 10 / MACRO_0 > 1
    Valid block
#else
    Block to be skipped
#endif

/* { dg-do preprocess }
   { dg-options "-ansi -w" }
   { dg-final { if ![file exist n_13_7.i] { return }                    } }
   { dg-final { if \{ [grep n_13_7.i "Valid block"] != ""       \} \{   } }
   { dg-final { return \}                                               } }
   { dg-final { fail "n_13_7.c: short-circuit evaluation of #if expression" } }
 */