| /* 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 |
| // for this macro. |
| // #pragma push_macro("macro_name") |
| // |
| // RUN: %clang_cc1 -fms-extensions -E %s -o - | FileCheck %s |
| |
| #define X 1 |
| #define Y 2 |
| int pmx0 = X; |
| int pmy0 = Y; |
| #define Y 3 |
| #pragma push_macro("Y") |
| #pragma push_macro("X") |
| int pmx1 = X; |
| #define X 2 |
| int pmx2 = X; |
| #pragma pop_macro("X") |
| int pmx3 = X; |
| #pragma pop_macro("Y") |
| int pmy1 = Y; |
| |
| // CHECK: int pmx0 = 1 |
| // CHECK: int pmy0 = 2 |
| // CHECK: int pmx1 = 1 |
| // CHECK: int pmx2 = 2 |
| // CHECK: int pmx3 = 1 |
| // CHECK: int pmy1 = 3 |