summaryrefslogtreecommitdiffstats
path: root/test/Preprocessor/pragma-pushpop-macro.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Preprocessor/pragma-pushpop-macro.c')
-rw-r--r--test/Preprocessor/pragma-pushpop-macro.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/Preprocessor/pragma-pushpop-macro.c b/test/Preprocessor/pragma-pushpop-macro.c
new file mode 100644
index 0000000..87cceaa
--- /dev/null
+++ b/test/Preprocessor/pragma-pushpop-macro.c
@@ -0,0 +1,33 @@
+/* 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
OpenPOWER on IntegriCloud