OS Manuals

/usr/bin/clang-cl

C language family frontend for LLVM 15

From clang-15 15.0.7-r32 (os), captured 2026-11-05 by running clang-cl -help (exit 0). permalink

OVERVIEW: clang LLVM compiler

USAGE: clang-15 [options] file...

CL.EXE COMPATIBILITY OPTIONS:
  /?                      Display available options
  /arch:<value>           Set architecture for code generation
  /Brepro-                Write current time into COFF output (default)
  /Brepro                 Do not write current time into COFF output (breaks link.exe /incremental)
  /clang:<arg>            Pass <arg> to the clang driver
  /C                      Do not discard comments when preprocessing
  /c                      Compile only
  /d1PP                   Retain macro definitions in /E mode
  /d1reportAllClassLayout Dump record layout information
  /diagnostics:caret      Enable caret and column diagnostics (default)
  /diagnostics:classic    Disable column and caret diagnostics
  /diagnostics:column     Disable caret diagnostics but keep column info
  /diasdkdir <dir>        Path to the DIA SDK
  /D <macro[=value]>      Define macro
  /EH<value>              Set exception handling model
  /EP                     Disable linemarker output and preprocess to stdout
  /execution-charset:<value>
                          Set runtime encoding, supports only UTF-8
  /external:env:<var>     Add dirs in env var <var> to include search path with warnings suppressed
  /external:I <dir>       Add directory to include search path with warnings suppressed
  /external:W0            Ignore warnings from system headers (default)
  /external:W1            Enable -Wsystem-headers
  /external:W2            Enable -Wsystem-headers
  /external:W3            Enable -Wsystem-headers
  /external:W4            Enable -Wsystem-headers
  /E                      Preprocess to stdout
  /FA<value>              Output assembly code file during compilation
  /Fa<file or dir/>       Set assembly output file name (with /FA)
  /Fe<file or dir/>       Set output executable file name
  /FI <value>             Include file before parsing
  /Fi<file>               Set preprocess output file name (with /P)
  /Fo<file or dir/>       Set output object file (with /c)
  /Fp<file>               Set pch file name (with /Yc and /Yu)
  /fsanitize=address      Enable AddressSanitizer
  /GA                     Assume thread-local variables are defined in the executable
  /Gd                     Set __cdecl as a default calling convention
  /GF-                    Disable string pooling
  /GF                     Enable string pooling (default)
  /GR-                    Do not emit RTTI data
  /Gregcall               Set __regcall as a default calling convention
  /GR                     Emit RTTI data (default)
  /Gr                     Set __fastcall as a default calling convention
  /GS-                    Disable buffer security check
  /GS                     Enable buffer security check (default)
  /Gs                     Use stack probes (default)
  /Gs<value>              Set stack probe size (default 4096)
  /guard:<value>          Enable Control Flow Guard with /guard:cf, or only the table with /guard:cf,nochecks. Enable EH Continuation Guard with /guard:ehcont
  /Gv                     Set __vectorcall as a default calling convention
  /Gw-                    Do not put each data item in its own section (default)
  /Gw                     Put each data item in its own section
  /GX-                    Deprecated (like not passing /EH)
  /GX                     Deprecated; use /EHsc
  /Gy-                    Do not put each function in its own section (default)
  /Gy                     Put each function in its own section
  /Gz                     Set __stdcall as a default calling convention
  /help                   Display available options
  /hotpatch               Create hotpatchable image
  /imsvc <dir>            Add <dir> to system include search path, as if in %INCLUDE%
  /I <dir>                Add directory to include search path
  /JMC-                   Disable just-my-code debugging (default)
  /JMC                    Enable just-my-code debugging
  /J                      Make char type unsigned
  /LDd                    Create debug DLL
  /LD                     Create DLL
  /link <options>         Forward options to the linker
  /MDd                    Use DLL debug run-time
  /MD                     Use DLL run-time
  /MTd                    Use static debug run-time
  /MT                     Use static run-time
  /O1                     Optimize for size  (like /Og     /Os /Oy /Ob2 /GF /Gy)
  /O2                     Optimize for speed (like /Og /Oi /Ot /Oy /Ob2 /GF /Gy)
  /Ob0                    Disable function inlining
  /Ob1                    Only inline functions explicitly or implicitly marked inline
  /Ob2                    Inline functions as deemed beneficial by the compiler
  /Od                     Disable optimization
  /Og                     No effect
  /Oi-                    Disable use of builtin functions
  /Oi                     Enable use of builtin functions
  /openmp-                Disable OpenMP support
  /openmp:experimental    Enable OpenMP support with experimental SIMD support
  /openmp                 Enable OpenMP support
  /Os                     Optimize for size
  /Ot                     Optimize for speed
  /Ox                     Deprecated (like /Og /Oi /Ot /Oy /Ob2); use /O2
  /Oy-                    Disable frame pointer omission (x86 only, default)
  /Oy                     Enable frame pointer omission (x86 only)
  /O<flags>               Set multiple /O flags at once; e.g. '/O2y-' for '/O2 /Oy-'
  /o <file or dir/>       Deprecated (set output file name); use /Fe or /Fe
  /permissive-            Disable non conforming code from compiling (default)
  /permissive             Enable some non conforming code to compile
  /P                      Preprocess to file
  /QIntel-jcc-erratum     Align branches within 32-byte boundaries to mitigate the performance impact of the Intel JCC erratum.
  /Qvec-                  Disable the loop vectorization passes
  /Qvec                   Enable the loop vectorization passes
  /showFilenames-         Do not print the name of each compiled file (default)
  /showFilenames          Print the name of each compiled file
  /showIncludes:user      Like /showIncludes but omit system headers
  /showIncludes           Print info about included files to stderr
  /source-charset:<value> Set source encoding, supports only UTF-8
  /std:<value>            Set language version (c++14,c++17,c++20,c++latest,c11,c17)
  /TC                     Treat all source files as C
  /Tc <file>              Treat <file> as C source file
  /TP                     Treat all source files as C++
  /Tp <file>              Treat <file> as C++ source file
  /tune:<value>           Set CPU for optimization without affecting instruction set
  /utf-8                  Set source and runtime encoding to UTF-8 (default)
  /U <macro>              Undefine macro
  /vctoolsdir <dir>       Path to the VCToolChain
  /vctoolsversion <value> For use with /winsysroot, defaults to newest found
  /vd<value>              Control vtordisp placement
  /vmb                    Use a best-case representation method for member pointers
  /vmg                    Use a most-general representation for member pointers
  /vmm                    Set the default most-general representation to multiple inheritance
  /vms                    Set the default most-general representation to single inheritance
  /vmv                    Set the default most-general representation to virtual inheritance
  /volatile:iso           Volatile loads and stores have standard semantics
  /volatile:ms            Volatile loads and stores have acquire and release semantics
  /W0                     Disable all warnings
  /W1                     Enable -Wall
  /W2                     Enable -Wall
  /W3                     Enable -Wall
  /W4                     Enable -Wall and -Wextra
  /Wall                   Enable -Weverything
  /winsdkdir <dir>        Path to the Windows SDK
  /winsdkversion <value>  Full version of the Windows SDK, defaults to newest found
  /winsysroot <dir>       Same as "/diasdkdir <dir>/DIA SDK" /vctoolsdir <dir>/VC/Tools/MSVC/<vctoolsversion> "/winsdkdir <dir>/Windows Kits/10"
  /WX-                    Do not treat warnings as errors (default)
  /WX                     Treat warnings as errors
  /w                      Disable all warnings
  /X                      Do not add %INCLUDE% to include search path
  /Y-                     Disable precompiled headers, overrides /Yc and /Yu
  /Yc<filename>           Generate a pch file for all code up to and including <filename>
  /Yu<filename>           Load a pch file and use it instead of all code up to and including <filename>
  /Z7                     Enable CodeView debug information in object files
  /Zc:alignedNew-         Disable C++17 aligned allocation functions
  /Zc:alignedNew          Enable C++17 aligned allocation functions
  /Zc:char8_t-            Disable char8_t from c++2a
  /Zc:char8_t             Enable char8_t from C++2a
  /Zc:dllexportInlines-   Do not dllexport/dllimport inline member functions of dllexport/import classes
  /Zc:dllexportInlines    dllexport/dllimport inline member functions of dllexport/import classes (default)
  /Zc:sizedDealloc-       Disable C++14 sized global deallocation functions
  /Zc:sizedDealloc        Enable C++14 sized global deallocation functions
  /Zc:strictStrings       Treat string literals as const
  /Zc:threadSafeInit-     Disable thread-safe initialization of static variables
  /Zc:threadSafeInit      Enable thread-safe initialization of static variables
  /Zc:trigraphs-          Disable trigraphs (default)
  /Zc:trigraphs           Enable trigraphs
  /Zc:twoPhase-           Disable two-phase name lookup in templates (default)
  /Zc:twoPhase            Enable two-phase name lookup in templates
  /Zc:wchar_t-            Disable C++ builtin type wchar_t
  /Zc:wchar_t             Enable C++ builtin type wchar_t (default)
  /Zi                     Like /Z7
  /Zl                     Do not let object file auto-link default libraries
  /Zp                     Set default maximum struct packing alignment to 1
  /Zp<value>              Set default maximum struct packing alignment
  /Zs                     Syntax-check only

