Blob Blame History Raw
/* n_bool.C */
/*
 * On C++:  'true' and 'false' are evaluated 1 and 0 respectively.
 *      and logical AND, logical OR are evaluated boolean.
 */

/*  Valid block;    */

#define MACRO   1
#define MACRO3  3

#if MACRO == true
    Valid block 1
#else
    non-Valid block;
#endif

#if (MACRO && MACRO3) == true
    Valid block 2
#else
    non-Valid block;
#endif

/* { dg-do preprocess }
   { dg-options "-std=c++98" }
   { dg-final { if ![file exist n_bool.i] { return }                    } }
   { dg-final { if \{ [grep n_bool.i "Valid block 1"] != ""     \} \{   } }
   { dg-final { if \{ [grep n_bool.i "Valid block 2"] != ""     \} \{   } }
   { dg-final { return \} \}                                            } }
   { dg-final { fail "n_bool.C: boolean literal"                        } }
 */