| Chris Lattner | c0a585d | 2010-08-17 15:55:45 +0000 | [diff] [blame] | 1 | /* Test pragma pop_macro and push_macro directives from | 
|  | 2 | http://msdn.microsoft.com/en-us/library/hsttss76.aspx */ | 
|  | 3 |  | 
|  | 4 | // pop_macro: Sets the value of the macro_name macro to the value on the top of | 
|  | 5 | // the stack for this macro. | 
|  | 6 | // #pragma pop_macro("macro_name") | 
|  | 7 | // push_macro: Saves the value of the macro_name macro on the top of the stack | 
|  | 8 | // for this macro. | 
|  | 9 | // #pragma push_macro("macro_name") | 
|  | 10 | // | 
|  | 11 | // RUN: %clang_cc1 -fms-extensions -E %s -o - | FileCheck %s | 
|  | 12 |  | 
|  | 13 | #define X 1 | 
|  | 14 | #define Y 2 | 
|  | 15 | int pmx0 = X; | 
|  | 16 | int pmy0 = Y; | 
|  | 17 | #define Y 3 | 
|  | 18 | #pragma push_macro("Y") | 
|  | 19 | #pragma push_macro("X") | 
|  | 20 | int pmx1 = X; | 
|  | 21 | #define X 2 | 
|  | 22 | int pmx2 = X; | 
|  | 23 | #pragma pop_macro("X") | 
|  | 24 | int pmx3 = X; | 
|  | 25 | #pragma pop_macro("Y") | 
|  | 26 | int pmy1 = Y; | 
|  | 27 |  | 
|  | 28 | // CHECK: int pmx0 = 1 | 
|  | 29 | // CHECK: int pmy0 = 2 | 
|  | 30 | // CHECK: int pmx1 = 1 | 
|  | 31 | // CHECK: int pmx2 = 2 | 
|  | 32 | // CHECK: int pmx3 = 1 | 
|  | 33 | // CHECK: int pmy1 = 3 |