1 /* PR preprocessor/92296 */ 2 /* { dg-do preprocess } */ 3 /* { dg-options "-Wno-builtin-macro-redefined" } */ 4 5 #pragma push_macro("__TIMESTAMP__") 6 #undef __TIMESTAMP__ 7 #define __TIMESTAMP__ "Thu Oct 31 12:00:00 2019" 8 timestamp1 = __TIMESTAMP__ 9 #pragma pop_macro("__TIMESTAMP__") 10 timestamp2 = __TIMESTAMP__ 11 12 #pragma push_macro("__TIME__") 13 #undef __TIME__ 14 #define __TIME__ "12:00:00" 15 time1 = __TIME__ 16 #pragma pop_macro("__TIME__") 17 time2 = __TIME__ 18 19 #pragma push_macro("__DATE__") 20 #undef __DATE__ 21 #define __DATE__ "Oct 31 2019" 22 date1 = __DATE__ 23 #pragma pop_macro("__DATE__") 24 date2 = __DATE__ 25 26 #pragma push_macro("__FILE__") 27 #undef __FILE__ 28 #define __FILE__ "pr92296-3.c" 29 file1 = __FILE__ /* { dg-final { scan-file pr92296-2.i "file1 = \"pr92296-3.c\"" } } */ 30 #pragma pop_macro("__FILE__") 31 file2 = __FILE__ /* { dg-final { scan-file-not pr92296-2.i "file2 = \"pr92296-3.c\"" } } */ 32 33 #pragma push_macro("__BASE_FILE__") 34 #undef __BASE_FILE__ 35 #define __BASE_FILE__ "pr92296-4.c" 36 filebase1 = __BASE_FILE__ /* { dg-final { scan-file pr92296-2.i "filebase1 = \"pr92296-4.c\"" } } */ 37 #pragma pop_macro("__BASE_FILE__") 38 filebase2 = __BASE_FILE__ /* { dg-final { scan-file-not pr92296-2.i "filebase2 = \"pr92296-4.c\"" } } */ 39 40 #pragma push_macro("__LINE__") 41 #undef __LINE__ /* { dg-warning "undefining" } */ 42 #define __LINE__ 142 43 line1 = __LINE__ /* { dg-final { scan-file pr92296-2.i "line1 = 142" } } */ 44 #pragma pop_macro("__LINE__") 45 line2 = __LINE__ /* { dg-final { scan-file pr92296-2.i "line2 = 45" } } */ 46 47 #pragma push_macro("__INCLUDE_LEVEL__") 48 #undef __INCLUDE_LEVEL__ /* { dg-warning "undefining" } */ 49 #define __INCLUDE_LEVEL__ 42 50 includelevel1 = __INCLUDE_LEVEL__ /* { dg-final { scan-file pr92296-2.i "includelevel1 = 42" } } */ 51 #pragma pop_macro("__INCLUDE_LEVEL__") 52 includelevel2 = __INCLUDE_LEVEL__ /* { dg-final { scan-file pr92296-2.i "includelevel2 = 0" } } */ 53 54 #pragma push_macro("__COUNTER__") 55 #undef __COUNTER__ /* { dg-warning "undefining" } */ 56 #define __COUNTER__ 172 57 counter1 = __COUNTER__ /* { dg-final { scan-file pr92296-2.i "counter1 = 172" } } */ 58 #pragma pop_macro("__COUNTER__") 59 counter2 = __COUNTER__ /* { dg-final { scan-file-not pr92296-2.i "counter2 = 172" } } */ 60 61 #pragma push_macro("__has_attribute") 62 #undef __has_attribute /* { dg-warning "undefining" } */ 63 #define __has_attribute(x) 0 64 hasattr1 = __has_attribute(noreturn) /* { dg-final { scan-file pr92296-2.i "hasattr1 = 0" } } */ 65 #pragma pop_macro("__has_attribute") 66 hasattr2 = __has_attribute(noreturn) /* { dg-final { scan-file-not pr92296-2.i "hasattr2 = 0" } } */ 67 68 #pragma push_macro("__has_cpp_attribute") 69 #undef __has_cpp_attribute /* { dg-warning "undefining" } */ 70 #define __has_cpp_attribute(x) 0 71 hasattrcpp1 = __has_cpp_attribute(noreturn) /* { dg-final { scan-file pr92296-2.i "hasattrcpp1 = 0" } } */ 72 #pragma pop_macro("__has_cpp_attribute") 73 hasattrcpp2 = __has_cpp_attribute(noreturn) /* { dg-final { scan-file-not pr92296-2.i "hasattrcpp2 = 0" } } */ 74 75 #pragma push_macro("__has_builtin") 76 #undef __has_builtin /* { dg-warning "undefining" } */ 77 #define __has_builtin(x) 0 78 hasbuiltin1 = __has_builtin(__builtin_expect) /* { dg-final { scan-file pr92296-2.i "hasbuiltin1 = 0" } } */ 79 #pragma pop_macro("__has_builtin") 80 hasbuiltin2 = __has_builtin(__builtin_expect) /* { dg-final { scan-file pr92296-2.i "hasbuiltin2 = 1" } } */ 81