(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
builtin-redefine.c
       1  /* Test -Wno-builtin-macro-redefined warnings.  */
       2  
       3  /* { dg-do compile } */
       4  /* { dg-options "-Wno-builtin-macro-redefined -U__DATE__ -D__TIME__=X" } */
       5  
       6  /* Check date, time, and datestamp built-ins warnings may be suppressed.  */
       7  
       8  #if defined(__DATE__)
       9  #error "__DATE__ is defined, but should not be (-U command line error)"
      10  /* { dg-bogus "__DATE__ is defined" "" { target *-*-* } .-1 } */
      11  #endif
      12  
      13  #if __TIME__ != X
      14  #error "__TIME__ is not defined as expected (-D command line error)"
      15  /* { dg-bogus "__TIME__ is not defined" "" { target *-*-* } .-1 } */
      16  #endif
      17  
      18  #if !defined(__TIMESTAMP__)
      19  #error "__TIMESTAMP__ is not defined (built-in macro expectation error)"
      20  /* { dg-bogus "__TIMESTAMP__ is not defined" "" { target *-*-* } .-1 } */
      21  #endif
      22  
      23  
      24  #undef __TIME__              /* Undefine while defined.  */
      25  #undef __TIME__              /* Undefine while already undefined.  */
      26  
      27  #define __TIME__ "X"         /* Define while undefined.  */
      28  #define __TIME__ "X"         /* Re-define while defined.  */ /* { dg-line time_prev } */
      29  
      30  #define __TIME__ "Y"         /* { dg-warning "-:\"__TIME__\" redefined" } */
      31  /* { dg-message "-:previous definition" "" { target *-*-* } time_prev } */
      32  
      33  #undef __TIME__              /* Undefine while defined.  */
      34  
      35  
      36  #undef __DATE__              /* Undefine while already undefined.  */
      37  
      38  #define __DATE__ "X"         /* Define while undefined.  */
      39  #define __DATE__ "X"         /* Re-define while defined.  */ /* { dg-line date_prev } */
      40  
      41  #define __DATE__ "Y"         /* { dg-warning "-:\"__DATE__\" redefined" } */
      42  /* { dg-message "-:previous definition" "" { target *-*-* } date_prev } */
      43  
      44  #undef __DATE__              /* Undefine while defined.  */
      45  
      46  
      47  #define __TIMESTAMP__ "X"    /* Define while already defined.  */
      48  #define __TIMESTAMP__ "X"    /* Re-define while defined.  */ /* { dg-line timestamp_prev } */
      49  
      50  #define __TIMESTAMP__ "Y"    /* { dg-warning "-:\"__TIMESTAMP__\" redefined" } */
      51  /* { dg-message "-:previous definition" "" { target *-*-* } timestamp_prev } */
      52  
      53  #undef __TIMESTAMP__         /* Undefine while defined.  */
      54  
      55  
      56  /* Check other built-ins with warnings that may be suppressed.  */
      57  
      58  #if !defined(__FILE__) || !defined(__BASE_FILE__)
      59  #error "Expected built-in is not defined (built-in macro expectation error)"
      60  /* { dg-bogus "Expected built-in is not defined" "" { target *-*-* } .-1 } */
      61  #endif
      62  
      63  #define __FILE__ "X"         /* Define while already defined.  */
      64  #define __BASE_FILE__ "X"    /* Define while already defined.  */
      65  
      66  
      67  /* Check selected built-ins not affected by warning suppression. */
      68  
      69  #if !defined(__LINE__) || !defined(__INCLUDE_LEVEL__) || !defined(__COUNTER__)
      70  #error "Expected built-in is not defined (built-in macro expectation error)"
      71  /* { dg-bogus "Expected built-in is not defined" "" { target *-*-* } .-1 } */
      72  #endif
      73  
      74  #define __LINE__ 0           /* { dg-warning "-:\"__LINE__\" redef" } */
      75  #define __INCLUDE_LEVEL__ 0  /* { dg-warning "-:\"__INCLUDE_LEVEL__\" redef" } */
      76  #define __COUNTER__ 0        /* { dg-warning "-:\"__COUNTER__\" redef" } */
      77  
      78  
      79  int unused;  /* Silence `ISO C forbids an empty translation unit' warning.  */