xref: /llvm-project/clang/test/Parser/pragma-optimize-diagnostics.cpp (revision 13a0a38fe087a0d10f8038ed647c673da6d14370)
1*13a0a38fSDario Domizioli // RUN: %clang_cc1 -fsyntax-only -verify %s
2*13a0a38fSDario Domizioli 
3*13a0a38fSDario Domizioli #pragma clang optimize off
4*13a0a38fSDario Domizioli 
5*13a0a38fSDario Domizioli #pragma clang optimize on
6*13a0a38fSDario Domizioli 
7*13a0a38fSDario Domizioli // Extra arguments
8*13a0a38fSDario Domizioli #pragma clang optimize on top of spaghetti  // expected-error {{unexpected extra argument 'top' to '#pragma clang optimize'}}
9*13a0a38fSDario Domizioli 
10*13a0a38fSDario Domizioli // Wrong argument
11*13a0a38fSDario Domizioli #pragma clang optimize something_wrong  // expected-error {{unexpected argument 'something_wrong' to '#pragma clang optimize'; expected 'on' or 'off'}}
12*13a0a38fSDario Domizioli 
13*13a0a38fSDario Domizioli // No argument
14*13a0a38fSDario Domizioli #pragma clang optimize // expected-error {{missing argument to '#pragma clang optimize'; expected 'on' or 'off'}}
15*13a0a38fSDario Domizioli 
16*13a0a38fSDario Domizioli // Check that macros can be used in the pragma
17*13a0a38fSDario Domizioli #define OFF off
18*13a0a38fSDario Domizioli #define ON on
19*13a0a38fSDario Domizioli #pragma clang optimize OFF
20*13a0a38fSDario Domizioli #pragma clang optimize ON
21*13a0a38fSDario Domizioli 
22*13a0a38fSDario Domizioli // Check that _Pragma can also be used to address the use case where users want
23*13a0a38fSDario Domizioli // to define optimization control macros to abstract out which compiler they are
24*13a0a38fSDario Domizioli // using.
25*13a0a38fSDario Domizioli #define OPT_OFF _Pragma("clang optimize off")
26*13a0a38fSDario Domizioli #define OPT_ON _Pragma("clang optimize on")
27*13a0a38fSDario Domizioli OPT_OFF
28*13a0a38fSDario Domizioli OPT_ON
29