summaryrefslogtreecommitdiffstats
path: root/clang/test/Parser/pragma-optimize-diagnostics.cpp
diff options
context:
space:
mode:
authorDario Domizioli <dario.domizioli@gmail.com>2014-05-23 12:13:25 +0000
committerDario Domizioli <dario.domizioli@gmail.com>2014-05-23 12:13:25 +0000
commit13a0a38fe087a0d10f8038ed647c673da6d14370 (patch)
tree7ac71143fed5dd7d8d1f7b8e3d327bf2053c805a /clang/test/Parser/pragma-optimize-diagnostics.cpp
parente1e9a4e2eca7d78f3bb1f100454e4c8e661cbfef (diff)
downloadbcm5719-llvm-13a0a38fe087a0d10f8038ed647c673da6d14370.tar.gz
bcm5719-llvm-13a0a38fe087a0d10f8038ed647c673da6d14370.zip
Implemented support for "pragma clang optimize on/off", based on attribute 'optnone'.
This patch implements support for selectively disabling optimizations on a range of function definitions through a pragma. The implementation is that all function definitions in the range are decorated with attribute 'optnone'. #pragma clang optimize off // All function definitions in here are decorated with 'optnone'. #pragma clang optimize on // Compilation resumes as normal. llvm-svn: 209510
Diffstat (limited to 'clang/test/Parser/pragma-optimize-diagnostics.cpp')
-rw-r--r--clang/test/Parser/pragma-optimize-diagnostics.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/clang/test/Parser/pragma-optimize-diagnostics.cpp b/clang/test/Parser/pragma-optimize-diagnostics.cpp
new file mode 100644
index 00000000000..af11a4ef815
--- /dev/null
+++ b/clang/test/Parser/pragma-optimize-diagnostics.cpp
@@ -0,0 +1,28 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+
+#pragma clang optimize off
+
+#pragma clang optimize on
+
+// Extra arguments
+#pragma clang optimize on top of spaghetti // expected-error {{unexpected extra argument 'top' to '#pragma clang optimize'}}
+
+// Wrong argument
+#pragma clang optimize something_wrong // expected-error {{unexpected argument 'something_wrong' to '#pragma clang optimize'; expected 'on' or 'off'}}
+
+// No argument
+#pragma clang optimize // expected-error {{missing argument to '#pragma clang optimize'; expected 'on' or 'off'}}
+
+// Check that macros can be used in the pragma
+#define OFF off
+#define ON on
+#pragma clang optimize OFF
+#pragma clang optimize ON
+
+// Check that _Pragma can also be used to address the use case where users want
+// to define optimization control macros to abstract out which compiler they are
+// using.
+#define OPT_OFF _Pragma("clang optimize off")
+#define OPT_ON _Pragma("clang optimize on")
+OPT_OFF
+OPT_ON
OpenPOWER on IntegriCloud