| /* Test pragma pop_macro and push_macro directives from |
| http://msdn.microsoft.com/en-us/library/hsttss76.aspx */ |
| // pop_macro: Sets the value of the macro_name macro to the value on the top of |
| // the stack for this macro. |
| // #pragma pop_macro("macro_name") |
| // push_macro: Saves the value of the macro_name macro on the top of the stack |
| // #pragma push_macro("macro_name") |
| // RUN: %clang_cc1 -fms-extensions -E %s -o - | FileCheck %s |
| // Have a stray 'push' to show we don't crash when having imbalanced |
| // The sequence push, define/undef, pop caused problems if macro was not |
| #pragma push_macro("PREVIOUSLY_UNDEFINED1") |
| #undef PREVIOUSLY_UNDEFINED1 |
| #pragma pop_macro("PREVIOUSLY_UNDEFINED1") |
| #ifndef PREVIOUSLY_UNDEFINED1 |
| #pragma push_macro("PREVIOUSLY_UNDEFINED2") |
| #define PREVIOUSLY_UNDEFINED2 |
| #pragma pop_macro("PREVIOUSLY_UNDEFINED2") |
| #ifndef PREVIOUSLY_UNDEFINED2 |