Version:
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix
This was made with commands:
echo 'int;' | clang -xc -O0 - -o /dev/null -\#\#\#
echo 'int;' | clang -xc -O1 - -o /dev/null -\#\#\#
echo 'int;' | clang -xc -O2 - -o /dev/null -\#\#\#
echo 'int;' | clang -xc -O3 - -o /dev/null -\#\#\#
echo 'int;' | clang -xc -Ofast - -o /dev/null -\#\#\#
echo 'int;' | clang -xc -Os - -o /dev/null -\#\#\#
echo 'int;' | clang -xc -Oz - -o /dev/null -\#\#\#
-O0means "no optimization": this level compiles the fastest and generates the most debuggable code. It enable-mrelax-alloption.-O1somewhere between-O0and-O2.-O2moderate level of optimization which enables most optimizations.-O3is like-O2except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).-Ofastenable-O3, with other aggressive optimizations that may violate strict compliance with language standards. It speedup math calculations.-Osis like-O2with extra optimizations to reduce code size.-Ozis like-Os, but try to minimise even more the code size.
| Option | -O0 | -O1 | -O2 | -O3 | -Ofast | -Os | -Oz | Description |
|---|---|---|---|---|---|---|---|---|
| -triple x86_64-apple-macosx10.10.0 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Specify target triple |
| -emit-obj | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Emit native object files |
| -mrelax-all | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | (integrated-as) Relax all machine instructions |
| -disable-free | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Disable freeing of memory on exit |
| -disable-llvm-verifier | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Don't run the LLVM IR verifier pass |
| -mrelocation-model pic | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | The relocation model to use |
| -pic-level 2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Value for __PIC__ |
| -mdisable-fp-elim | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Disable frame pointer elimination optimization |
| -menable-no-infs | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | Allow optimization to assume there are no infinities. |
| -menable-no-nans | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | Allow optimization to assume there are no NaNs. |
| -menable-unsafe-fp-math | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | Allow unsafe floating-point math optimizations which may decrease precision |
| -ffp-contract=fast | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | Form fused FP ops (e.g. FMAs): fast (everywhere) OR on (according to FP_CONTRACT pragma, default) OR off (never fuse) |
| -ffast-math | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | Enable the frontend's 'fast-math' mode. This has no effect on optimizations, but provides a preprocessor macro __FAST_MATH__ the same as GCC's -ffast-math flag |
| -masm-verbose | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Generate verbose assembly output |
| -munwind-tables | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Generate unwinding tables for all functions |
| -target-cpu core2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Target a specific cpu type |
| -target-linker-version 241.9 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Target linker version |
| -resource-dir | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | The directory which holds the compiler resource files |
| -fdebug-compilation-dir | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | The compilation directory to embed in the debug info. |
| -ferror-limit 19 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Set the maximum number of errors to emit before stopping (0 = no limit). |
| -fmessage-length 117 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Format message diagnostics so that they fit within N columns or fewer, when possible. |
| -stack-protector 1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Enable stack protectors |
| -mstackrealign | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Force realign the stack at entry to every function |
| -fblocks | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Enable the 'blocks' language feature |
| -fobjc-runtime | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Specify the target Objective-C runtime kind and version |
| -fencode-extended-block-signature | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | enable extended encoding of block type signature |
| -fdiagnostics-show-option | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Print option name with mappable diagnostics |
| -fcolor-diagnostics | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Use colors in diagnostics |
| -vectorize-loops | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | Run the Loop vectorization passes |
| -vectorize-slp | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Run the SLP vectorization passes |