OPTIONS:
  -###                    Print (but do not run) the commands to run for this compilation
  --analyze               Run the static analyzer
  -darwin-target-variant <value>
                          Generate code for an additional runtime variant of the deployment target
  -emit-ast               Emit Clang AST files for source inputs
  -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang
                          Trivial automatic variable initialization to zero is only here for benchmarks, it'll eventually be removed, and I'm OK with that because I'm only using it to benchmark
  --end-no-unused-arguments
                          Start emitting warnings for unused driver arguments
  -faddrsig               Emit an address-significance table
  -fansi-escape-codes     Use ANSI escape codes for diagnostics
  -fblocks                Enable the 'blocks' language feature
  -fcf-protection=<value> Instrument control-flow architecture protection
  -fcf-protection         Enable cf-protection in 'full' mode
  -fcolor-diagnostics     Enable colors in diagnostics
  -fcommon                Place uninitialized global variables in a common block
  -fcomplete-member-pointers
                          Require member pointer base types to be complete if they would be significant under the Microsoft ABI
  -fcoverage-compilation-dir=<value>
                          The compilation directory to embed in the coverage mapping.
  -fcoverage-mapping      Generate coverage mapping to enable code coverage analysis
  -fcrash-diagnostics-dir=<dir>
                          Put crash-report files in <dir>
  -fcs-profile-generate=<directory>
                          Generate instrumented code to collect context sensitive execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)
  -fcs-profile-generate   Generate instrumented code to collect context sensitive execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)
  -fdebug-compilation-dir=<value>
                          The compilation directory to embed in the debug info
  -fdebug-macro           Emit macro debug information
  -fdelayed-template-parsing
                          Parse templated function definitions at the end of the translation unit
  -fdelete-null-pointer-checks
                          Treat usage of null pointers as undefined behavior (default)
  -fdiagnostics-absolute-paths
                          Print absolute paths in diagnostics
  -fdiagnostics-parseable-fixits
                          Print fix-its in machine parseable form
  -fdriver-only           Only run the driver.
  -fexperimental-library  Control whether unstable and experimental library features are enabled. This option enables various library features that are either experimental (also known as TSes), or have been but are not stable yet in the selected Standard Library implementation. It is not recommended to use this option in production code, since neither ABI nor API stability are guaranteed. This is intended to provide a preview of features that will ship in the future for experimentation purposes
  -ffile-compilation-dir=<value>
                          The compilation directory to embed in the debug info and coverage mapping.
  -ffile-reproducible     Use the target's platform-specific path separator character when expanding the __FILE__ macro
  -fforce-emit-vtables    Emits more virtual tables to improve devirtualization
  -fgnuc-version=<value>  Sets various macros to claim compatibility with the given GCC version (default is 4.2.1)
  -fimplicit-module-maps  Implicitly search the file system for module map files.
  -fintegrated-cc1        Run cc1 in-process
  -fintegrated-objemitter Use internal machine object code emitter.
  -flto=<value>           Set LTO mode
  -flto                   Enable LTO in 'full' mode
  -fmerge-all-constants   Allow merging of constants
  -fmodule-file=[<name>=]<file>
                          Specify the mapping of module name to precompiled module file, or load a module file if name is omitted.
  -fmodule-map-file=<file>
                          Load this module map file
  -fmodule-name=<name>    Specify the name of the module to build
  -fmodules-decluse       Require declaration of modules used within a module
  -fmodules-ignore-macro=<value>
                          Ignore the definition of the given macro when building and loading modules
  -fmodules-search-all    Search even non-imported modules to resolve references
  -fmodules-strict-decluse
                          Like -fmodules-decluse but requires all headers to be in modules
  -fmodules               Enable the 'modules' language feature
  -fms-compatibility-version=<value>
                          Dot-separated value representing the Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))
  -fms-compatibility      Enable full Microsoft Visual C++ compatibility
  -fms-extensions         Accept some non-standard constructs supported by the Microsoft compiler
  -fms-hotpatch           Ensure that all functions can be hotpatched at runtime
  -fmsc-version=<value>   Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))
  -fno-addrsig            Don't emit an address-significance table
  -fno-builtin-<value>    Disable implicit builtin knowledge of a specific function
  -fno-builtin            Disable implicit builtin knowledge of functions
  -fno-color-diagnostics  Disable colors in diagnostics
  -fno-complete-member-pointers
                          Do not require member pointer base types to be complete if they would be significant under the Microsoft ABI
  -fno-coverage-mapping   Disable code coverage analysis
  -fno-crash-diagnostics  Disable auto-generation of preprocessed source files and a script for reproduction during a clang crash
  -fno-debug-macro        Do not emit macro debug information
  -fno-delayed-template-parsing
                          Disable delayed template parsing
  -fno-delete-null-pointer-checks
                          Do not treat usage of null pointers as undefined behavior
  -fno-file-reproducible  Use the host's platform-specific path separator character when expanding the __FILE__ macro
  -fno-integrated-cc1     Spawn a separate process for each cc1
  -fno-integrated-objemitter
                          Use external machine object code emitter.
  -fno-knr-functions      Disable support for K&R C function declarations
  -fno-lto                Disable LTO mode (default)
  -fno-offload-lto        Disable LTO mode (default) for offload compilation
  -fno-profile-generate   Disable generation of profile instrumentation.
  -fno-profile-instr-generate
                          Disable generation of profile instrumentation.
  -fno-profile-instr-use  Disable using instrumentation data for profile-guided optimization
  -fno-sanitize-address-globals-dead-stripping
                          Disable linker dead stripping of globals in AddressSanitizer
  -fno-sanitize-address-outline-instrumentation
                          Use default code inlining logic for the address sanitizer
  -fno-sanitize-address-poison-custom-array-cookie
                          Disable poisoning array cookies when using custom operator new[] in AddressSanitizer
  -fno-sanitize-address-use-after-scope
                          Disable use-after-scope detection in AddressSanitizer
  -fno-sanitize-address-use-odr-indicator
                          Disable ODR indicator globals
  -fno-sanitize-cfi-canonical-jump-tables
                          Do not make the jump table addresses canonical in the symbol table
  -fno-sanitize-cfi-cross-dso
                          Disable control flow integrity (CFI) checks for cross-DSO calls.
  -fno-sanitize-coverage=<value>
                          Disable features of coverage instrumentation for Sanitizers
  -fno-sanitize-hwaddress-experimental-aliasing
                          Disable aliasing mode in HWAddressSanitizer
  -fno-sanitize-ignorelist
                          Don't use ignorelist file for sanitizers
  -fno-sanitize-memory-param-retval
                          Disable detection of uninitialized parameters and return values
  -fno-sanitize-memory-track-origins
                          Disable origins tracking in MemorySanitizer
  -fno-sanitize-memory-use-after-dtor
                          Disable use-after-destroy detection in MemorySanitizer
  -fno-sanitize-recover=<value>
                          Disable recovery for specified sanitizers
  -fno-sanitize-stats     Disable sanitizer statistics gathering.
  -fno-sanitize-thread-atomics
                          Disable atomic operations instrumentation in ThreadSanitizer
  -fno-sanitize-thread-func-entry-exit
                          Disable function entry/exit instrumentation in ThreadSanitizer
  -fno-sanitize-thread-memory-access
                          Disable memory access instrumentation in ThreadSanitizer
  -fno-sanitize-trap=<value>
                          Disable trapping for specified sanitizers
  -fno-sanitize-trap      Disable trapping for all sanitizers
  -fno-standalone-debug   Limit debug information produced to reduce size of debug binary
  -fno-sycl               Disables SYCL kernels compilation for device
  -fno-temp-file          Directly create compilation output files. This may lead to incorrect incremental builds if the compiler crashes
  -fobjc-runtime=<value>  Specify the target Objective-C runtime kind and version
  -foffload-lto=<value>   Set LTO mode for offload compilation
  -foffload-lto           Enable LTO in 'full' mode for offload compilation
  -forder-file-instrumentation
                          Generate instrumented code to collect order file into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)
  -fpch-instantiate-templates
                          Instantiate templates already while building a PCH
  -fprofile-exclude-files=<value>
                          Instrument only functions from files where names don't match all the regexes separated by a semi-colon
  -fprofile-filter-files=<value>
                          Instrument only functions from files where names match any regex separated by a semi-colon
  -fprofile-generate=<directory>
                          Generate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)
  -fprofile-generate      Generate instrumented code to collect execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)
  -fprofile-instr-generate=<file>
                          Generate instrumented code to collect execution counts into <file> (overridden by LLVM_PROFILE_FILE env var)
  -fprofile-instr-generate
                          Generate instrumented code to collect execution counts into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)
  -fprofile-instr-use=<value>
                          Use instrumentation data for profile-guided optimization
  -fprofile-list=<value>  Filename defining the list of functions/files to instrument
  -fprofile-remapping-file=<file>
                          Use the remappings described in <file> to match the profile data against names in the program
  -fprofile-update=<method>
                          Set update method of profile counters
  -fprofile-use=<pathname>
                          Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from <pathname>/default.profdata. Otherwise, it reads from file <pathname>.
  -fprotect-parens        Determines whether the optimizer honors parentheses when floating-point expressions are evaluated
  -fsanitize-address-destructor=<value>
                          Set destructor type used in ASan instrumentation
  -fsanitize-address-field-padding=<value>
                          Level of field padding for AddressSanitizer
  -fsanitize-address-globals-dead-stripping
                          Enable linker dead stripping of globals in AddressSanitizer
  -fsanitize-address-outline-instrumentation
                          Always generate function calls for address sanitizer instrumentation
  -fsanitize-address-poison-custom-array-cookie
                          Enable poisoning array cookies when using custom operator new[] in AddressSanitizer
  -fsanitize-address-use-after-return=<mode>
                          Select the mode of detecting stack use-after-return in AddressSanitizer
  -fsanitize-address-use-after-scope
                          Enable use-after-scope detection in AddressSanitizer
  -fsanitize-address-use-odr-indicator
                          Enable ODR indicator globals to avoid false ODR violation reports in partially sanitized programs at the cost of an increase in binary size
  -fsanitize-blacklist=<value>
                          Alias for -fsanitize-ignorelist=
  -fsanitize-cfi-canonical-jump-tables
                          Make the jump table addresses canonical in the symbol table
  -fsanitize-cfi-cross-dso
                          Enable control flow integrity (CFI) checks for cross-DSO calls.
  -fsanitize-cfi-icall-generalize-pointers
                          Generalize pointers in CFI indirect call type signature checks
  -fsanitize-coverage-allowlist=<value>
                          Restrict sanitizer coverage instrumentation exclusively to modules and functions that match the provided special case list, except the blocked ones
  -fsanitize-coverage-blacklist=<value>
                          Deprecated, use -fsanitize-coverage-ignorelist= instead
  -fsanitize-coverage-ignorelist=<value>
                          Disable sanitizer coverage instrumentation for modules and functions that match the provided special case list, even the allowed ones
  -fsanitize-coverage-whitelist=<value>
                          Deprecated, use -fsanitize-coverage-allowlist= instead
  -fsanitize-coverage=<value>
                          Specify the type of coverage instrumentation for Sanitizers
  -fsanitize-hwaddress-abi=<value>
                          Select the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor). This option is currently unused.
  -fsanitize-hwaddress-experimental-aliasing
                          Enable aliasing mode in HWAddressSanitizer
  -fsanitize-ignorelist=<value>
                          Path to ignorelist file for sanitizers
  -fsanitize-memory-param-retval
                          Enable detection of uninitialized parameters and return values
  -fsanitize-memory-track-origins=<value>
                          Enable origins tracking in MemorySanitizer
  -fsanitize-memory-track-origins
                          Enable origins tracking in MemorySanitizer
  -fsanitize-memory-use-after-dtor
                          Enable use-after-destroy detection in MemorySanitizer
  -fsanitize-memtag-mode=<value>
                          Set default MTE mode to 'sync' (default) or 'async'
  -fsanitize-recover=<value>
                          Enable recovery for specified sanitizers
  -fsanitize-stats        Enable sanitizer statistics gathering.
  -fsanitize-system-blacklist=<value>
                          Alias for -fsanitize-system-ignorelist=
  -fsanitize-system-ignorelist=<value>
                          Path to system ignorelist file for sanitizers
  -fsanitize-thread-atomics
                          Enable atomic operations instrumentation in ThreadSanitizer (default)
  -fsanitize-thread-func-entry-exit
                          Enable function entry/exit instrumentation in ThreadSanitizer (default)
  -fsanitize-thread-memory-access
                          Enable memory access instrumentation in ThreadSanitizer (default)
  -fsanitize-trap=<value> Enable trapping for specified sanitizers
  -fsanitize-trap         Enable trapping for all sanitizers
  -fsanitize-undefined-strip-path-components=<number>
                          Strip (or keep only, if negative) a given number of path components when emitting check metadata.
  -fsanitize=<check>      Turn on runtime checks for various forms of undefined or suspicious behavior. See user manual for available checks
  -fsplit-lto-unit        Enables splitting of the LTO unit
  -fstandalone-debug      Emit full debug info for all types used by the program
  -fswift-async-fp=<option>
                          Control emission of Swift async extended frame info
  -fsycl                  Enables SYCL kernels compilation for device
  -fsystem-module         Build this module as a system module. Only used with -emit-module
  -fthin-link-bitcode=<value>
                          Write minimized bitcode to <file> for the ThinLTO thin link only
  -fthinlto-index=<value> Perform ThinLTO importing using provided function summary index
  -ftime-trace-granularity=<value>
                          Minimum time granularity (in microseconds) traced by time profiler
  -ftime-trace=<value>    Turn on time profiler. Generates JSON file based on output filename. Specify the path which stores the tracing output file.
  -ftime-trace            Turn on time profiler. Generates JSON file based on output filename.
  -ftrivial-auto-var-init-stop-after=<value>
                          Stop initializing trivial automatic stack variables after the specified number of instances
  -ftrivial-auto-var-init=<value>
                          Initialize trivial automatic stack variables. Defaults to 'uninitialized'
  -fvirtual-function-elimination
                          Enables dead virtual function elimination optimization. Requires -flto=full
  -fwhole-program-vtables Enables whole-program vtable optimization. Requires -flto
  -gcodeview-ghash        Emit type record hashes in a .debug$H section
  -gcodeview              Generate CodeView debug information
  -gdwarf                 Generate source-level debug information with the default dwarf version
  -gen-reproducer=<value> Emit reproducer on (option: off, crash (default), error, always)
  -gline-directives-only  Emit debug line info directives only
  -gline-tables-only      Emit debug line number tables only
  -gno-inline-line-tables Don't emit inline line tables.
  -mfunction-return=<value>
                          Replace returns with jumps to ``__x86_return_thunk`` (x86 only, error otherwise)
  -miamcu                 Use Intel MCU ABI
  -mibt-seal              Optimize fcf-protection=branch/full (requires LTO).
  -mllvm <value>          Additional arguments to forward to LLVM's option processing
  -mlvi-cfi               Enable only control-flow mitigations for Load Value Injection (LVI)
  -mlvi-hardening         Enable all mitigations for Load Value Injection (LVI)
  -mmlir <value>          Additional arguments to forward to MLIR's option processing
  -mno-lvi-cfi            Disable control-flow mitigations for Load Value Injection (LVI)
  -mno-lvi-hardening      Disable mitigations for Load Value Injection (LVI)
  -mno-seses              Disable speculative execution side effect suppression (SESES)
  -mseses                 Enable speculative execution side effect suppression (SESES). Includes LVI control flow integrity mitigations
  -nobuiltininc           Disable builtin #include directories
  -object-file-name=<file>
                          Set the output <file> for debug infos
  -print-supported-cpus   Print supported cpu models for the given target (if target is not specified, it will print the supported cpus for the default target)
  -Qunused-arguments      Don't emit warning for unused driver arguments
  -R<remark>              Enable the specified remark
  --start-no-unused-arguments
                          Don't emit warnings about unused arguments for the following arguments
  -sycl-std=<value>       SYCL language standard to compile for.
  --target=<value>        Generate code for the given target
  --version               Print version information
  -v                      Show commands to run and use verbose output
  -W<warning>             Enable the specified warning
  -Xclang <arg>           Pass <arg> to the clang compiler
