diff options
author | Dario Domizioli <dario.domizioli@gmail.com> | 2014-05-23 12:13:25 +0000 |
---|---|---|
committer | Dario Domizioli <dario.domizioli@gmail.com> | 2014-05-23 12:13:25 +0000 |
commit | 13a0a38fe087a0d10f8038ed647c673da6d14370 (patch) | |
tree | 7ac71143fed5dd7d8d1f7b8e3d327bf2053c805a /clang/test/Parser/pragma-optimize-diagnostics.cpp | |
parent | e1e9a4e2eca7d78f3bb1f100454e4c8e661cbfef (diff) | |
download | bcm5719-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.cpp | 28 |
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 |