|`-B <dir>`|Supported|`Add <dir> to search path for binaries and object files used implicitly`|
|`-CC`|Supported|`Include comments from within macros in preprocessed output`|
|`-cl-denorms-are-zero`|Supported|`OpenCL only. Allow denormals to be flushed to zero.`|
|`-cl-fast-relaxed-math`|Supported|`OpenCL only. Sets -cl-finite-math-only and -cl-unsafe-math-optimizations, and defines __FAST_RELAXED_MATH__.`|
|`-cl-finite-math-only`|Supported|`OpenCL only. Allow floating-point optimizations that assume arguments and results are not NaNs or +-Inf.`|
|`-cl-fp32-correctly-rounded-divide-sqrt`|Supported|`OpenCL only. Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded.`|
|`-cl-mad-enable`|Supported|`OpenCL only. Allow use of less precise MAD computations in the generated binary.`|
|`-cl-no-signed-zeros`|Supported|`OpenCL only. Allow use of less precise no signed zeros computations in the generated binary.`|
|`-cl-opt-disable`|Supported|`OpenCL only. This option disables all optimizations. By default optimizations are enabled.`|
|`-cl-single-precision-constant`|Supported|`OpenCL only. Treat double precision floating-point constant as single precision constant.`|
|`-cl-std=<value>`|Supported|`OpenCL language standard to compile for.`|
|`-cl-strict-aliasing`|Supported|`OpenCL only. This option is added for compatibility with OpenCL 1.0.`|
|`-cl-uniform-work-group-size`|Supported|`OpenCL only. Defines that the global work-size be a multiple of the work-group size specified to clEnqueueNDRangeKernel`|
|`-cl-unsafe-math-optimizations`|Supported|`OpenCL only. Allow unsafe floating-point optimizations. Also implies -cl-no-signed-zeros and -cl-mad-enable.`|
|`-emit-merged-ifs`|Supported|`Generate Interface Stub Files, emit merged text not binary.`|
|`--emit-static-lib`|Supported|`Enable linker job to emit a static library.`|
|`-enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang`|Supported|`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`|
|`-E`|Supported|`Only run the preprocessor`|
|`-fAAPCSBitfieldLoad`|Unsupported|`Follows the AAPCS standard that all volatile bit-field write generates at least one load. (ARM only).`|
|`-fdiagnostics-absolute-paths`|Supported|`Print absolute paths in diagnostics`|
|`-fdiagnostics-hotness-threshold=<number>`|Unsupported|`Prevent optimization remarks from being output if they do not have at least this profile count`|
|`-fdiagnostics-parseable-fixits`|Supported|`Print fix-its in machine parseable form`|
|`-fdiagnostics-print-source-range-info`|Supported|`Print source range spans in numeric form`|
|`-fdiagnostics-show-hotness`|Unsupported|`Enable profile hotness information in diagnostic line`|
|`-fdiagnostics-show-note-include-stack`|Supported|`Display include stacks for diagnostic notes`|
|`-fdiagnostics-show-option`|Supported|`Print option name with mappable diagnostics`|
|`-fdiagnostics-show-template-tree`|Supported|`Print a template comparison tree for differing templates`|
|`-ffp-contract=<value>`|Supported|`Form fused FP ops (e.g. FMAs): fast (everywhere) \| on (according to FP_CONTRACT pragma) \| off (never fuse). Default is 'fast' for CUDA/HIP and 'on' otherwise.`|
|`-ffp-exception-behavior=<value>`|Supported|`Specifies the exception behavior of floating-point operations.`|
|`-ffp-model=<value>`|Supported|`Controls the semantics of floating-point calculations.`|
|`-ffree-form`|Supported|`Enable free-form format for Fortran`|
|`-flto-jobs=<value>`|Unsupported|`Controls the backend parallelism of -flto=thin (default of 0 means the number of threads will be derived from the number of CPUs detected)`|
|`-flto=<value>`|Unsupported|`Set LTO mode to either 'full' or 'thin'`|
|`-fmodule-file=[<name>=]<file>`|Unsupported|`Specify the mapping of module name to precompiled module file, or load a module file if name is omitted.`|
|`-fmodule-map-file=<file>`|Unsupported|`Load this module map file`|
|`-fmodule-name=<name>`|Unsupported|`Specify the name of the module to build`|
|`-fmodules-cache-path=<directory>`|Unsupported|`Specify the module cache path`|
|`-fmodules-decluse`|Unsupported|`Require declaration of modules used within a module`|
|`-fmodules-disable-diagnostic-validation`|Unsupported|`Disable validation of the diagnostic options when loading the module`|
|`-fmodules-ignore-macro=<value>`|Unsupported|`Ignore the definition of the given macro when building and loading modules`|
|`-fmodules-prune-after=<seconds>`|Unsupported|`Specify the interval (in seconds) after which a module file will be considered unused`|
|`-fmodules-prune-interval=<seconds>`|Unsupported|`Specify the interval (in seconds) between attempts to prune the module cache`|
|`-fmodules-search-all`|Unsupported|`Search even non-imported modules to resolve references`|
|`-fmodules-strict-decluse`|Unsupported|`Like -fmodules-decluse but requires all headers to be in modules`|
|`-fmodules-ts`|Unsupported|`Enable support for the C++ Modules TS`|
|`-fmodules-user-build-path <directory>`|Unsupported|`Specify the module user build path`|
|`-fmodules-validate-once-per-build-session`|Unsupported|`Don't verify input files for the modules if the module has been successfully validated or loaded during this build session`|
|`-fmodules-validate-system-headers`|Supported|`Validate the system headers that a module depends on when loading the module`|
|`-fmodules`|Unsupported|`Enable the 'modules' language feature`|
|`-fms-compatibility-version=<value>`|Supported|`Dot-separated value representing the Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))`|
|`-fms-compatibility`|Supported|`Enable full Microsoft Visual C++ compatibility`|
|`-fms-extensions`|Supported|`Accept some non-standard constructs supported by the Microsoft compiler`|
|`-fmsc-version=<value>`|Supported|`Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))`|
|`-fnew-alignment=<align>`|Supported|`Specifies the largest alignment guaranteed by '::operator new(size_t)'`|
|`-fno-addrsig`|Supported|`Don't emit an address-significance table`|
|`-fno-common`|Supported|`Compile common globals like normal definitions`|
|`-fno-complete-member-pointers`|Supported|`Do not require member pointer base types to be complete if they would be significant under the Microsoft ABI`|
|`-fno-constant-cfstrings`|Supported|`Disable creation of CodeFoundation-type constant strings`|
|`-fno-sanitize-address-poison-custom-array-cookie`|Supported on Host only|`Disable poisoning array cookies when using custom operator new[] in AddressSanitizer`|
|`-fno-sanitize-address-use-after-scope`|Supported on Host only|`Disable use-after-scope detection in AddressSanitizer`|
|`-fno-sanitize-address-use-odr-indicator`|Supported on Host only|`Disable ODR indicator globals`|
|`-fno-sanitize-blacklist`|Supported on Host only|`Don't use blacklist file for sanitizers`|
|`-fno-sanitize-cfi-canonical-jump-tables`|Supported on Host only|`Do not make the jump table addresses canonical in the symbol table`|
|`-fno-sanitize-cfi-cross-dso`|Supported on Host only|`Disable control flow integrity (CFI) checks for cross-DSO calls.`|
|`-fno-sanitize-coverage=<value>`|Supported on Host only|`Disable specified features of coverage instrumentation for Sanitizers`|
|`-fno-sanitize-memory-track-origins`|Supported on Host only|`Disable origins tracking in MemorySanitizer`|
|`-fno-sanitize-memory-use-after-dtor`|Supported on Host only|`Disable use-after-destroy detection in MemorySanitizer`|
|`-fno-sanitize-recover=<value>`|Supported on Host only|`Disable recovery for specified sanitizers`|
|`-fno-sanitize-stats`|Supported on Host only|`Disable sanitizer statistics gathering.`|
|`-fno-sanitize-thread-atomics`|Supported on Host only|`Disable atomic operations instrumentation in ThreadSanitizer`|
|`-fno-sanitize-thread-func-entry-exit`|Supported on Host only|`Disable function entry/exit instrumentation in ThreadSanitizer`|
|`-fno-sanitize-thread-memory-access`|Supported on Host only|`Disable memory access instrumentation in ThreadSanitizer`|
|`-fno-sanitize-trap=<value>`|Supported on Host only|`Disable trapping for specified sanitizers`|
|`-fno-sanitize-trap`|Supported on Host only|`Disable trapping for all sanitizers`|
|`-fno-stack-protector`|Supported|`Disable the use of stack protectors`|
|`-fno-standalone-debug`|Supported|`Limit debug information produced to reduce size of debug binary`|
|`-fno-strict-float-cast-overflow`|Supported|`Relax language rules and try to match the behavior of the target's native float-to-int conversion instructions`|
|`-fno-use-flang-math-libs`|Supported|`Use Flang internal runtime math library instead of LLVM math intrinsics.`|
|`-fno-use-init-array`|Supported|`Use .ctors/.dtors instead of .init_array/.fini_array`|
|`-fno-visibility-inlines-hidden-static-local-var`|Supported|`Disables -fvisibility-inlines-hidden-static-local-var (this is the default on non-darwin targets)`|
|`-fno-xray-function-index`|Unsupported|`Omit function index section at the expense of single-function patching performance`|
|`-fno-zero-initialized-in-bss`|Supported|`Don't place zero initialized data in BSS`|
|`-foptimization-record-file=<file>`|Supported|`Specify the output name of the file containing the optimization remarks. Implies -fsave-optimization-record. On Darwin platforms, this cannot be used with multiple -arch <arch> options.`|
|`-foptimization-record-passes=<regex>`|Supported|`Only include passes which match a specified regular expression in the generated optimization record (by default, include all passes)`|
|`-forder-file-instrumentation`|Supported|`Generate instrumented code to collect order file into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)`|
|`-fplugin=<dsopath>`|Supported|`Load the named plugin (dynamic shared object)`|
|`-fprebuilt-module-path=<directory>`|Unsupported|`Specify the prebuilt module path`|
|`-fprofile-exclude-files=<value>`|Unsupported|`Instrument only functions from files where names don't match all the regexes separated by a semi-colon`|
|`-fprofile-filter-files=<value>`|Unsupported|`Instrument only functions from files where names match any regex separated by a semi-colon`|
|`-fprofile-generate=<directory>`|Unsupported|`Generate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)`|
|`-fprofile-generate`|Unsupported|`Generate instrumented code to collect execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)`|
|`-fprofile-instr-generate=<file>`|Unsupported|`Generate instrumented code to collect execution counts into <file> (overridden by LLVM_PROFILE_FILE env var)`|
|`-fprofile-instr-generate`|Unsupported|`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>`|Unsupported|`Use instrumentation data for profile-guided optimization`|
|`-fprofile-remapping-file=<file>`|Unsupported|`Use the remappings described in <file> to match the profile data against names in the program`|
|`-fprofile-sample-accurate`|Unsupported|`Specifies that the sample profile is accurate`|
|`-fprofile-use=<pathname>`|Unsupported|`Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from <pathname>/default.profdata. Otherwise, it reads from file <pathname>.`|
|`-freciprocal-math`|Supported|`Allow division operations to be reassociated`|
|`-freg-struct-return`|Unsupported|`Override the default ABI to return small structs in registers`|
|`-fregister-global-dtors-with-atexit`|Supported|`Use atexit or __cxa_atexit to register global destructors`|
|`-frwpi`|Unsupported|`Generate read-write position independent code (ARM only)`|
|`-fsanitize-address-field-padding=<value>`|Supported on Host only|`Level of field padding for AddressSanitizer`|
|`-fsanitize-address-globals-dead-stripping`|Supported on Host only|`Enable linker dead stripping of globals in AddressSanitizer`|
|`-fsanitize-address-poison-custom-array-cookie`|Supported on Host only|`Enable poisoning array cookies when using custom operator new[] in AddressSanitizer`|
|`-fsanitize-address-use-after-scope`|Supported on Host only|`Enable use-after-scope detection in AddressSanitizer`|
|`-fsanitize-address-use-odr-indicator`|Supported on Host only|`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>`|Supported on Host only|`Path to blacklist file for sanitizers`|
|`-fsanitize-cfi-canonical-jump-tables`|Supported on Host only|`Make the jump table addresses canonical in the symbol table`|
|`-fsanitize-cfi-cross-dso`|Supported on Host only|`Enable control flow integrity (CFI) checks for cross-DSO calls.`|
|`-fsanitize-cfi-icall-generalize-pointers`|Supported on Host only|`Generalize pointers in CFI indirect call type signature checks`|
|`-fsanitize-coverage-allowlist=<value>`|Supported on Host only|`Restrict sanitizer coverage instrumentation exclusively to modules and functions that match the provided special case list, except the blocked ones`|
|`-fsanitize-coverage-blacklist=<value>`|Supported on Host only|`Deprecated, use -fsanitize-coverage-blocklist= instead`|
|`-fsanitize-coverage-blocklist=<value>`|Supported on Host only|`Disable sanitizer coverage instrumentation for modules and functions that match the provided special case list, even the allowed ones`|
|`-fsanitize-coverage-whitelist=<value>`|Supported on Host only|`Deprecated, use -fsanitize-coverage-allowlist= instead`|
|`-fsanitize-coverage=<value>`|Supported on Host only|`Specify the type of coverage instrumentation for Sanitizers`|
|`-fsanitize-hwaddress-abi=<value>`|Supported on Host only|`Select the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor). This option is currently unused.`|
|`-fsanitize-memory-track-origins=<value>`|Supported on Host only|`Enable origins tracking in MemorySanitizer`|
|`-fsanitize-memory-track-origins`|Supported on Host only|`Enable origins tracking in MemorySanitizer`|
|`-fsanitize-memory-use-after-dtor`|Supported on Host only|`Enable use-after-destroy detection in MemorySanitizer`|
|`-fsanitize-recover=<value>`|Supported on Host only|`Enable recovery for specified sanitizers`|
|`-fsanitize-stats`|Supported on Host only|`Enable sanitizer statistics gathering.`|
|`-fsanitize-system-blacklist=<value>`|Supported on Host only|`Path to system blacklist file for sanitizers`|
|`-fsanitize-thread-atomics`|Supported on Host only|`Enable atomic operations instrumentation in ThreadSanitizer (default)`|
|`-fsanitize-thread-func-entry-exit`|Supported on Host only|`Enable function entry/exit instrumentation in ThreadSanitizer (default)`|
|`-fsanitize-thread-memory-access`|Supported on Host only|`Enable memory access instrumentation in ThreadSanitizer (default)`|
|`-fsanitize-trap=<value>`|Supported on Host only|`Enable trapping for specified sanitizers`|
|`-fsanitize-trap`|Supported on Host only|`Enable trapping for all sanitizers`|
|`-fsanitize-undefined-strip-path-components=<number>`|Supported on Host only|`Strip (or keep only, if negative) a given number of path components when emitting check metadata.`|
|`-fsanitize=<check>`|Supported on Host only|`Turn on runtime checks for various forms of undefined or suspicious behavior. See user manual for available checks`|
|`-fsave-optimization-record=<format>`|Supported|`Generate an optimization record file in a specific format`|
|`-fslp-vectorize`|Supported|`Enable the superword-level parallelism vectorization passes`|
|`-fsplit-dwarf-inlining`|Unsupported|`Provide minimal debug info in the object/executable to facilitate online symbolication/stack traces in the absence of .dwo/.dwp files when using Split DWARF`|
|`-fstack-protector-all`|Unsupported|`Enable stack protectors for all functions`|
|`-fstack-protector-strong`|Unsupported|`Enable stack protectors for some functions vulnerable to stack smashing. Compared to -fstack-protector, this uses a stronger heuristic that includes functions containing arrays of any size (and any type), as well as any calls to alloca or the taking of an address from a local variable`|
|`-fstack-protector`|Unsupported|`Enable stack protectors for some functions vulnerable to stack smashing. This uses a loose heuristic which considers functions vulnerable if they contain a char (or 8bit integer) array or constant sized calls to alloca , which are of greater size than ssp-buffer-size (default: 8 bytes). All variable sized calls to alloca are considered vulnerable. A function with a stack protector has a guard value added to the stack frame that is checked on function exit. The guard value must be positioned in the stack frame such that a buffer overflow from a vulnerable variable will overwrite the guard value before overwriting the function's return address. The reference stack guard value is stored in a global variable.`|
|`-fuse-flang-math-libs`|Supported|`Use Flang internal runtime math library instead of LLVM math intrinsics.`|
|`-fuse-line-directives`|Supported|`Use #line in preprocessed output`|
|`-fvalidate-ast-input-files-content`|Supported|`Compute and store the hash of input files used to build an AST. Files with mismatching mtime's are considered valid if both contents is identical`|
|`-fvisibility-inlines-hidden-static-local-var`|Supported|`When -fvisibility-inlines-hidden is enabled, static variables in inline C++ member functions will also be given hidden visibility by default`|
|`-fxray-instrumentation-bundle= <value>`|Unsupported|`Select which XRay instrumentation points to emit. Options: all, none, function-entry, function-exit, function, custom. Default is 'all'. 'function' includes both 'function-entry' and 'function-exit'.`|
|`-ibuiltininc`|Supported|`Enable builtin #include directories even when -nostdinc is used before or after -ibuiltininc. Using -nobuiltininc after the option disables it`|
|`-I <dir>`|Supported|`Add directory to include search path. If there are multiple -I options, these directories are searched in the order they are given before the standard system directories are searched. If the same directory is in the SYSTEM include search paths, for example if also specified with -isystem, the -I option will be ignored`|
|`-MD`|Supported|`Write a depfile containing user and system headers`|
|`-meabi <value>`|Supported|`Set EABI type, e.g. 4, 5 or gnu (default depends on triple)`|
|`-membedded-data`|Unsupported|`Place constants in the .rodata section instead of the .sdata section even if they meet the -G <size> threshold (MIPS)`|
|`-mpie-copy-relocations`|Supported|`Use copy relocations support for PIE builds`|
|`-mprefer-vector-width=<value>`|Unsupported|`Specifies preferred vector width for auto-vectorization. Defaults to 'none' which allows target specific decisions.`|
|`-MP`|Supported|`Create phony target for each dependency (other than main file)`|
|`-msve-vector-bits=<value>`|Unsupported|`Specify the size in bits of an SVE vector register. Defaults to the vector length agnostic value of "scalable". (AArch64 only)`|
|`-msvr4-struct-return`|Unsupported|`Return small structs in registers (PPC32 only)`|
|`-M`|Supported|`Like -MD, but also implies -E and writes to stdout by default`|
|`--no-cuda-include-ptx=<value>`|Supported|`Do not include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.`|
|`--no-cuda-version-check`|Supported|`Don't error out if the detected version of the CUDA install is too low for the requested CUDA gpu architecture.`|
|`-no-flang-libs`|Supported|`Do not link against Flang libraries`|
|`--no-offload-arch=<value>`|Supported|`Remove CUDA/HIP offloading device architecture (e.g. sm_35, gfx906) from the list of devices to compile for. 'all' resets the list to its default value.`|
|`--offload-arch=<value>`|Supported|`CUDA offloading device architecture (e.g. sm_35), or HIP offloading target ID in the form of a device architecture followed by target ID features delimited by a colon. Each target ID feature is a pre-defined string followed by a plus or minus sign (e.g. gfx908:xnack+:sramecc-). May be specified more than once.`|
|`-pipe`|Supported|`Use pipes between commands, when possible`|
|`--precompile`|Supported|`Only precompile the input`|
|`-print-effective-triple`|Supported|`Print the effective target triple`|
|`-print-file-name=<file>`|Supported|`Print the full library path of <file>`|
|`-print-ivar-layout`|Unsupported|`Enable Objective-C Ivar layout bitmap print trace`|
|`-print-libgcc-file-name`|Supported|`Print the library path for the currently used compiler runtime library ("libgcc.a" or "libclang_rt.builtins.*.a")`|
|`-print-prog-name=<name>`|Supported|`Print the full program path of <name>`|
|`-print-resource-dir`|Supported|`Print the resource directory pathname`|
|`-print-search-dirs`|Supported|`Print the paths used for finding libraries and programs`|
|`-print-supported-cpus`|Supported|`Print supported cpu models for the given target (if target is not specified, it will print the supported cpus for the default target)`|