Options (174)
OptionDescriptionSource
-###Print (but do not run) the commands to run for this compilationhelp
--analyzeRun the static analyzerhelp
-darwin-target-variant valueGenerate code for an additional runtime variant of the deployment targethelp
-emit-astEmit Clang AST files for source inputshelp
-enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clangTrivial automatic variable initialization to zero is only here for benchmarks, it'll eventually be removed, and I'm OK with that because I'm only using it to benchmarkhelp
--end-no-unused-argumentsStart emitting warnings for unused driver argumentshelp
-faddrsigEmit an address-significance tablehelp
-fansi-escape-codesUse ANSI escape codes for diagnosticshelp
-fblocksEnable the 'blocks' language featurehelp
-fcf-protectionEnable cf-protection in 'full' modehelp
-fcolor-diagnosticsEnable colors in diagnosticshelp
-fcommonPlace uninitialized global variables in a common blockhelp
-fcomplete-member-pointersRequire member pointer base types to be complete if they would be significant under the Microsoft ABIhelp
-fcoverage-compilation-dir valueThe compilation directory to embed in the coverage mapping.help
-fcoverage-mappingGenerate coverage mapping to enable code coverage analysishelp
-fcrash-diagnostics-dir dirPut crash-report files in <dir>help
-fcs-profile-generate directoryGenerate instrumented code to collect context sensitive execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)help
-fdebug-compilation-dir valueThe compilation directory to embed in the debug infohelp
-fdebug-macroEmit macro debug informationhelp
-fdelayed-template-parsingParse templated function definitions at the end of the translation unithelp
-fdelete-null-pointer-checksTreat usage of null pointers as undefined behavior (default)help
-fdiagnostics-absolute-pathsPrint absolute paths in diagnosticshelp
-fdiagnostics-parseable-fixitsPrint fix-its in machine parseable formhelp
-fdriver-onlyOnly run the driver.help
-fexperimental-libraryControl whether unstable and experimental library features are enabled.help
-ffile-compilation-dir valueThe compilation directory to embed in the debug info and coverage mapping.help
-ffile-reproducibleUse the target's platform-specific path separator character when expanding the __FILE__ macrohelp
-fforce-emit-vtablesEmits more virtual tables to improve devirtualizationhelp
-fgnuc-version valueSets various macros to claim compatibility with the given GCC version (default is 4.2.1)help
-fimplicit-module-mapsImplicitly search the file system for module map files.help
-fintegrated-cc1Run cc1 in-processhelp
-flto valueSet LTO modehelp
-fmerge-all-constantsAllow merging of constantshelp
-fmodule-file name>=]<fileSpecify the mapping of module name to precompiled module file, or load a module file if name is omitted.help
-fmodule-map-file fileLoad this module map filehelp
-fmodule-name nameSpecify the name of the module to buildhelp
-fmodules-decluseRequire declaration of modules used within a modulehelp
-fmodules-ignore-macro valueIgnore the definition of the given macro when building and loading moduleshelp
-fmodules-search-allSearch even non-imported modules to resolve referenceshelp
-fmodules-strict-decluseLike -fmodules-decluse but requires all headers to be in moduleshelp
-fmodulesEnable the 'modules' language featurehelp
-fms-compatibility-version valueDot-separated value representing the Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))help
-fms-compatibilityEnable full Microsoft Visual C++ compatibilityhelp
-fms-extensionsAccept some non-standard constructs supported by the Microsoft compilerhelp
-fms-hotpatchEnsure that all functions can be hotpatched at runtimehelp
-fmsc-version valueMicrosoft compiler version number to report in _MSC_VER (0 = don't define it (default))help
-fno-addrsigDon't emit an address-significance tablehelp
-fno-builtin- valueDisable implicit builtin knowledge of a specific functionhelp
-fno-builtinDisable implicit builtin knowledge of functionshelp
-fno-color-diagnosticsDisable colors in diagnosticshelp
-fno-complete-member-pointersDo not require member pointer base types to be complete if they would be significant under the Microsoft ABIhelp
-fno-coverage-mappingDisable code coverage analysishelp
-fno-crash-diagnosticsDisable auto-generation of preprocessed source files and a script for reproduction during a clang crashhelp
-fno-debug-macroDo not emit macro debug informationhelp
-fno-delayed-template-parsingDisable delayed template parsinghelp
-fno-delete-null-pointer-checksDo not treat usage of null pointers as undefined behaviorhelp
-fno-file-reproducibleUse the host's platform-specific path separator character when expanding the __FILE__ macrohelp
-fno-integrated-cc1Spawn a separate process for each cc1help
-fno-integrated-objemitterUse external machine object code emitter.help
-fno-knr-functionsDisable support for K&R C function declarationshelp
-fno-ltoDisable LTO mode (default)help
-fno-offload-ltoDisable LTO mode (default) for offload compilationhelp
-fno-profile-generateDisable generation of profile instrumentation.help
-fno-profile-instr-generateDisable generation of profile instrumentation.help
-fno-profile-instr-useDisable using instrumentation data for profile-guided optimizationhelp
-fno-sanitize-address-globals-dead-strippingDisable linker dead stripping of globals in AddressSanitizerhelp
-fno-sanitize-address-outline-instrumentationUse default code inlining logic for the address sanitizerhelp
-fno-sanitize-address-poison-custom-array-cookieDisable poisoning array cookies when using custom operator new[] in AddressSanitizerhelp
-fno-sanitize-address-use-after-scopeDisable use-after-scope detection in AddressSanitizerhelp
-fno-sanitize-address-use-odr-indicatorDisable ODR indicator globalshelp
-fno-sanitize-cfi-canonical-jump-tablesDo not make the jump table addresses canonical in the symbol tablehelp
-fno-sanitize-cfi-cross-dsoDisable control flow integrity (CFI) checks for cross-DSO calls.help
-fno-sanitize-coverage valueDisable features of coverage instrumentation for Sanitizershelp
-fno-sanitize-hwaddress-experimental-aliasingDisable aliasing mode in HWAddressSanitizerhelp
-fno-sanitize-ignorelistDon't use ignorelist file for sanitizershelp
-fno-sanitize-memory-param-retvalDisable detection of uninitialized parameters and return valueshelp
-fno-sanitize-memory-track-originsDisable origins tracking in MemorySanitizerhelp
-fno-sanitize-memory-use-after-dtorDisable use-after-destroy detection in MemorySanitizerhelp
-fno-sanitize-recover valueDisable recovery for specified sanitizershelp
-fno-sanitize-statsDisable sanitizer statistics gathering.help
-fno-sanitize-thread-atomicsDisable atomic operations instrumentation in ThreadSanitizerhelp
-fno-sanitize-thread-func-entry-exitDisable function entry/exit instrumentation in ThreadSanitizerhelp
-fno-sanitize-thread-memory-accessDisable memory access instrumentation in ThreadSanitizerhelp
-fno-sanitize-trap valueDisable trapping for specified sanitizershelp
-fno-standalone-debugLimit debug information produced to reduce size of debug binaryhelp
-fno-syclDisables SYCL kernels compilation for devicehelp
-fno-temp-fileDirectly create compilation output files.help
-fobjc-runtime valueSpecify the target Objective-C runtime kind and versionhelp
-foffload-lto valueSet LTO mode for offload compilationhelp
-forder-file-instrumentationGenerate instrumented code to collect order file into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)help
-fpch-instantiate-templatesInstantiate templates already while building a PCHhelp
-fprofile-exclude-files valueInstrument only functions from files where names don't match all the regexes separated by a semi-colonhelp
-fprofile-filter-files valueInstrument only functions from files where names match any regex separated by a semi-colonhelp
-fprofile-generate directoryGenerate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)help
-fprofile-instr-generate fileGenerate instrumented code to collect execution counts into <file> (overridden by LLVM_PROFILE_FILE env var)help
-fprofile-instr-use valueUse instrumentation data for profile-guided optimizationhelp
-fprofile-list valueFilename defining the list of functions/files to instrumenthelp
-fprofile-remapping-file fileUse the remappings described in <file> to match the profile data against names in the programhelp
-fprofile-update methodSet update method of profile countershelp
-fprofile-use pathnameUse instrumentation data for profile-guided optimization.help
-fprotect-parensDetermines whether the optimizer honors parentheses when floating-point expressions are evaluatedhelp
-fsanitize-address-destructor valueSet destructor type used in ASan instrumentationhelp
-fsanitize-address-field-padding valueLevel of field padding for AddressSanitizerhelp
-fsanitize-address-globals-dead-strippingEnable linker dead stripping of globals in AddressSanitizerhelp
-fsanitize-address-outline-instrumentationAlways generate function calls for address sanitizer instrumentationhelp
-fsanitize-address-poison-custom-array-cookieEnable poisoning array cookies when using custom operator new[] in AddressSanitizerhelp
-fsanitize-address-use-after-return modeSelect the mode of detecting stack use-after-return in AddressSanitizerhelp
-fsanitize-address-use-after-scopeEnable use-after-scope detection in AddressSanitizerhelp
-fsanitize-address-use-odr-indicatorEnable ODR indicator globals to avoid false ODR violation reports in partially sanitized programs at the cost of an increase in binary sizehelp
-fsanitize-blacklist valueAlias for -fsanitize-ignorelist=help
-fsanitize-cfi-canonical-jump-tablesMake the jump table addresses canonical in the symbol tablehelp
-fsanitize-cfi-cross-dsoEnable control flow integrity (CFI) checks for cross-DSO calls.help
-fsanitize-cfi-icall-generalize-pointersGeneralize pointers in CFI indirect call type signature checkshelp
-fsanitize-coverage-allowlist valueRestrict sanitizer coverage instrumentation exclusively to modules and functions that match the provided special case list, except the blocked oneshelp
-fsanitize-coverage-blacklist valueDeprecated, use -fsanitize-coverage-ignorelist= insteadhelp
-fsanitize-coverage-ignorelist valueDisable sanitizer coverage instrumentation for modules and functions that match the provided special case list, even the allowed oneshelp
-fsanitize-coverage-whitelist valueDeprecated, use -fsanitize-coverage-allowlist= insteadhelp
-fsanitize-coverage valueSpecify the type of coverage instrumentation for Sanitizershelp
-fsanitize-hwaddress-abi valueSelect the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor).help
-fsanitize-hwaddress-experimental-aliasingEnable aliasing mode in HWAddressSanitizerhelp
-fsanitize-ignorelist valuePath to ignorelist file for sanitizershelp
-fsanitize-memory-param-retvalEnable detection of uninitialized parameters and return valueshelp
-fsanitize-memory-track-origins valueEnable origins tracking in MemorySanitizerhelp
-fsanitize-memory-use-after-dtorEnable use-after-destroy detection in MemorySanitizerhelp
-fsanitize-memtag-mode valueSet default MTE mode to 'sync' (default) or 'async'help
-fsanitize-recover valueEnable recovery for specified sanitizershelp
-fsanitize-statsEnable sanitizer statistics gathering.help
-fsanitize-system-blacklist valueAlias for -fsanitize-system-ignorelist=help
-fsanitize-system-ignorelist valuePath to system ignorelist file for sanitizershelp
-fsanitize-thread-atomicsEnable atomic operations instrumentation in ThreadSanitizer (default)help
-fsanitize-thread-func-entry-exitEnable function entry/exit instrumentation in ThreadSanitizer (default)help
-fsanitize-thread-memory-accessEnable memory access instrumentation in ThreadSanitizer (default)help
-fsanitize-trapEnable trapping for all sanitizershelp
-fsanitize-undefined-strip-path-components numberStrip (or keep only, if negative) a given number of path components when emitting check metadata.help
-fsanitize checkTurn on runtime checks for various forms of undefined or suspicious behavior.help
-fsplit-lto-unitEnables splitting of the LTO unithelp
-fstandalone-debugEmit full debug info for all types used by the programhelp
-fswift-async-fp optionControl emission of Swift async extended frame infohelp
-fsyclEnables SYCL kernels compilation for devicehelp
-fsystem-moduleBuild this module as a system module.help
-fthin-link-bitcode valueWrite minimized bitcode to <file> for the ThinLTO thin link onlyhelp
-ftime-trace-granularity valueMinimum time granularity (in microseconds) traced by time profilerhelp
-ftime-trace valueTurn on time profiler.help
-ftrivial-auto-var-init-stop-after valueStop initializing trivial automatic stack variables after the specified number of instanceshelp
-ftrivial-auto-var-init valueInitialize trivial automatic stack variables.help
-fvirtual-function-eliminationEnables dead virtual function elimination optimization.help
-gcodeview-ghashEmit type record hashes in a .debug$H sectionhelp
-gcodeviewGenerate CodeView debug informationhelp
-gdwarfGenerate source-level debug information with the default dwarf versionhelp
-gline-directives-onlyEmit debug line info directives onlyhelp
-gline-tables-onlyEmit debug line number tables onlyhelp
-mfunction-return valueReplace returns with jumps to ``__x86_return_thunk`` (x86 only, error otherwise)help
-miamcuUse Intel MCU ABIhelp
-mibt-sealOptimize fcf-protection=branch/full (requires LTO).help
-mllvm valueAdditional arguments to forward to LLVM's option processinghelp
-mlvi-cfiEnable only control-flow mitigations for Load Value Injection (LVI)help
-mlvi-hardeningEnable all mitigations for Load Value Injection (LVI)help
-mmlir valueAdditional arguments to forward to MLIR's option processinghelp
-mno-lvi-cfiDisable control-flow mitigations for Load Value Injection (LVI)help
-mno-lvi-hardeningDisable mitigations for Load Value Injection (LVI)help
-mno-sesesDisable speculative execution side effect suppression (SESES)help
-msesesEnable speculative execution side effect suppression (SESES).help
-nobuiltinincDisable builtin #include directorieshelp
-object-file-name fileSet the output <file> for debug infoshelp
-print-supported-cpusPrint supported cpu models for the given target (if target is not specified, it will print the supported cpus for the default target)help
-Qunused-argumentsDon't emit warning for unused driver argumentshelp
-R remarkEnable the specified remarkhelp
--start-no-unused-argumentsDon't emit warnings about unused arguments for the following argumentshelp
-sycl-std valueSYCL language standard to compile for.help
--target valueGenerate code for the given targethelp
--versionPrint version informationhelp
-vShow commands to run and use verbose outputhelp
-W warningEnable the specified warninghelp
-Xclang argPass <arg> to the clang compilerhelp

Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.