Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
clang options
OVERVIEW: LLVM 'Clang' Compiler:
USAGE: clang -cc1 [options] <inputs>
-### Print the commands to run for this compilation
--analyze Run the static analyzer
--migrate Run the migrator
--relocatable-pch Build a relocatable precompiled header
--serialize-diagnostics <value>
Serialize compiler diagnostics to a file
-Eonly Just run preprocessor, no output (for timings)
-E Only run the preprocessor
-F <value> Add directory to framework include search path
-H Show header includes and nesting depth
-I <value> Add directory to include search path
-MG Add missing headers to dependency list
-MP Create phony target for each dependency (other than main file)
-MQ <value> Specify target to quote for dependency
-MT <value> Specify target for dependency
-ObjC++ Treat source input files as Objective-C++ inputs
-ObjC Treat source input files as Objective-C inputs
-P Disable linemarker output in -E mode
-Qunused-arguments Don't emit warning for unused driver arguments
-S Only run preprocess and compilation steps
-Wa,<arg> Pass the comma separated arguments in <arg> to the assembler
-Wl,<arg> Pass the comma separated arguments in <arg> to the linker
-Wlarge-by-value-copy Warn if a function definition returns or accepts an object larger in bytes that a given value
-Wno-rewrite-macros Silence ObjC rewriting warnings
-Wp,<arg> Pass the comma separated arguments in <arg> to the preprocessor
-Xanalyzer <arg> Pass <arg> to the static analyzer
-Xassembler <arg> Pass <arg> to the assembler
-Xclang <arg> Pass <arg> to the clang compiler
-Xlinker <arg> Pass <arg> to the linker
-Xpreprocessor <arg> Pass <arg> to the preprocessor
-add-plugin <name> Use the named plugin action in addition to the default action
-analyze-function <value>
Run analysis on specific function
-analyzer-checker-help Display the list of analyzer checkers that are available
-analyzer-checker <value>
Choose analyzer checkers to enable
-analyzer-config <value>
Choose analyzer options to enable
-analyzer-constraints <value>
Source Code Analysis - Symbolic Constraint Engines
-analyzer-disable-checker <value>
Choose analyzer checkers to disable
Do not re-analyze paths leading to exhausted nodes with a different strategy (may decrease code coverage)
Emit verbose output about the analyzer's progress
Eagerly assume the truth/falseness of some symbolic constraints
-analyzer-inline-max-function-size <value>
Bound on the number of basic blocks in an inlined function (200 by default)
-analyzer-inline-max-stack-depth <value>
Bound on stack depth while inlining (4 by default)
-analyzer-inlining-mode <value>
Specify the function selection heuristic used during inlining
-analyzer-ipa <value> Specify the inter-procedural analysis mode
-analyzer-max-loop <value>
The maximum number of times the analyzer will go through a loop
-analyzer-max-nodes <value>
The maximum number of nodes the analyzer can generate (150000 default, 0 = no limit)
Don't eagerly remove uninteresting ExplodedNodes from the ExplodedGraph
Force the static analyzer to analyze functions defined in header files
Analyze the definitions of blocks in addition to functions
-analyzer-output <value>
Source Code Analysis - Output Options
-analyzer-purge <value> Source Code Analysis - Dead Symbol Removal Frequency
-analyzer-stats Print internal analyzer statistics.
-analyzer-store <value> Source Code Analysis - Abstract Memory Store Models
Display exploded graph using GraphViz
Display exploded graph using Ubigraph
-analyze Run static analysis engine
-arcmt-check Check for ARC migration issues that need manual handling
Emit ARC errors even if the migrator can fix them
-arcmt-migrate-report-output <value>
Output path for the plist report
-arcmt-migrate Apply modifications and produces temporary files that conform to ARC
-arcmt-modify Apply modifications to files to conform to ARC
-ast-dump-filter <dump_filter>
Use with -ast-dump or -ast-print to dump/print only AST declaration nodes having a certain substring in a qualified name. Use -ast-list to list all filterable declaration node names.
-ast-dump-xml Build ASTs and then debug dump them in a verbose XML format
-ast-dump Build ASTs and then debug dump them
-ast-list Build ASTs and print the list of declaration node qualified names
-ast-merge <ast file> Merge the given AST file into the translation unit being compiled.
-ast-print Build ASTs and then pretty-print them
-ast-view Build ASTs and view them with GraphViz
-backend-option <value> Additional arguments to forward to LLVM backend (during code gen)
-c-isystem <directory> Add directory to the C SYSTEM include search path
-chain-include <file> Include and chain a header file after turning it into PCH
-cl-fast-relaxed-math OpenCL only. Sets -cl-finite-math-only and -cl-unsafe-math-optimizations, and defines __FAST_RELAXED_MATH__
-cl-finite-math-only OpenCL only. Allow floating-point optimizations that assume arguments and results are not NaNs or +-Inf.
-cl-kernel-arg-info OpenCL only. This option allows the compiler to store information about the arguments of a kernel(s)
-cl-mad-enable OpenCL only. Enable less precise MAD instructions to be generated.
-cl-opt-disable OpenCL only. This option disables all optimizations. The default is optimizations are enabled.
OpenCL only. Treat double precision floating-point constant as single precision constant.
-cl-std=<value> OpenCL language standard to compile for
OpenCL only. Allow unsafe floating-point optimizations. Also implies -cl-no-signed-zeros and -cl-mad-enable
-code-completion-at <file>:<line>:<column>
Dump code-completion information at a location
Include brief documentation comments in code-completion results.
-code-completion-macros Include macros in code-completion results
Include code patterns in code-completion results
-coverage-file <value> Emit coverage data to this filename. The extension will be replaced.
-cxx-abi <value> Target a particular C++ ABI type
-cxx-isystem <directory>
Add directory to the C++ SYSTEM include search path
-c Only run preprocess, compile, and assemble steps
-dD Print macro definitions in -E mode in addition to normal output
-dM Print macro definitions in -E mode instead of normal output
-dependency-dot <value> Filename to write DOT-formatted header dependencies to
-dependency-file <value>
Filename (or -) to write dependency output to
include a detailed record of preprocessing actions
-diagnostic-log-file <value>
Filename (or -) to log diagnostics to
-disable-free Disable freeing of memory on exit
-disable-llvm-optzns Don't run LLVM optimization passes
-disable-llvm-verifier Don't run the LLVM IR verifier pass
-disable-red-zone Do not emit code that uses the red zone.
-dump-build-information <filename>
output a dump of some build information to a file
Dump declarations that are deserialized from PCH, for testing
-dump-raw-tokens Lex file in raw mode and dump raw tokens
-dump-tokens Run preprocessor, dump internal rep of tokens
-dwarf-debug-flags <value>
The string to embed in the Dwarf debug flags record.
-emit-ast Emit Clang AST files for source inputs
-emit-codegen-only Generate machine code, but discard output
-emit-html Output input source as HTML
-emit-llvm-bc Build ASTs then convert to LLVM, emit .bc file
-emit-llvm-only Build ASTs and convert to LLVM, discarding output
-emit-llvm Use the LLVM representation for assembler and object files
-emit-module Generate pre-compiled module file from a module map
-emit-obj Emit native object files
-emit-pch Generate pre-compiled header file
-emit-pth Generate pre-tokenized header file
-error-on-deserialized-decl <value>
Emit error if a specific declaration is deserialized from PCH, for testing
-faddress-sanitizer Enable AddressSanitizer instrumentation (memory error detection)
-faltivec Enable AltiVec vector initializer syntax
-fapple-kext Use Apple's kernel extensions ABI
-fapple-pragma-pack Enable Apple gcc-compatible #pragma pack handling
Weakly link in the blocks runtime
-fblocks Enable the 'blocks' language feature
-fborland-extensions Accept non-standard constructs supported by the Borland compiler
-fbounds-checking Enable run-time bounds checks.
Generate runtime checks for undefined behavior.
-fcolor-diagnostics Use colors in diagnostics
-fconst-strings Use a const qualified type for string literals in C and ObjC
-fconstant-string-class <class name>
Specify the class to use for constant Objective-C string objects.
-fconstexpr-backtrace-limit <N>
Set the maximum number of entries to print in a constexpr evaluation backtrace (0 = no limit).
-fconstexpr-depth <value>
Maximum depth of recursive constexpr function calls
-fcuda-is-device Generate code for CUDA device
-fcxx-exceptions Enable C++ exceptions
-fdata-sections Place each data in its own section (ELF Only)
-fdebug-compilation-dir <value>
The compilation directory to embed in the debug info.
Enable casting unknown expression results to id
-fdebugger-objc-literal Enable special debugger support for Objective-C subscripting and literals
-fdebugger-support Enable special debugger support behavior
Parse templated function definitions at the end of the translation unit
-fdeprecated-macro Defines the __DEPRECATED macro
-fdiagnostics-format <value>
Change diagnostic formatting to match IDE and command line tools
Print fix-its in machine parseable form
Print source range spans in numeric form
-fdiagnostics-show-category <value>
Print diagnostic category
-fdiagnostics-show-name Print diagnostic name
Display include stacks for diagnostic notes
Print option name with mappable diagnostics
Print a template comparison tree for differing templates
-fdisable-module-hash Disable the module hash
Allow '$' in identifiers
Dump record layout information in a simple form used for testing
-fdump-record-layouts Dump record layout information
-fdump-vtable-layouts Dump the layouts of all vtables that will be emitted in a translation unit
-femit-all-decls Emit all declarations, even if unused
-femit-coverage-data Instrument the program to emit gcov coverage data when run.
-femit-coverage-notes Emit a gcov coverage notes file when compiling.
Enable support for Microsoft style inine assembly
-ferror-limit <N> Set the maximum number of errors to emit before stopping (0 = no limit).
-fexceptions Enable support for exception handling
Use a fake address space map; OpenCL testing purposes only
-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.
Emit an error if a C++ static local initializer would need a guard variable
-ffp-contract=<value> Form fused FP ops (e.g. FMAs): fast (everywhere) | on (according to FP_CONTRACT pragma, default) | off (never fuse)
-ffreestanding Assert that the compilation takes place in a freestanding environment
-ffunction-sections Place each function in its own section (ELF Only)
-fgnu-keywords Allow GNU-extension keywords regardless of language standard
-fgnu-runtime Generate output compatible with the standard GNU Objective-C runtime
-fgnu89-inline Use the gnu89 inline semantics
-fhidden-weak-vtables Generate weak vtables and RTTI with hidden visibility
-finstrument-functions Generate calls to instrument function entry and exit
-fix-only-warnings Apply fix-it advice only for warnings, not errors
-fix-what-you-can Apply fix-it advice even in the presence of unfixable errors
-fixit-recompile Apply fix-it changes and recompile
-fixit-to-temporary Apply fix-it changes to temporary files
-fixit=<value> Apply fix-it advice creating a file with the given suffix
-fixit Apply fix-it advice to the input source
-flimit-debug-info Limit debug information produced to reduce size of debug binary
-fmacro-backtrace-limit <N>
Set the maximum number of entries to print in a macro expansion backtrace (0 = no limit).
-fmath-errno Require math functions to indicate errors by setting errno
-fmessage-length <N> Format message diagnostics so that they fit within N columns or fewer, when possible.
-fmodule-cache-path <directory>
Specify the module cache path
-fmodule-name=<name> Specify the name of the module to build
-fmodules Enable the 'modules' language feature
-fms-compatibility Enable Microsoft compatibility mode
-fms-extensions Accept some non-standard constructs supported by the Microsoft compiler
-fmsc-version=<value> Version of the Microsoft C/C++ compiler to report in _MSC_VER (0 = don't define it (default))
-fno-access-control Disable C++ access control
Don't assume that C++'s global operator new can't alias any pointer
Ignore bit-field types when aligning structures
-fno-builtin Disable implicit builtin knowledge of functions
-fno-common Compile common globals like normal definitions
-fno-const-strings Don't use a const qualified type for string literals in C and ObjC
-fno-constant-cfstrings Disable creation of CodeFoundation-type constant strings
-fno-deprecated-macro Undefines the __DEPRECATED macro
Do not include fixit information in diagnostics
Display include stacks for diagnostic notes
Disallow '$' in identifiers
-fno-elide-constructors Disable C++ copy constructor elision
-fno-elide-type Do not elide types when printing diagnostics
Disallow implicit conversions between vectors with a different number of elements or different element types
-fno-limit-debug-info Do not limit debug information produced to reduce size of debug binary
Disallow merging of constants.
do not infer Objective-C related result type based on method family
-fno-operator-names Do not treat C++ operator name keywords as synonyms for operators
-fno-rtti Disable generation of rtti information
-fno-show-column Do not include column number on diagnostics
Do not include source location information with diagnostics
-fno-signed-char Char is unsigned
-fno-spell-checking Disable spell-checking
-fno-threadsafe-statics Do not emit code to make initialization of local statics thread safe
-fno-use-cxa-atexit Don't use __cxa_atexit for calling destructors
-fno-validate-pch Disable validation of precompiled headers
-fno-wchar Disable C++ builtin type wchar_t
Objective-C++ Automatic Reference Counting standard library kind
-fobjc-arc-exceptions Use EH-safe code when synthesizing retains and releases in -fobjc-arc
-fobjc-arc Synthesize retain and release calls for Objective-C pointers
enable the default synthesis of Objective-C properties
Objective-C dispatch method to use
-fobjc-exceptions Enable Objective-C exceptions
-fobjc-gc-only Use GC exclusively for Objective-C related memory management
-fobjc-gc Enable Objective-C garbage collection
-fobjc-runtime-has-weak The target Objective-C runtime supports ARC weak operations
-fobjc-runtime=<value> Specify the target Objective-C runtime kind and version
Override record layouts with those in the given file
-fpack-struct=<value> Specify the default maximum struct packing alignment
-fpascal-strings Recognize and construct Pascal-style string literals
-fshort-enums Allocate to an enum type only as many bytes as it needs for the declared range of possible values
-fshort-wchar Force wchar_t to be a short unsigned int
Which overload candidates to show when overload resolution fails: best|all; defaults to all
-fsjlj-exceptions Use SjLj style exceptions
-fstrict-enums Enable optimizations based on the strict definition of an enum's value range.
-ftabstop <N> Set the tab stop distance.
-ftemplate-backtrace-limit <N>
Set the maximum number of entries to print in a template instantiation backtrace (0 = no limit).
-ftemplate-depth <value>
Maximum depth of recursive template instantiation
-fthread-sanitizer Enable ThreadSanitizer instrumentation (race detection)
-ftrap-function=<value> Issue call to specified function rather than a trap instruction
-ftrapv-handler=<function name>
Specify the function to be called on overflow.
-ftrapv Trap on integer overflow
-funknown-anytype Enable parser support for the __unknown_anytype type; for testing purposes only
-funroll-loops Turn on loop unroller
-fuse-init-array Use .init_array instead of .ctors
Use register sized accesses to bit-fields, when possible.
Give inline C++ member functions default visibility by default
-fvisibility <value> Default symbol visibility
-fwrapv Treat signed integer overflow as two's complement
-fwritable-strings Store string literals as writable data
-gcc-toolchain <value> Use the gcc toolchain at the given directory
-gline-tables-only Emit debug line number tables only
-g Generate source level debug information
-header-include-file <value>
Filename (or -) to write header include output to
-help Display available options
-idirafter <value> Add directory to AFTER include search path
-iframework <value> Add directory to SYSTEM framework search path
-imacros <file> Include macros from file before parsing
-include-pch <file> Include precompiled header file
-include-pth <file> Include file before parsing
-include <file> Include file before parsing
-index-header-map Make the next included directory (-I or -F) an indexer header map
-init-only Only execute frontend initialization
-ino-system-prefix <prefix>
Treat all #include paths starting with <prefix> as not including a system header.
-internal-externc-isystem <directory>
Add directory to the internal system include search path with implicit extern "C" semantics; these are assumed to not be user-provided and are used to model system and standard headers' paths.
-internal-isystem <directory>
Add directory to the internal system include search path; these are assumed to not be user-provided and are used to model system and standard headers' paths.
-iprefix <dir> Set the -iwithprefix/-iwithprefixbefore prefix
-iquote <directory> Add directory to QUOTE include search path
-isysroot <dir> Set the system root directory (usually /)
-isystem-prefix <prefix>
Treat all #include paths starting with <prefix> as including a system header.
-isystem <directory> Add directory to SYSTEM include search path
-iwithprefixbefore <dir>
Set directory to include search path with prefix
-iwithprefix <dir> Set directory to SYSTEM include search path with prefix
-iwithsysroot <directory>
Add directory to SYSTEM include search path, absolute paths are relative to -isysroot
-load <dsopath> Load the named plugin (dynamic shared object)
-main-file-name <value> Main file name to use for debug info
-masm-verbose Generate verbose assembly output
-mcode-model <value> The code model to use
-mconstructor-aliases Emit complete constructors and destructors as aliases when possible
-mdebug-pass <value> Enable additional debug output
-mdisable-fp-elim Disable frame pointer elimination optimization
-mdisable-tail-calls Disable tail call optimization, keeping the call stack accurate
-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
-mfloat-abi <value> The float ABI to use
-migrate Migrate source code
-mips32r2 Equivalent to -march=mips32r2
-mips32 Equivalent to -march=mips32
-mips64r2 Equivalent to -march=mips64r2
-mips64 Equivalent to -march=mips64
-mlimit-float-precision <value>
Limit float precision to the given value
-mlink-bitcode-file <value>
Link the given bitcode file before performing optimizations.
-mllvm <value> Additional arguments to forward to LLVM's option processing
-mms-bitfields Set the default structure layout to be compatible with the Microsoft compiler standard.
-mno-global-merge Disable merging of globals
-mno-implicit-float Don't generate implicit floating point instructions
Do not put zero initialized data in the BSS
-mnoexecstack Mark the file as not needing an executable stack
Omit frame pointer setup for leaf functions.
-mqdsp6-compat Enable hexagon-qdsp6 backward compatibility
-mregparm <value> Limit the number of registers available for integer arguments
-mrelax-all (integrated-as) Relax all machine instructions
-mrelocation-model <value>
The relocation model to use
-mrtd Make StdCall calling convention the default
-msave-temp-labels (integrated-as) Save temporary labels
-msoft-float Use software floating point
Set the stack alignment
-mstackrealign Force realign the stack at entry to every function.
-mt-migrate-directory <value>
Directory for temporary files produced during ARC or ObjC migration
-munwind-tables Generate unwinding tables for all functions
Do not include global declarations in code-completion results.
-no-finalize-removal Do not remove finalize method in gc mode
-no-implicit-float Don't generate implicit floating point instructions
-no-ns-alloc-error Do not error on use of NSAllocateCollectable/NSReallocateCollectable
-nobuiltininc Disable builtin #include directories
-nostdinc++ Disable standard #include directories for the C++ standard library
-nostdsysteminc Disable standard system #include directories
-objc-isystem <directory>
Add directory to the ObjC SYSTEM include search path
Enable migration to modern ObjC literals
Enable migration to modern ObjC subscripting
-objcxx-isystem <directory>
Add directory to the ObjC++ SYSTEM include search path
-o <file> Write output to <file>
-pg Enable mcount instrumentation
-pic-level <value> Value for __PIC__
-pie-level <value> Value for __PIE__
-pipe Use pipes between commands, when possible
-plugin-arg-<name> <arg>
Pass <arg> to plugin <name>
-plugin <name> Use the named plugin action instead of the default action (use "help" to list available options)
-preamble-bytes=<value> Assume that the precompiled header is a precompiled preamble covering the first N bytes of the main file
-print-decl-contexts Print DeclContexts and their Decls
-print-file-name=<file> Print the full library path of <file>
-print-ivar-layout Enable Objective-C Ivar layout bitmap print trace
-print-libgcc-file-name Print the library path for "libgcc.a"
-print-preamble Print the "preamble" of a file, which is a candidate for implicit precompiled headers.
-print-prog-name=<name> Print the full program path of <name>
-print-search-dirs Print the paths used for finding libraries and programs
-print-stats Print performance metrics and statistics
-pthread Support POSIX threads in generated code
-relaxed-aliasing Turn off Type Based Alias Analysis
-relocatable-pch Whether to build a relocatable precompiled header
-remap-file <from>;<to> Replace the contents of the <from> file with the contents of the <to> file
-resource-dir <value> The directory which holds the compiler resource files
-rewrite-legacy-objc Rewrite Legacy Objective-C source to C++
-rewrite-macros Expand macros without full preprocessing
-rewrite-objc Rewrite Objective-C source to C++
-rewrite-test Rewriter playground
-save-temps Save intermediate compilation results
-serialize-diagnostic-file <filename>
File for serializing diagnostics in a binary format
-stack-protector-buffer-size <value>
Lower bound for a buffer to be considered for stack protection
-stack-protector <value>
Enable stack protectors
-static-define Should __STATIC__ be defined
-std=<value> Language standard to compile for
-stdlib=<value> C++ standard library to use
-sys-header-deps Include system headers in dependency output
-target-abi <value> Target a particular ABI type
-target-cpu <value> Target a specific cpu type
-target-feature <value> Target specific attributes
-target-linker-version <value>
Target linker version
-target <value> Generate code for the given target
-time Time individual commands
-token-cache <path> Use specified token cache file
-traditional-cpp Enable some traditional CPP emulation
-trigraphs Process trigraph sequences
-trim-egraph Only show error-related paths in the analysis graph
-triple <value> Specify target triple (e.g. i686-apple-darwin9)
-undef undef all system defines
-unoptimized-cfg Generate unoptimized CFGs for all analyses
-verify Verify output using a verifier.
-version Print the compiler version
-v Show commands to run and use verbose output
-working-directory <value>
Resolve file paths relative to the specified directory
-w Suppress all warnings.
-x <language> Treat subsequent input files as having type <language>

This comment has been minimized.

Copy link

@WingTillDie WingTillDie commented Sep 5, 2018

For clang hidden options like driver options, see this gist:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.