Check in LLVM r95781.
diff --git a/test/Preprocessor/optimize.c b/test/Preprocessor/optimize.c
new file mode 100644
index 0000000..c820ded
--- /dev/null
+++ b/test/Preprocessor/optimize.c
@@ -0,0 +1,29 @@
+// RUN: %clang_cc1 -Eonly %s -DOPT_O2 -O2 -verify
+#ifdef OPT_O2
+  #ifndef __OPTIMIZE__
+    #error "__OPTIMIZE__ not defined"
+  #endif
+  #ifdef __OPTIMIZE_SIZE__
+    #error "__OPTIMIZE_SIZE__ defined"
+  #endif
+#endif
+
+// RUN: %clang_cc1 -Eonly %s -DOPT_O0 -O0 -verify
+#ifdef OPT_O0
+  #ifdef __OPTIMIZE__
+    #error "__OPTIMIZE__ defined"
+  #endif
+  #ifdef __OPTIMIZE_SIZE__
+    #error "__OPTIMIZE_SIZE__ defined"
+  #endif
+#endif
+
+// RUN: %clang_cc1 -Eonly %s -DOPT_OS -Os -verify
+#ifdef OPT_OS
+  #ifndef __OPTIMIZE__
+    #error "__OPTIMIZE__ not defined"
+  #endif
+  #ifdef __OPTIMIZE_SIZE__
+    #error "__OPTIMIZE_SIZE__ not defined"
+  #endif
+#endif