Disable Function Optimization with Attribute
September 10, 2020Less than 1 minute
Disable Function Optimization with Attribute
Single function definition
Clang
// Clang
// GNU-style attribute
__attribute__((optnone))
int foo(){}
// C++11 attribute
[[clang::optnone]]
int foo(){}
GCC
__attribute__((optimize("O0")))
int foo(){}
Multiply function definition
Clang
#pragma clang optimize off
// This function will be decorated with optnone.
int foo() {}
// optnone conflicts with always_inline, so bar() will not be decorated.
__attribute__((always_inline)) int bar(){}
#pragma clang optimize on
Visual Studio
#pragma optimize( "", off )
/* unoptimized code section */
#pragma optimize( "", on )
GCC
#pragma GCC push_options
#pragma GCC optimize("O0")
/* unoptimized code section */
#pragma GCC pop_options
Reference
Clang Language Extensions — Clang 8 documentation (bcain-llvm.readthedocs.io)
optimize pragma | Microsoft Learn
[Tutorial] GCC Optimization Pragmas - Codeforces