CLANG-21(1)
๐ CLANG-21 ๐
okay bestie, sit down, hydrate, because we are reading the manual page for <pink>clang-21</pink> โ User Commands section 1 โ aka the clang LLVM compiler for oneAPI. She's long. She's iconic. She has โจopinionsโจ about your floating point math. Let's go ๐
๐ NAME ๐
clang-21 โ clang LLVM compiler for oneAPI ๐ซถ
โจ DESCRIPTION โจ
The overview, verbatim, no notes:
OVERVIEW: clang LLVM compiler
and how you actually invoke her:
USAGE: clang-21 [options] file...
Yep. That's the whole vibe. Options first, then files, and there are so many options. Let's get into it ๐ธ
๐ฅ OPTIONS: ๐ฅ
Bestie there are a LOT of these. I'm giving you all of them, no skips, no summarising, because we do not gatekeep here. ๐
-###โ prints the commands it would run for this compilation, but does not actually run them. Window shopping, but for compilers ๐๏ธ--amdgpu-arch-tool=<value>โ the tool used for detecting AMD GPU arch in the system.--analyzer-output <value>โ the static analyzer's report output format. Pick your fighter:html,plist,plist-multi-file,plist-html,sarif,sarif-html, ortext.--analyzeโ run the static analyzer. Go off, bestie, find those bugs ๐-B <prefix>โ search$prefix$filefor executables, libraries, and data files. And if$prefixis a directory? Then she searches$prefix/$file. ๐ซ-b <arg>โ pass-b <arg>to the linker on AIX.-CCโ include comments from within macros in the preprocessed output.-cl-denorms-are-zeroโ OpenCL only. Allow denormals to be flushed to zero.-cl-ext=<value>โ OpenCL only. Enable or disable OpenCL extensions/optional features. The argument is a comma-separated sequence of one or more extension names, each prefixed by+or-.-cl-fast-relaxed-mathโ OpenCL only. Sets-cl-finite-math-onlyand-cl-unsafe-math-optimizations, and defines__FAST_RELAXED_MATH__. She's doing the most, and she's proud of it ๐ค-cl-finite-math-onlyโ OpenCL only. Allow floating-point optimizations that assume arguments and results are not NaNs or +-Inf.-cl-fp32-correctly-rounded-divide-sqrtโ OpenCL only. Says that single precision floating-point divide and sqrt used in the program source are correctly rounded.-cl-kernel-arg-infoโ OpenCL only. Generate kernel argument metadata.-cl-mad-enableโ OpenCL only. Allow use of less precise MAD computations in the generated binary.-cl-no-signed-zerosโ OpenCL only. Allow use of less precise no signed zeros computations in the generated binary.-cl-no-stdincโ OpenCL only. Disables all standard includes containing non-native compiler types and functions.-cl-opt-disableโ OpenCL only. This option disables all optimizations. By default optimizations are enabled. (so this is the "turn off the good stuff" button ๐)-cl-single-precision-constantโ OpenCL only. Treat double precision floating-point constant as single precision constant.-cl-std=<value>โ the OpenCL language standard to compile for.-cl-strict-aliasingโ OpenCL only. This option is added for compatibility with OpenCL 1.0.-cl-uniform-work-group-sizeโ OpenCL only. Defines that the global work-size be a multiple of the work-group size specified toclEnqueueNDRangeKernel.-cl-unsafe-math-optimizationsโ OpenCL only. Allow unsafe floating-point optimizations. Also implies-cl-no-signed-zerosand-cl-mad-enable. It's giving danger ๐ but it's documented danger so we respect it.--config=<file>โ specify configuration file.--cuda-compile-host-deviceโ compile CUDA code for both host and device (this is the default). Has no effect on non-CUDA compilations.--cuda-device-onlyโ compile CUDA code for device only.--cuda-feature=<value>โ manually specify the CUDA feature to use.--cuda-host-onlyโ compile CUDA code for host only. Has no effect on non-CUDA compilations.--cuda-include-ptx=<value>โ include PTX for the following GPU architecture (e.g.sm_35) orall. May be specified more than once.--cuda-noopt-device-debugโ enable device-side debug info generation. Disables ptxas optimizations.--cuda-path-ignore-envโ ignore environment variables to detect CUDA installation.--cuda-path=<value>โ CUDA installation path.-cuid=<value>โ an ID for a compilation unit, which should be the same for the same compilation unit but different for different compilation units. It is used to externalize device-side static variables for single source offloading languages CUDA and HIP so that they can be accessed by the host code of the same compilation unit. (iykyk ๐ซก)-cxx-isystem <directory>โ add directory to the C++ SYSTEM include search path.-Cโ include comments in preprocessed output.-cโ only run preprocess, compile, and assemble steps. (no linking, we're being โจselectiveโจ)-darwin-target-variant-triple <value>โ specify the darwin target variant triple.-darwin-target-variant <value>โ generate code for an additional runtime variant of the deployment target.-dDโ print macro definitions in-Emode in addition to normal output.-dependency-dot <value>โ filename to write DOT-formatted header dependencies to.-dependency-file <value>โ filename (or-) to write dependency output to.-dIโ print include directives in-Emode in addition to normal output.-dMโ print macro definitions in-Emode instead of normal output. (she's swapping the whole output out, okay? main character energy ๐)-dsym-dir <dir>โ directory to output dSYM's (if any) to.-dumpdir <dumppfx>โ use<dumpfpx>as a prefix to form auxiliary and dump file names. (yes, the original really writes it<dumpfpx>in the description while the argument is<dumppfx>โ we do not fix typos in this house, we reproduce them ๐ )-dumpmachineโ display the compiler's target processor.-dumpversionโ display the version of the compiler.-D <macro>=<value>โ define<macro>to<value>(or1if<value>is omitted).--embed-dir=<dir>โ add directory to embed search path.-emit-astโ emit Clang AST files for source inputs.-emit-cirโ build ASTs and then lower to ClangIR.--emit-extension-symbol-graphsโ generate additional symbol graphs for extended modules.-emit-interface-stubsโ generate Interface Stub Files.-emit-llvmโ use the LLVM representation for assembler and object files.-emit-merged-ifsโ generate Interface Stub Files, emit merged text not binary.--emit-static-libโ enable linker job to emit a static library.-emit-symbol-graphโ generate Extract API information as a side effect of compilation. (a lil bonus, as a treat ๐)--end-no-unused-argumentsโ start emitting warnings for unused driver arguments.--extract-api-ignores=<value>โ comma separated list of files containing a new line separated list of API symbols to ignore when extracting API information.-extract-apiโ extract API information.-Eโ only run the preprocessor.-faapcs-bitfield-loadโ follows the AAPCS standard that all volatile bit-field write generates at least one load. (ARM only).-faapcs-bitfield-widthโ follows the AAPCS standard requirement stating that volatile bit-field width is dictated by the field container type. (ARM only).-faarch64-jump-table-hardeningโ use hardened lowering for jump-table dispatch.-faddrsigโ emit an address-significance table.-falign-loops=<N>โNmust be a power of two. Align loops to the boundary. (not a power of two? she said what she said ๐ )-faligned-allocationโ enable C++17 aligned allocation functions.-fallow-editor-placeholdersโ treat editor placeholders as valid source code. (yes, the<<<HERE>>>things. she's being generous ๐)-faltivec-src-compat=<value>โ source-level compatibility for Altivec vectors (for PowerPC targets). This includes results of vector comparison (scalar forxl, vector forgcc) as well as behavior when initializing with a scalar (splatting forxl, element zero only forgcc). Formixed, the compatibility is asgccforvector bool/vector pixeland asxlfor other types. Current default ismixed.-fansi-escape-codesโ use ANSI escape codes for diagnostics. ๐ pretty errors, slay-fapinotes-modulesโ enable module-based external API notes support.-fapinotes-swift-version=<version>โ specify the Swift version to use when filtering API notes.-fapinotesโ enable external API notes support.-fapple-kextโ use Apple's kernel extensions ABI.-fapple-link-rtlibโ force linking the clang builtins runtime library.-fapple-pragma-packโ enable Apple gcc-compatible#pragma packhandling.-fapplication-extensionโ restrict code to those available for App Extensions.-fapprox-funcโ allow certain math function calls to be replaced with an approximately equivalent calculation.-fassume-nothrow-exception-dtorโ assume that exception objects' destructors are non-throwing.-fasync-exceptionsโ enable EH Asynchronous exceptions.-fauto-importโ MinGW specific. Enable code generation support for automatic dllimport, and enable support for it in the linker. Enabled by default.-fbasic-block-address-mapโ emit the basic block address map section.-fbasic-block-sections=<value>โ place each function's basic blocks in unique sections (ELF Only).-fbinutils-version=<major.minor>โ produced object files can use all ELF features supported by this binutils version and newer. If-fno-integrated-asis specified, the generated assembly will consider GNU as support.nonemeans that all ELF features can be used, regardless of binutils support. Defaults to2.26.-fblocksโ enable theblockslanguage feature.-fborland-extensionsโ accept non-standard constructs supported by the Borland compiler.-fbuild-session-file=<file>โ use the last modification time of<file>as the build session timestamp.-fbuild-session-timestamp=<time since Epoch in seconds>โ time when the current build session started.-fbuiltin-module-mapโ load the clang builtins module map file.-fc++-abi=<value>โ C++ ABI to use. This will override the target C++ ABI.-fc++-static-destructors=<value>โ controls which variables C++ static destructors are registered for.-fcall-saved-x10โ make the x10 register call-saved (AArch64 only).-fcall-saved-x11โ make the x11 register call-saved (AArch64 only).-fcall-saved-x12โ make the x12 register call-saved (AArch64 only).-fcall-saved-x13โ make the x13 register call-saved (AArch64 only).-fcall-saved-x14โ make the x14 register call-saved (AArch64 only).-fcall-saved-x15โ make the x15 register call-saved (AArch64 only).-fcall-saved-x18โ make the x18 register call-saved (AArch64 only).-fcall-saved-x8โ make the x8 register call-saved (AArch64 only).-fcall-saved-x9โ make the x9 register call-saved (AArch64 only).-fcaret-diagnostics-max-lines=<value>โ set the maximum number of source lines to show in a caret diagnostic (0= no limit).-fcf-protection=<value>โ instrument control-flow architecture protection.
okay and that's where this part wraps bestie โ there's SO much more coming, don't you dare close the tab ๐
โจ OPTIONS โจ
Okay bestie, buckle UP, because this is the big one. Every single flag, no skips, no cap. ๐
-fcf-protectionโ turns on cf-protection in 'full' mode.-fchar8_tโ enables the C++ builtin typechar8_t. slay, unicode girlies rise ๐ฆ-fcheck-newโ tells clang not to assume that C++operator newmight returnNULL. (yes, the double negative is real and yes it's on purpose.)-fclang-abi-compat=<version>โ tries to match the ABI of Clang <version>. time travel but make it linkage โจ-fclangirโ use the ClangIR pipeline to compile.-fcodegen-data-generate=<path>โ emit codegen data into the object file. LLD for MachO (currently) merges them into the specified <path>.-fcodegen-data-generateโ same vibe, no path given: emit codegen data into the object file, and LLD for MachO (currently) merges them intodefault.cgdata.-fcodegen-data-use=<path>โ use codegen data read from the specified <path>.-fcodegen-data-useโ use codegen data read fromdefault.cgdatato optimize the binary.-fcolor-diagnosticsโ enable colors in diagnostics. rainbow error messages, we love to see it ๐-fcomment-block-commands=<arg>โ treat each comma separated argument in <arg> as a documentation comment block command.-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.-fconstexpr-backtrace-limit=<value>โ set the max number of entries to print in a constexpr evaluation backtrace (0= no limit).-fconstexpr-depth=<value>โ set the max depth of recursive constexpr function calls.-fconstexpr-steps=<value>โ set the max number of steps in constexpr function evaluation.-fconvergent-functionsโ assume all functions may be convergent.-fcoro-aligned-allocationโ prefer aligned allocation for C++ Coroutines.-fcoroutinesโ enable support for the C++ Coroutines.-fcoverage-compilation-dir=<value>โ the compilation directory to embed in the coverage mapping.-fcoverage-mappingโ generate coverage mapping to enable code coverage analysis. she's tracking everything, literally ๐-fcoverage-mcdcโ enable MC/DC criteria when generating code coverage.-fcoverage-prefix-map=<old>=<new>โ remap file source paths <old> to <new> in coverage mapping. if there are multiple options, prefix replacement is applied in reverse order starting from the last one. (yes, reverse order, last one first, don't fight it.)-fcrash-diagnostics-dir=<dir>โ put crash-report files in <dir>. ๐ญ crash era-fcrash-diagnostics=<value>โ set level of crash diagnostic reporting (option:off,compiler,all).-fcrash-diagnosticsโ enable crash diagnostic reporting (this is the default).-fcs-profile-generate=<directory>โ generate instrumented code to collect context sensitive execution counts into<directory>/default.profraw(overridden by theLLVM_PROFILE_FILEenv var).-fcs-profile-generateโ generate instrumented code to collect context sensitive execution counts intodefault.profraw(overridden by theLLVM_PROFILE_FILEenv var).-fcuda-prec-sqrtโ specify thatsqrtis correctly rounded (for CUDA devices).-fcuda-short-ptrโ use 32-bit pointers for accessing const/local/shared address spaces.-fcx-fortran-rulesโ range reduction is enabled for complex arithmetic operations.-fcx-limited-rangeโ basic algebraic expansions of complex arithmetic operations involving are enabled.-fcxx-exceptionsโ enable C++ exceptions.-fcxx-modulesโ enable modules for C++.-fdata-sectionsโ place each data in its own section. every data item gets main character energy ๐-fdebug-compilation-dir=<value>โ the compilation directory to embed in the debug info.-fdebug-default-version=<value>โ default DWARF version to use, if a-goption caused DWARF debug info to be produced.-fdebug-info-for-profilingโ emit extra debug info to make sample profile more accurate.-fdebug-macroโ emit macro debug information.-fdebug-prefix-map=<old>=<new>โ for paths in debug info, remap directory <old> to <new>. if multiple options match a path, the last option wins.-fdebug-ranges-base-addressโ use DWARF base address selection entries in.debug_ranges.-fdebug-types-sectionโ place debug types in their own section (ELF Only).-fdeclspecโ allow__declspecas a keyword.-fdefine-target-os-macrosโ enable predefined target OS macros.-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 (this is the default). ๐จ like, actually undefined. not a vibe.-fdiagnostics-absolute-pathsโ print absolute paths in diagnostics.-fdiagnostics-color=<value>โ when to use colors in diagnostics.-fdiagnostics-hotness-threshold=<value>โ prevent optimization remarks from being output if they do not have at least this profile count. use'auto'to apply the threshold from profile summary.-fdiagnostics-misexpect-tolerance=<value>โ prevent misexpect diagnostics from being output if the profile counts are within N% of the expected.-fdiagnostics-parseable-fixitsโ print fix-its in machine parseable form.-fdiagnostics-print-source-range-infoโ print source range spans in numeric form.-fdiagnostics-show-hotnessโ enable profile hotness information in diagnostic line. ๐ฅ-fdiagnostics-show-note-include-stackโ display include stacks for diagnostic notes.-fdiagnostics-show-optionโ print option name with mappable diagnostics.-fdiagnostics-show-template-treeโ print a template comparison tree for differing templates. ๐ณ-fdigraphsโ enable alternative token representations'<:',':>','<%','%>','%:','%:%:'(this is the default).-fdirect-access-external-dataโ don't use GOT indirection to reference external data symbols.-fdisable-block-signature-stringโ disable block signature string).-fdiscard-value-namesโ discard value names in LLVM IR.-fdollars-in-identifiersโ allow'$'in identifiers. ๐ฐ iconic tbh-fdriver-onlyโ only run the driver.-fdwarf-exceptionsโ use DWARF style exceptions.-feliminate-unused-debug-typesโ do not emit debug info for defined but unused types. (she's minimal, she's clean โจ)-fembed-bitcode-markerโ embed placeholder LLVM IR data as a marker.-fembed-bitcode=<option>โ embed LLVM bitcode.-fembed-bitcodeโ embed LLVM IR bitcode as data.-fembed-offload-object=<value>โ embed Offloading device-side binary into host object file as a section.-femit-all-declsโ emit all declarations, even if unused.-femit-compact-unwind-non-canonicalโ try emitting Compact-Unwind for non-canonical entries. maybe overridden by other constraints. ๐ she tries her best-femit-dwarf-unwind=<value>โ when to emit DWARF unwind (EH frame) info.-femulated-tlsโ use emutls functions to access thread_local variables.-fenable-matrixโ enable matrix data type and related builtin functions.-fexceptionsโ enable support for exception handling.-fexcess-precision=<value>โ allows control over excess precision on targets where native support for the precision types is not available. by default, excess precision is used to calculate intermediate results following the rules specified in ISO C99.-fexperimental-late-parse-attributesโ enable experimental late parsing of attributes.-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.-fexperimental-new-constant-interpreterโ enable the experimental new constant interpreter.-fexperimental-openacc-macro-override <value>โ overrides the_OPENACCmacro value for experimental testing during OpenACC support development.-fexperimental-relative-c++-abi-vtablesโ use the experimental C++ class ABI for classes with virtual tables.-fexperimental-sanitize-metadata-ignorelist=<value>โ disable sanitizer metadata for modules and functions that match the provided special case list.-fexperimental-sanitize-metadata=<value>โ specify the type of metadata to emit for binary analysis sanitizers.-fexperimental-strict-floating-pointโ enables the use of non-default rounding modes and non-default exception handling on targets that are not currently ready. (they're not ready, bestie, be gentle ๐)-fextend-arguments=<value>โ controls how scalar integer arguments are extended in calls to unprototyped and varargs functions.-fextend-variable-liveness=<value>โ extend the liveness of user variables through optimizations to prevent stale or optimized-out variable values when debugging.-fextend-variable-livenessโ alias for-fextend-variable-liveness=all.-ffast-mathโ allow aggressive, lossy floating-point optimizations. ๐๏ธ fast and loose, precision found dead-ffat-lto-objectsโ enable fat LTO object support.-ffile-compilation-dir=<value>โ the compilation directory to embed in the debug info and coverage mapping.-ffile-prefix-map=<value>โ remap file source paths in debug info, coverage mapping, predefined preprocessor macros and__builtin_FILE(). implies-ffile-reproducible.-ffile-reproducibleโ use the target's platform-specific path separator character when expanding the__FILE__macro.-ffine-grained-bitfield-accessesโ use separate accesses for consecutive bitfield runs with legal widths and alignments.-ffinite-loopsโ assume all non-trivial loops are finite. ๐ (bold assumption, but okay)-ffinite-math-onlyโ allow floating-point optimizations that assume arguments and results are not NaNs or +-inf. this defines the__FINITE_MATH_ONLY__preprocessor macro.-ffixed-a0โ reserve thea0register (M68k only).-ffixed-a1โ reserve thea1register (M68k only).-ffixed-a2โ reserve thea2register (M68k only).-ffixed-a3โ reserve thea3register (M68k only).-ffixed-a4โ reserve thea4register (M68k only).
okay bestie, deep breath ๐ we have entered the register reservation district, and it is long, but every single one of these does the exact same iconic thing: it tells clang hands off this register, she's booked. no cap. Let's go, one at a time, no skipping, because we don't do that here ๐ซถ
-ffixed-a5โ reserve thea5register, so the compiler leaves it alone. M68k only โจ-ffixed-a6โ reserve thea6register. M68k only โจ-ffixed-d0โ reserve thed0register. M68k only โจ-ffixed-d1โ reserve thed1register. M68k only โจ-ffixed-d2โ reserve thed2register. M68k only โจ-ffixed-d3โ reserve thed3register. M68k only โจ-ffixed-d4โ reserve thed4register. M68k only โจ-ffixed-d5โ reserve thed5register. M68k only โจ-ffixed-d6โ reserve thed6register. M68k only โจ-ffixed-d7โ reserve thed7register. M68k only โจ
now we're doing the SPARC set, and she is thorough ๐
-ffixed-g1โ reserve theG1register. SPARC only ๐ธ-ffixed-g2โ reserve theG2register. SPARC only ๐ธ-ffixed-g3โ reserve theG3register. SPARC only ๐ธ-ffixed-g4โ reserve theG4register. SPARC only ๐ธ-ffixed-g5โ reserve theG5register. SPARC only ๐ธ-ffixed-g6โ reserve theG6register. SPARC only ๐ธ-ffixed-g7โ reserve theG7register. SPARC only ๐ธ-ffixed-i0โ reserve theI0register. SPARC only ๐ธ-ffixed-i1โ reserve theI1register. SPARC only ๐ธ-ffixed-i2โ reserve theI2register. SPARC only ๐ธ-ffixed-i3โ reserve theI3register. SPARC only ๐ธ-ffixed-i4โ reserve theI4register. SPARC only ๐ธ-ffixed-i5โ reserve theI5register. SPARC only ๐ธ-ffixed-l0โ reserve theL0register. SPARC only ๐ธ-ffixed-l1โ reserve theL1register. SPARC only ๐ธ-ffixed-l2โ reserve theL2register. SPARC only ๐ธ-ffixed-l3โ reserve theL3register. SPARC only ๐ธ-ffixed-l4โ reserve theL4register. SPARC only ๐ธ-ffixed-l5โ reserve theL5register. SPARC only ๐ธ-ffixed-l6โ reserve theL6register. SPARC only ๐ธ-ffixed-l7โ reserve theL7register. SPARC only ๐ธ-ffixed-o0โ reserve theO0register. SPARC only ๐ธ-ffixed-o1โ reserve theO1register. SPARC only ๐ธ-ffixed-o2โ reserve theO2register. SPARC only ๐ธ-ffixed-o3โ reserve theO3register. SPARC only ๐ธ-ffixed-o4โ reserve theO4register. SPARC only ๐ธ-ffixed-o5โ reserve theO5register. SPARC only ๐ธ
-ffixed-pointโ turns on support for fixed point types โจ (yes, she's sandwiched right in the middle of the register squad, alphabetisation said so, don't fight it)-ffixed-r19โ reserve registerr19. Hexagon only ๐ฆ-ffixed-r9โ reserve ther9register. ARM only ๐ฆ
AArch64 / RISC-V besties, this next block is literally all yours ๐ (and yes, x1 shows up after x19 โ that's just how she alphabetised, we respect the choices ๐)
-ffixed-x10โ reserve thex10register. AArch64/RISC-V only ๐-ffixed-x11โ reserve thex11register. AArch64/RISC-V only ๐-ffixed-x12โ reserve thex12register. AArch64/RISC-V only ๐-ffixed-x13โ reserve thex13register. AArch64/RISC-V only ๐-ffixed-x14โ reserve thex14register. AArch64/RISC-V only ๐-ffixed-x15โ reserve thex15register. AArch64/RISC-V only ๐-ffixed-x16โ reserve thex16register. AArch64/RISC-V only ๐-ffixed-x17โ reserve thex17register. AArch64/RISC-V only ๐-ffixed-x18โ reserve thex18register. AArch64/RISC-V only ๐-ffixed-x19โ reserve thex19register. AArch64/RISC-V only ๐-ffixed-x1โ reserve thex1register. AArch64/RISC-V only ๐-ffixed-x20โ reserve thex20register. AArch64/RISC-V only ๐-ffixed-x21โ reserve thex21register. AArch64/RISC-V only ๐-ffixed-x22โ reserve thex22register. AArch64/RISC-V only ๐-ffixed-x23โ reserve thex23register. AArch64/RISC-V only ๐-ffixed-x24โ reserve thex24register. AArch64/RISC-V only ๐-ffixed-x25โ reserve thex25register. AArch64/RISC-V only ๐-ffixed-x26โ reserve thex26register. AArch64/RISC-V only ๐-ffixed-x27โ reserve thex27register. AArch64/RISC-V only ๐-ffixed-x28โ reserve thex28register. AArch64/RISC-V only ๐-ffixed-x29โ reserve thex29register. AArch64/RISC-V only ๐-ffixed-x2โ reserve thex2register. AArch64/RISC-V only ๐-ffixed-x30โ reserve thex30register. AArch64/RISC-V only ๐-ffixed-x31โ reserve thex31register. AArch64/RISC-V only ๐-ffixed-x3โ reserve thex3register. AArch64/RISC-V only ๐-ffixed-x4โ reserve thex4register. AArch64/RISC-V only ๐-ffixed-x5โ reserve thex5register. AArch64/RISC-V only ๐-ffixed-x6โ reserve thex6register. AArch64/RISC-V only ๐-ffixed-x7โ reserve thex7register. AArch64/RISC-V only ๐-ffixed-x8โ reserve thex8register. AArch64/RISC-V only ๐-ffixed-x9โ reserve thex9register. AArch64/RISC-V only ๐
okay phew, registers are DONE, we survived, and now we get the fun miscellaneous f-flags ๐ธ
-fforce-check-cxx20-modules-input-filesโ makes clang explicitly check the input source files coming from C++20 modules ๐ no sneaky unchecked inputs here-fforce-dwarf-frameโ always emit a debug frame section, every time, no exceptions ๐-fforce-emit-vtablesโ emits more virtual tables, all in the name of improving devirtualization ๐ฅ-fforce-enable-int128โ turns on support for theint128_ttype ๐-ffp-accuracy=<value>โ tells clang exactly how much accuracy you need for floating-point operations and library calls ๐ฏ-ffp-contract=<value>โ forms fused FP ops, like FMAs ๐ง-ffp-eval-method=<value>โ picks which evaluation method gets used for floating-point arithmetic ๐ค-ffp-exception-behavior=<value>โ sets the exception behavior of floating-point operations ๐จ-ffp-model=<value>โ controls the semantics of floating-point calculations ๐-ffreestandingโ asserts that this compilation is happening in a freestanding environment ๐๏ธ-ffuchsia-api-level=<value>โ set the Fuchsia API level ๐-ffunction-sectionsโ every function gets its own section, main character energy, no sharing ๐-fglobal-iselโ enables the global instruction selector โ๏ธ-fgnu-keywordsโ allow GNU-extension keywords no matter what language standard you picked ๐ซถ-fgnu-runtimeโ generate output that's compatible with the standard GNU Objective-C runtime ๐-fgnu89-inlineโ use the gnu89 inline semantics โจ-fgnuc-version=<value>โ sets a bunch of macros to claim compatibility with the given GCC version (the default is4.2.1) ๐-fgpu-allow-device-initโ allow device side init function in HIP (experimental) ๐งช-fgpu-approx-transcendentalsโ use approximate transcendental functions ๐-fgpu-default-stream=<value>โ specify the default stream. The default value is'legacy'. CUDA/HIP only ๐-fgpu-defer-diagโ defer host/device related diagnostic messages for CUDA/HIP ๐-fgpu-flush-denormals-to-zeroโ flush denormal floating point values to zero in CUDA/HIP device mode ๐-fgpu-rdcโ generate relocatable device code, also known as separate compilation mode ๐งฉ-fgpu-sanitizeโ enable sanitizer for supported offloading devices ๐งผ-fheinous-gnu-extensionsโ (Deprecated) controls whether-Winvalid-gnu-asm-castdefaults to an error or a warning โ ๏ธ-fhip-emit-relocatableโ compile HIP source to relocatable ๐ฆ-fhip-fp32-correctly-rounded-divide-sqrtโ specifies that the single precision floating-point divide and sqrt used in the program source are correctly rounded. HIP device compilation only ๐ฏ-fhip-kernel-arg-nameโ specifies that kernel argument names are preserved. HIP only ๐ท๏ธ-fhip-new-launch-apiโ use the new kernel launching API for HIP ๐-fhlsl-strict-availabilityโ enables strict availability diagnostic mode for HLSL built-in functions ๐-fhonor-infinitiesโ says floating-point optimizations are not allowed to assume arguments and results aren't+-infโพ๏ธ-fhonor-nansโ same deal but for NANs: no optimizations that assume arguments and results aren't NANs ๐ซ-fignore-exceptionsโ enable support for ignoring exception handling constructs ๐-fimplicit-module-mapsโ implicitly search the file system for module map files ๐-fincremental-extensionsโ enable incremental processing extensions, like processing statements at the global scope ๐-finit-global-zeroโ zero initialize globals that don't have default initialization. This is the default โจ-finline-functionsโ inline the functions that are suitable for it ๐ซ-finline-hint-functionsโ inline functions which are (explicitly or implicitly) marked inline ๐ซถ-finline-max-stacksize=<value>โ suppresses inlining of any function whose stack size goes over the given value ๐-finput-charset=<value>โ specify the default character set for source files ๐ค-finstrument-function-entry-bareโ instrument function entry only, after inlining, with no arguments passed to the instrumentation call ๐ป-finstrument-functions-after-inliningโ like-finstrument-functions, but the calls get inserted after inlining ๐ช-finstrument-functionsโ generate calls that instrument function entry and exit ๐-fintegrated-asโ enable the integrated assembler ๐งฐ-fintegrated-cc1โ runcc1in-process ๐-fintegrated-objemitterโ use the internal machine object code emitter โ๏ธ-fjmcโ enable just-my-code debugging ๐-fjump-tablesโ use jump tables for lowering switches ๐น๏ธ-fkeep-persistent-storage-variablesโ keeps all variables with a persistent storage duration โ global, static and thread-local included โ so you're guaranteed they can be directly addressed ๐-fkeep-static-constsโ keep static const variables even if they're unused ๐ซถ-fkeep-system-includesโ instead of expanding system headers while emitting preprocessor output, preserve the#includedirective. Useful when you're producing preprocessed output for test case reduction. It may produce incorrect output if preprocessor symbols that control the included content (like_XOPEN_SOURCE) are defined in the including source file. And the portability of the resulting source to other compilation environments? Not guaranteed. ๐
Only valid with -E. ๐
-flax-vector-conversions=<value>โ enable implicit vector bit-casts ๐ญ-flink-huge-device-codeโ generate and use a custom linker script for huge device code sections ๐๏ธ-flto-jobs=<value>โ controls the backend parallelism of-flto=thin(a default of0means the number of threads gets derived from the number of CPUs detected) ๐งต-flto=autoโ enable LTO in'full'mode ๐ฅ-flto=jobserverโ enable LTO in'full'mode ๐ฅ-flto=<value>โ set the LTO mode ๐๏ธ-fltoโ enable LTO in'full'mode ๐ฅ-fmacro-backtrace-limit=<value>โ bestie, this sets the max number of entries you'll see in a macro expansion backtrace. 0 = no limit, so go wild if you want. โจ-fmacro-prefix-map=<value>โ remap file source paths inside predefined preprocessor macros and__builtin_FILE(). Implies-ffile-reproducible. it's giving "make my build reproducible" energy. ๐-fmath-errnoโ require math functions to signal errors by settingerrno. no cap, they gotta tattle. ๐ข-fmax-tokens=<value>โ the max total number of preprocessed tokens for-Wmax-tokens. keep it cute, keep it counted. ๐ข-fmax-type-align=<value>โ specify the maximum alignment to enforce on pointers that don't have an explicit alignment. so specific. ๐ฏ-fmemory-profile-use=<pathname>โ use a memory profile for profile-guided memory optimization. glow-up your memory game. ๐ง โจ-fmemory-profile=<directory>โ enable heap memory profiling and dump the results into<directory>. detective mode: on. ๐-fmemory-profileโ just enable heap memory profiling. simple. iconic. ๐-fmerge-all-constantsโ allow merging of constants. two become one, slay. ๐-fmessage-length=<value>โ format message diagnostics so they fit within N columns. keep it within the margins, bestie. ๐-fminimize-whitespaceโ ignore the whitespace from the input file when emitting preprocessor output. it will only contain whitespace when necessary, e.g. to keep two minus signs from merging into an increment operator. useful with the-Poption to normalize whitespace such that two files with only formatting changes are equal.
Only valid with -E on C-like inputs and incompatible with -traditional-cpp. so don't try it anywhere else, okay? ๐ซ
-fmodule-file=[<name>=]<file>โ specify the mapping of module name to precompiled module file, or load a module file if name is omitted. mapping queen. ๐-fmodule-header=<kind>โ build a C++20 Header Unit from a header that should be found in the user (fmodule-header=user) or system (fmodule-header=system) search path. choose your fighter. ๐ฅ-fmodule-headerโ build a C++20 Header Unit from a header. no extras, just vibes. ๐ฆ-fmodule-map-file=<file>โ load this module map file. yes ma'am. ๐-fmodule-name=<name>โ specify the name of the module to build. name it and claim it. ๐-fmodule-output=<value>โ save intermediate module file results when compiling a standard C++ module unit. keep the receipts. ๐งพ-fmodule-outputโ same thing but without a value: save intermediate module file results when compiling a standard C++ module unit. ๐พ-fmodulemap-allow-subdirectory-searchโ allow searching for module maps in subdirectories of search paths. go deeper. ๐ณ๏ธ-fmodules-cache-path=<directory>โ specify the module cache path. where the modules live. ๐-fmodules-decluseโ require declaration of modules used within a module. no sneaking around. ๐-fmodules-disable-diagnostic-validationโ disable validation of the diagnostic options when loading the module. turn off the vibe check. ๐ซโ-fmodules-embed-all-files<value>โ embed the contents of all files read by this compilation into the produced module file. pack it all in. ๐-fmodules-ignore-macro=<value>โ ignore the definition of the given macro when building and loading modules. not today, macro. ๐ โโ๏ธ-fmodules-prune-after=<seconds>โ specify the interval (in seconds) after which a module file will be considered unused. bye felicia. ๐-fmodules-prune-interval=<seconds>โ specify the interval (in seconds) between attempts to prune the module cache. regular cleanup check. ๐งน-fmodules-reduced-bmiโ generate the reduced BMI. slimmer, trimmer. โจ-fmodules-search-allโ search even non-imported modules to resolve references. nosy in a good way. ๐-fmodules-strict-decluseโ like-fmodules-declusebut requires all headers to be in modules. stricter than your mom. ๐ค-fmodules-user-build-path <directory>โ specify the module user build path. your personal module corner. ๐๏ธ-fmodules-validate-input-files-contentโ validate PCM input files based on content if mtime differs. don't just trust timestamps, bestie. โฐ-fmodules-validate-once-per-build-sessionโ don't verify input files for the modules if the module has been successfully validated or loaded during this build session. once is enough. ๐-fmodules-validate-system-headersโ validate the system headers that a module depends on when loading the module. check the system's vibe. ๐ฅ๏ธ-fmodulesโ enable the 'modules' language feature. the main character arrives. ๐-fms-compatibility-version=<value>โ a dot-separated value representing the Microsoft compiler version number to report in_MSC_VER. 0 = don't define it (default). windows cosplay, but make it precise. ๐ช-fms-compatibilityโ enable full Microsoft Visual C++ compatibility. full send. ๐-fms-define-stdcโ define'__STDC__'to'1'in MSVC Compatibility mode. just a little define. ๐ฑ-fms-extensionsโ accept some non-standard constructs supported by the Microsoft compiler. chaotic but valid. ๐-fms-hotpatchโ ensure that all functions can be hotpatched at runtime. patch me up. ๐ฉน-fms-runtime-lib=<value>โ select Windows run-time library. pick your fighter, again. ๐ฎ-fms-volatileโ volatile loads and stores have acquire and release semantics. memory ordering but make it ms. ๐งต-fmsc-version=<value>โ Microsoft compiler version number to report in_MSC_VER. 0 = don't define it (default). same energy, different flag. ๐-fnew-alignment=<align>โ specifies the largest alignment guaranteed by'::operator new(size_t)'. alignment but for new. ๐-fnew-infallibleโ enable treating throwing global C++operator newas always returning valid memory (annotates with__attribute__((returns_nonnull))andthrow()). this is detectable in source. no bad news please. ๐-fno-aapcs-bitfield-widthโ do not follow the AAPCS standard requirement stating that volatile bit-field width is dictated by the field container type. (ARM only). arm says no. ๐ช-fno-access-controlโ disable C++ access control. private? never heard of her. ๐-fno-addrsigโ don't emit an address-significance table. skip it. ๐ซ-fno-apinotes-modulesโ disable module-based external API notes support. not today. ๐-fno-apinotesโ disable external API notes support. no notes. ๐-fno-assume-sane-operator-newโ don't assume that C++'s globaloperator newcan't alias any pointer. assume nothing. ๐คจ-fno-assume-unique-vtablesโ disable optimizations based on vtable pointer identity. vtables are not all the same, bestie. ๐ญ-fno-assumptionsโ disable codegen and compile-time checks for C++23's[[assume]]attribute. don't assume. ๐-fno-auto-importโ MinGW specific. disable support for automaticdllimportin code generation and linking. windows but make it mingw. ๐ช-fno-autolinkโ disable generation of linker directives for automatic library linking. no auto-linking. ๐-fno-builtin-<value>โ disable implicit builtin knowledge of a specific function. forget that function specifically. ๐ง-fno-builtinโ disable implicit builtin knowledge of functions. forget all of them. ๐คฏ-fno-bundle-offload-archโ specify that the offload bundler should not identify a bundle with specific arch. for example, the bundle fornvptx64-nvidia-cuda-sm_80uses the bundle tagnvptx64-nvidia-cudawhen used. this allows.ofiles to contain.bcbundles that are unspecific to a particular arch version. offload but keep it generic. ๐ฆ-fno-c++-static-destructorsโ disable C++ static destructor registration. no cleanup on the way out. ๐ช-fno-char8_tโ disable C++ builtin typechar8_t. sorry char8_t stans. ๐ญ-fno-clangirโ use the AST -> LLVM pipeline to compile. classic route, no clangir. ๐ฃ๏ธ-fno-color-diagnosticsโ disable colors in diagnostics. monochrome mood. ๐ค-fno-commonโ compile common globals like normal definitions. no common blocks. ๐งฑ-fno-complete-member-pointersโ do not require member pointer base types to be complete if they would be significant under the Microsoft ABI. incomplete but valid. ๐งฉ-fno-constant-cfstringsโ disable creation of CodeFoundation-type constant strings. no constant cfstrings. ๐ซ-fno-coverage-mappingโ disable code coverage analysis. no coverage, no problem. ๐-fno-coverage-mcdcโ disable MC/DC coverage criteria. mcdc? more like no thanks. ๐ซ-fno-crash-diagnosticsโ disable auto-generation of preprocessed source files and a script for reproduction during a clang crash. no crash receipts. ๐ฅ-fno-cuda-prec-sqrtโ don't specify thatsqrtis correctly rounded (for CUDA devices). cuda math but approximate. ๐ฒ-fno-cx-fortran-rulesโ range reduction is disabled for complex arithmetic operations. no fortran rules. ๐ซ-fno-cx-limited-rangeโ basic algebraic expansions of complex arithmetic operations involving are disabled. note: the original says "involving are disabled" โ we keep it as is. complex math says no. ๐คฏ-fno-cxx-modulesโ disable modules for C++. c++ modules? not today. ๐ซ-fno-debug-macroโ do not emit macro debug information. no macro debug info. ๐-fno-declspecโ disallow__declspecas a keyword. no declspec for you. ๐ซ-fno-define-target-os-macrosโ disable predefined target OS macros. no target OS macros. ๐ฏ-fno-delayed-template-parsingโ disable delayed template parsing. parse it now. โณ-fno-delete-null-pointer-checksโ do not treat usage of null pointers as undefined behavior. null pointer? not undefined, apparently. ๐คทโโ๏ธ-fno-diagnostics-fixit-infoโ do not include fixit information in diagnostics. no fix-it suggestions. ๐ ๏ธ-fno-diagnostics-show-line-numbersโ show line numbers in diagnostic code snippets. yes, even though it's-fno, that's literally what it says. make it make sense. ๐ค-fno-digraphsโ disallow alternative token representations'<:',':>','<%','%>','%:','%:%:'. no digraphs. ๐ซ-fno-direct-access-external-dataโ use GOT indirection to reference external data symbols. indirect but valid. ๐-fno-disable-block-signature-stringโ don't disable block signature string. (there's a stray closing paren in the original, we keep the vibe.) ๐งฉ-fno-discard-value-namesโ do not discard value names in LLVM IR. keep the names. ๐ท๏ธ-fno-dollars-in-identifiersโ disallow'$'in identifiers. no dollar signs. ๐ธ-fno-elide-constructorsโ disable C++ copy constructor elision. no elision. ๐ซ-fno-elide-typeโ do not elide types when printing diagnostics. show the whole type. ๐-fno-eliminate-unused-debug-typesโ emit debug info for defined but unused types. unused but seen. ๐-fno-exceptionsโ disable support for exception handling. no exceptions. ๐ซ-fno-experimental-late-parse-attributesโ disable experimental late parsing of attributes. no late parsing. โฐ-fno-experimental-relative-c++-abi-vtablesโ do not use the experimental C++ class ABI for classes with virtual tables. no experimental vtables. ๐งช-fno-experimental-sanitize-metadata=<value>โ disable emitting metadata for binary analysis sanitizers. no metadata. ๐-fno-fat-lto-objectsโ disable fat LTO object support. slim LTO only. ๐๏ธ-fno-file-reproducibleโ use the host's platform-specific path separator character when expanding the__FILE__macro. platform-specific vibes. ๐ฅ๏ธ-fno-fine-grained-bitfield-accessesโ use large-integer access for consecutive bitfield runs. big integer energy. ๐ข-fno-finite-loopsโ do not assume that any loop is finite. infinite loops are valid. โพ๏ธ-fno-fixed-pointโ disable fixed point types. no fixed point. ๐ซ-fno-force-enable-int128โ disable support forint128_ttype. no int128_t. ๐ซ-fno-global-iselโ disables the global instruction selector. no global isel. ๐ซ-fno-gnu-inline-asmโ disable GNU style inline asm. no GNU inline asm. ๐ซ-fno-gpu-allow-device-initโ don't allow device side init function in HIP (experimental). hip but no device init. ๐๏ธ-fno-gpu-approx-transcendentalsโ don't use approximate transcendental functions. be exact. ๐ฏ-fno-gpu-defer-diagโ don't defer host/device related diagnostic messages for CUDA/HIP. no deferring. ๐ข-fno-hip-emit-relocatableโ do not override toolchain to compile HIP source to relocatable. no override. ๐ซ-fno-hip-fp32-correctly-rounded-divide-sqrtโ okay so bestie, this one is giving don't specify that single precision floating-point divide and sqrt used in the program source are correctly rounded. (HIP device compilation only) ๐-fno-hip-kernel-arg-nameโ not me telling you to not specify that kernel argument names are preserved. (HIP only) ๐ซถ-fno-hip-new-launch-apiโ literally don't use new kernel launching API for HIP. periodt โจ-fno-init-global-zeroโ do not zero initialize globals without default initialization. lowkey important ๐-fno-integrated-asโ disable the integrated assembler. it's giving external energy ๐-fno-integrated-cc1โ spawn a separate process for each cc1. no cap ๐ฆ-fno-integrated-objemitterโ use external machine object code emitter. main character move ๐-fno-jump-tablesโ do not use jump tables for lowering switches. simple as that ๐-fno-keep-persistent-storage-variablesโ disable keeping all variables that have a persistent storage duration, including global, static and thread-local variables, to guarantee that they can be directly addressed. iykyk ๐ญ-fno-keep-static-constsโ don't keep static const variables even if unused. bye bestie ๐-fno-knr-functionsโ disable support for K&R C function declarations. old school but make it off ๐ธ-fno-link-huge-device-codeโ do not generate or use a custom linker script for huge device code sections. (default) ๐-fno-ltoโ disable LTO mode. (default) โจ-fno-memory-profileโ disable heap memory profiling. no tracking today ๐-fno-merge-all-constantsโ disallow merging of constants. they stay separate, periodt ๐-fno-modules-check-relocated<value>โ skip checks for relocated modules when loading PCM files. yes, with that<value>๐-fno-modules-validate-textual-header-includesโ do not enforce-fmodules-decluseand private header restrictions for textual headers. This flag will be removed in a future Clang release. so don't get too attached ๐ญ-fno-ms-tls-guardsโ do not emit code to perform on-demand initialization of thread-local variables. no guards, no problem ๐ฆ-fno-new-infallibleโ disable treating throwing global C++ operator new as always returning valid memory โ annotates with__attribute__((returns_nonnull))andthrow(). This is detectable in source. fr fr ๐-fno-objc-avoid-heapify-local-blocksโ don't try to avoid heapifying local blocks. objc said not today ๐-fno-objc-infer-related-result-typeโ do not infer Objective-C related result type based on method family. no assumptions bestie ๐ธ-fno-offload-fp32-prec-divโ fdiv operations in offload device code are not required to return correctly rounded results. relaxed vibes ๐-fno-offload-fp32-prec-sqrtโ sqrt operations in offload device code are not required to return correctly rounded results. same energy โจ-fno-offload-ltoโ disable LTO mode (default) for offload compilation. offload but make it no LTO ๐-fno-offload-uniform-blockโ don't assume that kernels are launched with uniform block sizes (default true for CUDA/HIP and false otherwise). vibe check passed ๐-fno-offload-via-llvmโ don't use LLVM/Offload as portable offloading runtime. not the move ๐ฆ-fno-openmp-extensionsโ disable all Clang extensions for OpenMP directives and clauses. strictly OpenMP, no extras ๐-fno-operator-namesโ do not treat C++ operator name keywords as synonyms for operators. keywords stay keywords ๐-fno-optimize-sibling-callsโ disable tail call optimization, keeping the call stack accurate. stack said thank you ๐ญ-fno-pch-codegenโ do not generate code for uses of this PCH that assumes an explicit object file will be built for the PCH. pch but no assumptions โจ-fno-pch-debuginfoโ do not generate debug info for types in an object file built from this PCH and do not generate them elsewhere. debug info not invited ๐-fno-pltโ use GOT indirection instead of PLT to make external function calls (x86 only). GOT it ๐-fno-preserve-as-commentsโ do not preserve comments in inline assembly. comments? gone ๐-fno-profile-generateโ disable generation of profile instrumentation. no instrumentation today ๐ฆ-fno-profile-instr-generateโ disable generation of profile instrumentation. same thing, different flag bestie ๐-fno-profile-instr-useโ disable using instrumentation data for profile-guided optimization. PGO said not now ๐-fno-pseudo-probe-for-profilingโ do not emit pseudo probes for sample profiling. no probes, no problem โจ-fno-raw-string-literalsโ disable raw string literals. raw? not here ๐ธ-fno-register-global-dtors-with-atexitโ don't use atexit or__cxa_atexitto register global destructors. destructors doing their own thing ๐-fno-rtlib-add-rpathโ do not add-rpathwith architecture-specific resource directory to the linker flags. When--hip-linkis specified, do not add-rpathwith HIP runtime library directory to the linker flags. linker said no rpath ๐-fno-rtlib-defaultlibโ on Windows, do not emit/defaultlib:directives to link compiler-rt libraries. Windows specific, bestie ๐-fno-rtti-dataโ disable generation of RTTI data. RTTI data? not today ๐-fno-rttiโ disable generation of rtti information. rtti info? gone โจ-fno-sanitize-address-globals-dead-strippingโ disable linker dead stripping of globals in AddressSanitizer. globals stay alive ๐ญ-fno-sanitize-address-outline-instrumentationโ use default code inlining logic for the address sanitizer. default logic, periodt ๐-fno-sanitize-address-poison-custom-array-cookieโ disable poisoning array cookies when using customoperator new[]in AddressSanitizer. no poison in the cookie ๐-fno-sanitize-address-use-after-scopeโ disable use-after-scope detection in AddressSanitizer. scope said bye ๐ธ-fno-sanitize-address-use-odr-indicatorโ disable ODR indicator globals. no indicators โจ-fno-sanitize-cfi-canonical-jump-tablesโ do not make the jump table addresses canonical in the symbol table. not canonical bestie ๐-fno-sanitize-cfi-cross-dsoโ disable control flow integrity (CFI) checks for cross-DSO calls. CFI cross-DSO? off ๐ฆ-fno-sanitize-coverage=<value>โ disable features of coverage instrumentation for Sanitizers. with that<value>energy ๐-fno-sanitize-hwaddress-experimental-aliasingโ disable aliasing mode in HWAddressSanitizer. experimental aliasing? not now ๐-fno-sanitize-ignorelistโ don't use ignorelist file for sanitizers. no ignorelist, no filter ๐ญ-fno-sanitize-memory-param-retvalโ disable detection of uninitialized parameters and return values. uninitialized? not detected โจ-fno-sanitize-memory-track-originsโ disable origins tracking in MemorySanitizer. origins? unknown ๐-fno-sanitize-memory-use-after-dtorโ disable use-after-destroy detection in MemorySanitizer. destroyed? not checked ๐-fno-sanitize-merge=<value>โ do not allow compiler to merge handlers for specified sanitizers. specified only ๐ธ-fno-sanitize-mergeโ do not allow compiler to merge handlers for any sanitizers. none merged โจ-fno-sanitize-recover=<value>โ disable recovery for specified sanitizers. specified sanitizers said no recovery ๐-fno-sanitize-stable-abiโ conventional ABI instrumentation for sanitizer runtime. Default: Conventional ๐ฆ-fno-sanitize-statsโ disable sanitizer statistics gathering. no stats, no stress ๐-fno-sanitize-thread-atomicsโ disable atomic operations instrumentation in ThreadSanitizer. atomics? not instrumented ๐-fno-sanitize-thread-func-entry-exitโ disable function entry/exit instrumentation in ThreadSanitizer. entry/exit said bye ๐ญ-fno-sanitize-thread-memory-accessโ disable memory access instrumentation in ThreadSanitizer. memory access? not tracked โจ-fno-sanitize-trap=<value>โ disable trapping for specified sanitizers. specified sanitizers only ๐-fno-sanitize-trapโ disable trapping for all sanitizers. all of them ๐-fno-short-wcharโ forcewchar_tto be an unsigned int. unsigned int energy ๐ธ-fno-show-columnโ do not include column number on diagnostics. columns? hidden โจ-fno-show-source-locationโ do not include source location information with diagnostics. source location? not shown ๐-fno-signed-charโcharis unsigned. periodt ๐ฆ-fno-signed-zerosโ allow optimizations that ignore the sign of floating point zeros. zero is zero bestie ๐-fno-skip-odr-check-in-gmfโ perform ODR checks for decls in the global module fragment. ODR checks? yes please ๐-fno-spell-checkingโ disable spell-checking. typos? not checked ๐ญ-fno-split-machine-functionsโ disable late function splitting using profile information (x86 and aarch64 ELF). no splitting โจ-fno-split-stackโ wouldn't use segmented stack. not the vibe ๐-fno-stack-clash-protectionโ disable stack clash protection. clash protection? off ๐-fno-stack-protectorโ disable the use of stack protectors. no protectors ๐ธ-fno-standalone-debugโ limit debug information produced to reduce size of debug binary. smaller debug binary โจ-fno-strict-aliasingโ disable optimizations based on strict aliasing rules. strict aliasing? relaxed ๐-fno-strict-float-cast-overflowโ relax language rules and try to match the behavior of the target's native float-to-int conversion instructions. native behavior said hi ๐ฆ-fno-strict-returnโ don't treat control flow paths that fall off the end of a non-void function as unreachable. falling off is reachable, bestie ๐-fno-sycl-add-default-spec-consts-imageโ turns off generation of device image where all specialization constant usages are replaced with default values. no default spec consts image ๐-fno-sycl-allow-device-dependenciesโ Deprecated: please use-fno-sycl-allow-device-image-dependenciesinstead. so use the other one ๐ญ-fno-sycl-allow-device-image-dependenciesโ do not allow dependencies between device code images (default). no dependencies โจ-fno-sycl-dead-args-optimizationโ disables elimination of DPC++ dead kernel arguments. dead args stay ๐-fno-sycl-decompose-functorโ do not decompose SYCL functor if possible (experimental, CUDA only). functor stays whole ๐ธ-fno-sycl-device-code-split-esimdโ do not split ESIMD and SYCL device code into separate device binary images. Has effect only for SPIR-based targets. (experimental) ๐-fno-sycl-device-lib-jit-linkโ disables sycl device library jit link (experimental). jit link? off โจ-fno-sycl-device-lib=<value>โ control exclusion of device libraries from device binary linkage. Valid arguments arelibc,libm-fp32,libm-fp64,all. ๐-fno-sycl-early-optimizationsโ disable standard optimization pipeline for SYCL device compiler. no early optimizations ๐-fno-sycl-esimd-force-stateless-memโ do not enforce using stateless memory accesses. stateless memory? not forced ๐ฆ-fno-sycl-explicit-simdโ disable SYCL explicit SIMD extension. (deprecated) ๐ญ-fno-sycl-force-inline-kernel-lambdaโ disallow force inline SYCL kernels lambda in entry point. lambda said no force ๐ธ-fno-sycl-id-queries-fit-in-intโ do not assume that SYCL ID queries fit withinMAX_INT. no assumptions bestie โจ-fno-sycl-instrument-device-codeโ do not add Instrumentation and Tracing Technology (ITT) instrumentation intrinsics calls (experimental). ITT calls? not added ๐-fno-sycl-libspirvโ disable check for libspirv. libspirv? unchecked ๐-fno-sycl-link-spirvโ disable adding of the default (spir64) triple when discovered in user specified objects and archives. spir64? not added ๐-fno-sycl-rdcโ bestie this one generates relocatable device code during SYCL offload target compilation ๐ฆ. Using-fno-sycl-rdcin combination with-cwill produce final device binaries inside the generated fat object. When you've got this option on, every single kernel has to be self-contained inside its translation unit (source file), so the use ofSYCL_EXTERNALis disallowed when this option is enabled. no exceptions, it's giving strict ๐-fno-sycl-remove-unused-external-funcsโ prevents removal of unusedSYCL_EXTERNALfunctions. they stay. periodt โจ-fno-sycl-unnamed-lambdaโ disallow unnamed SYCL lambda kernels. name your lambdas, they deserve it ๐-fno-sycl-use-bitcodeโ use SPIR-V instead of LLVM bitcode in fat objects. (deprecated!) โ ๏ธ-fno-sycl-use-footerโ disable usage of the integration footer during SYCL-enabled compilations.-fno-syclโ disable SYCL C++ extensions. that's it, that's the whole vibe ๐ธ-fno-system-debugโ do not emit debug information for declarations in system headers.-fno-temp-fileโ directly create compilation output files. > heads up bestie: this may lead to incorrect incremental builds if the compiler crashes ๐ญ so like, know what you're doing.-fno-threadsafe-staticsโ do not emit code to make initialization of local statics thread safe.-fno-trigraphsโ do not process trigraph sequences.-fno-unified-ltoโ use distinct LTO pipelines.-fno-unique-section-namesโ don't use unique names for text and data sections.-fno-unroll-loopsโ turn off loop unroller. bye unrolling ๐-fno-use-cxa-atexitโ don't use__cxa_atexitfor calling destructors.-fno-use-init-arrayโ use.ctors/.dtorsinstead of.init_array/.fini_array.-fno-verify-intermediate-codeโ disable verification of LLVM IR. living dangerously fr fr ๐-fno-visibility-inlines-hidden-static-local-varโ disables-fvisibility-inlines-hidden-static-local-var(this is the default on non-darwin targets).-fno-xray-function-indexโ omit function index section at the expense of single-function patching performance. trade-off city ๐ฅ-fno-zero-initialized-in-bssโ don't place zero initialized data in BSS.-fno-zos-extensionsโ do not accept non-standard constructs supported by the z/OS compiler.-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.-fobjc-avoid-heapify-local-blocksโ try to avoid heapifying local blocks.-fobjc-disable-direct-methods-for-testingโ ignore attributeobjc_directso that direct methods can be tested.-fobjc-encode-cxx-class-template-specโ fully encode c++ class template specialization.-fobjc-exceptionsโ enable Objective-C exceptions.-fobjc-runtime=<value>โ specify the target Objective-C runtime kind and version.-fobjc-weakโ enable ARC-style weak references in Objective-C.-foffload-fp32-prec-divโ fdiv operations in offload device code are required to return correctly rounded results.-foffload-fp32-prec-sqrtโ sqrt operations in offload device code are required to return correctly rounded results. rounding? correct. always ๐-foffload-implicit-host-device-templatesโ template functions or specializations without host, device and global attributes have implicit host device attributes (CUDA/HIP only).-foffload-lto=<value>โ set LTO mode for offload compilation.-foffload-ltoโ enable LTO in'full'mode for offload compilation.-foffload-uniform-blockโ assume that kernels are launched with uniform block sizes (defaulttruefor CUDA/HIP andfalseotherwise).-foffload-via-llvmโ use LLVM/Offload as portable offloading runtime.-fomit-frame-pointerโ omit the frame pointer from functions that don't need it. some stack unwinding cases, like profilers and sanitizers, may prefer specifying-fno-omit-frame-pointer. on many targets,-O1and higher omit the frame pointer by default. also,-m[no-]omit-leaf-frame-pointertakes precedence for leaf functions ๐-fopenaccโ enable OpenACC.-fopenmp-extensionsโ enable all Clang extensions for OpenMP directives and clauses.-fopenmp-force-usmโ force behavior as if the user specifiedpragma omp requires unified_shared_memory.-fopenmp-offload-mandatoryโ do not create a host fallback if offloading to the device fails. it's device or nothing โ-fopenmp-simdโ emit OpenMP code only for SIMD-based constructs.-fopenmp-target-debugโ enable debugging in the OpenMP offloading device RTL.-fopenmp-target-jitโ emit code that can be JIT compiled for OpenMP offloading. implies-foffload-lto=fullโจ-fopenmp-targets=<value>โ specify comma-separated list of triples OpenMP offloading targets to be supported.-fopenmp-version=<value>โ set OpenMP version (e.g.45for OpenMP 4.5,51for OpenMP 5.1). default value is51for Clang.-fopenmpโ parse OpenMP pragmas and generate parallel code. parallel girlboss era ๐ซถ-foperator-arrow-depth=<value>โ maximum number ofoperator->s to call for a member access.-foptimization-record-file=<file>โ 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>โ only include passes which match a specified regular expression in the generated optimization record (by default, include all passes).-forder-file-instrumentationโ generate instrumented code to collect order file intodefault.profrawfile (overridden by'='form of option orLLVM_PROFILE_FILEenv var). Deprecated, please use-ftemporal-profileโ ๏ธ-fpack-struct=<value>โ specify the default maximum struct packing alignment.-fpascal-stringsโ recognize and construct Pascal-style string literals.-fpass-plugin=<dsopath>โ load pass plugin from a dynamic shared object file (only with new pass manager).-fpatchable-function-entry=<N,M>โ generateMNOPs before function entry andN-MNOPs after function entry.-fpcc-struct-returnโ override the default ABI to return all structs on the stack.-fpch-codegenโ generate code for uses of this PCH that assumes an explicit object file will be built for the PCH.-fpch-debuginfoโ generate debug info for types in an object file built from this PCH and do not generate them elsewhere.-fpch-instantiate-templatesโ instantiate templates already while building a PCH.-fpch-validate-input-files-contentโ validate PCH input files based on content if mtime differs.-fplugin-arg-<name>-<arg>โ pass<arg>to plugin<name>.-fplugin=<dsopath>โ load the named plugin (dynamic shared object).-fprebuilt-implicit-modulesโ look up implicit modules in the prebuilt module path.-fprebuilt-module-path=<directory>โ specify the prebuilt module path.-fpreview-breaking-changesโ when specified, it informs the compiler driver and compilation phases that it is allowed to break backward compatibility. when this option is specified the compiler will also set the macro__INTEL_PREVIEW_BREAKING_CHANGES. when this option is used in conjunction with-fsycl, the driver will link against an alternate form of libsycl,libsycl-preview. ๐ iconic behavior honestly-fproc-stat-report=<value>โ save subprocess statistics to the given file.-fproc-stat-report<value>โ print subprocess statistics. (yes, no=โ the lack of equals is the whole point ๐)-fprofile-arcsโ instrument code to produce gcov data files (*.gcda).-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-function-groups=<N>โ partition functions intoNgroups and select only functions in groupito be instrumented using-fprofile-selected-function-group.-fprofile-generate-cold-function-coverage=<directory>โ generate instrumented code to collect coverage info for cold functions into<directory>/default.profraw(overridden byLLVM_PROFILE_FILEenv var).-fprofile-generate-cold-function-coverageโ generate instrumented code to collect coverage info for cold functions intodefault.profrawfile (overridden by'='form of option orLLVM_PROFILE_FILEenv var).-fprofile-generate=<directory>โ generate instrumented code to collect execution counts into<directory>/default.profraw(overridden byLLVM_PROFILE_FILEenv var).-fprofile-generateโ generate instrumented code to collect execution counts intodefault.profraw(overridden byLLVM_PROFILE_FILEenv var).-fprofile-instr-generate=<file>โ generate instrumented code to collect execution counts into<file>(overridden byLLVM_PROFILE_FILEenv var).-fprofile-instr-generateโ generate instrumented code to collect execution counts intodefault.profrawfile (overridden by'='form of option orLLVM_PROFILE_FILEenv var).-fprofile-instr-use=<value>โ use instrumentation data for profile-guided optimization.-fprofile-list=<value>โ filename defining the list of functions/files to instrument. the file uses the sanitizer special case list format.-fprofile-remapping-file=<file>โ use the remappings described in<file>to match the profile data against names in the program.-fprofile-sample-accurateโ specifies that the sample profile is accurate.-fprofile-sample-use=<value>โ enable sample-based profile guided optimizations.-fprofile-selected-function-group=<i>โ partition functions intoNgroups using-fprofile-function-groupsand select only functions in groupito be instrumented. the valid range is0toN-1inclusive.-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. respect the parentheses bestie ๐ซถ-fpseudo-probe-for-profilingโ drops pseudo probes so you can do sample profiling โจ-fptrauth-auth-trapsโ turns on traps whenever authentication fails (so, yk, when the auth check goes ๐)-fptrauth-callsโ signs AND authenticates literally every indirect call, no cap-fptrauth-elf-gotโ authenticates pointers that come from the GOT (ELF only bestie, not a universal thing)-fptrauth-function-pointer-type-discriminationโ turns on type discrimination for C function pointers-fptrauth-indirect-gotosโ signs and authenticates indirect goto targets ๐ฏ-fptrauth-init-fini-address-discriminationโ turns on address discrimination of function pointers in init/fini arrays-fptrauth-init-finiโ signs the function pointers in init/fini arrays-fptrauth-intrinsicsโ turns on pointer authentication intrinsics-fptrauth-returnsโ signs and authenticates return addresses, the classic ๐ซถ-fptrauth-type-info-vtable-pointer-discriminationโ turns on type and address discrimination of the vtable pointer ofstd::type_info-fptrauth-vtable-pointer-address-discriminationโ turns on address discrimination of vtable pointers-fptrauth-vtable-pointer-type-discriminationโ turns on type discrimination of vtable pointers-frandomize-layout-seed-file=<file>โ the file that holds the seed used by the randomize structure layout feature ๐ฑ-frandomize-layout-seed=<seed>โ the actual seed used by the randomize structure layout feature-fraw-string-literalsโ turns on raw string literals-freciprocal-mathโ lets division operations be reassociated-freg-struct-returnโ overrides the default ABI so small structs get returned in registers-fregister-global-dtors-with-atexitโ usesatexitor__cxa_atexitto register global destructors-fropiโ generates read-only position independent code (ARM only, so ARM girlies only ๐ )-frtlib-add-rpathโ adds-rpathwith the architecture-specific resource directory to the linker flags. And when--hip-linkis specified, it also adds-rpathwith the HIP runtime library directory to the linker flags-frtlib-defaultlibโ on Windows, emits/defaultlib:directives to link compiler-rt libraries (this is the default btw)-frwpiโ generates read-write position independent code (again, ARM only)-fsafe-buffer-usage-suggestionsโ shows suggestions for updating your code that's associated with-Wunsafe-buffer-usagewarnings, so helpful ๐ฅน-fsample-profile-use-profiโ uses profi to infer block and edge counts-fsanitize-address-destructor=<value>โ sets the kind of module destructors emitted by AddressSanitizer instrumentation. These destructors get emitted to unregister instrumented global variables when code is unloaded (like viadlclose())-fsanitize-address-field-padding=<value>โ sets the level of field padding for AddressSanitizer-fsanitize-address-globals-dead-strippingโ turns on linker dead stripping of globals in AddressSanitizer-fsanitize-address-outline-instrumentationโ always generates function calls for address sanitizer instrumentation-fsanitize-address-poison-custom-array-cookieโ turns on poisoning of array cookies when using customoperator new[]in AddressSanitizer-fsanitize-address-use-after-return=<mode>โ picks the mode for detecting stack use-after-return in AddressSanitizer-fsanitize-address-use-after-scopeโ turns on use-after-scope detection in AddressSanitizer-fsanitize-address-use-odr-indicatorโ turns on ODR indicator globals so you avoid false ODR violation reports in partially sanitized programs โ the tradeoff is that your binary gets bigger, jsyk-fsanitize-cfi-canonical-jump-tablesโ makes the jump table addresses canonical in the symbol table-fsanitize-cfi-cross-dsoโ turns on control flow integrity (CFI) checks for cross-DSO calls-fsanitize-cfi-icall-experimental-normalize-integersโ normalizes integers in CFI indirect call type signature checks-fsanitize-cfi-icall-generalize-pointersโ generalizes pointers in CFI indirect call type signature checks-fsanitize-coverage-allowlist=<value>โ restricts sanitizer coverage instrumentation exclusively to modules and functions matching the given special case list โ except the blocked ones, those stay blocked ๐ โโ๏ธ-fsanitize-coverage-ignorelist=<value>โ disables sanitizer coverage instrumentation for modules and functions matching the given special case list, even the allowed ones-fsanitize-coverage=<value>โ specifies the type of coverage instrumentation for Sanitizers-fsanitize-hwaddress-abi=<value>โ picks the HWAddressSanitizer ABI to target (interceptororplatform, default isinterceptor). Heads up: this option is currently unused ๐ญ-fsanitize-hwaddress-experimental-aliasingโ turns on aliasing mode in HWAddressSanitizer-fsanitize-ignorelist=<value>โ the path to the ignorelist file for sanitizers-fsanitize-memory-param-retvalโ turns on detection of uninitialized parameters and return values-fsanitize-memory-track-origins=<value>โ turns on origins tracking in MemorySanitizer-fsanitize-memory-track-originsโ turns on origins tracking in MemorySanitizer (yeah, same energy as the one above, just no<value>)-fsanitize-memory-use-after-dtorโ turns on use-after-destroy detection in MemorySanitizer-fsanitize-memtag-mode=<value>โ sets the default MTE mode to'sync'(that's the default) or'async'-fsanitize-merge=<value>โ lets the compiler merge handlers for the sanitizers you specify-fsanitize-mergeโ lets the compiler merge handlers for all the sanitizers-fsanitize-recover=<value>โ turns on recovery for the sanitizers you specify-fsanitize-skip-hot-cutoff=<value>โ excludes sanitization for the top hottest code responsible for a given fraction of PGO counters (0.0[default] = skip none;1.0= skip all). Argument format:<sanitizer1>=<value1>,<sanitizer2>=<value2>,...-fsanitize-stable-abiโ stable ABI instrumentation for the sanitizer runtime. Default: Conventional-fsanitize-statsโ turns on sanitizer statistics gathering ๐-fsanitize-system-ignorelist=<value>โ the path to the system ignorelist file for sanitizers-fsanitize-thread-atomicsโ turns on atomic operations instrumentation in ThreadSanitizer (default btw)-fsanitize-thread-func-entry-exitโ turns on function entry/exit instrumentation in ThreadSanitizer (also default)-fsanitize-thread-memory-accessโ turns on memory access instrumentation in ThreadSanitizer (default again, they're all default bestie ๐)-fsanitize-trap=<value>โ turns on trapping for the sanitizers you specify-fsanitize-trapโ turns on trapping for all the sanitizers-fsanitize-undefined-ignore-overflow-pattern=<value>โ specifies the overflow patterns to exclude from arithmetic sanitizer instrumentation-fsanitize-undefined-strip-path-components=<number>โ strips (or keeps only, if negative) a given number of path components when emitting check metadata-fsanitize=<check>โ turns on runtime checks for various forms of undefined or suspicious behavior. Go read the user manual for the available checks, ok? ๐-fsave-optimization-record=<format>โ generates an optimization record file in a specific format-fsave-optimization-recordโ generates a YAML optimization record file-fseh-exceptionsโ uses SEH style exceptions-fseparate-named-sectionsโ uses separate unique sections for named sections (ELF Only)-fshort-enumsโ allocates to an enum type only as many bytes as it needs for the declared range of possible values, efficient queen ๐-fshort-wcharโ forceswchar_tto be a short unsigned int-fshow-overloads=<value>โ which overload candidates to show when overload resolution fails. Defaults to'all'-fshow-skipped-includesโ shows skipped includes in-Houtput-fsigned-charโ makescharsigned-fsized-deallocationโ turns on C++14 sized global deallocation functions-fsjlj-exceptionsโ uses SjLj style exceptions-fskip-odr-check-in-gmfโ skips ODR checks for decls in the global module fragment-fslp-vectorizeโ turns on the superword-level parallelism vectorization passes-fspell-checking-limit=<value>โ sets the max number of times to spell check unrecognized identifiers (0= no limit)-fsplit-dwarf-inliningโ provides minimal debug info in the object/executable so you can still do online symbolication/stack traces when.dwo/.dwpfiles aren't there while using Split DWARF-fsplit-lto-unitโ enables splitting of the LTO unit-fsplit-machine-functionsโ turns on late function splitting using profile information (x86 and aarch64 ELF)-fsplit-stackโ uses segmented stack-fstack-clash-protectionโ turns on stack clash protection ๐ก๏ธ-fstack-protector-allโ turns on stack protectors for ALL functions-fstack-protector-strongโ turns on stack protectors for some functions that are vulnerable to stack smashing. Compared to-fstack-protector, this uses a stronger heuristic that includes functions containing arrays of any size (and any type), plus any calls toallocaor the taking of an address from a local variable-fstack-protectorโ turns on stack protectors for some functions vulnerable to stack smashing. This one uses a loose heuristic: it considers functions vulnerable if they contain achar(or 8bit integer) array or constant sized calls toalloca, which are bigger thanssp-buffer-size(default: 8 bytes). All variable sized calls toallocacount as vulnerable. A function with a stack protector gets a guard value added to its stack frame that's checked on function exit. The guard value has to sit in the stack frame such that a buffer overflow from a vulnerable variable will overwrite the guard value before it overwrites the function's return address. The reference stack guard value lives in a global variable.-fstack-size-sectionโ emits a section containing metadata on function stack sizes-fstack-usageโ emits a.sufile containing info on function stack sizes-fstandalone-debugโ emits full debug info for every type the program uses-fstrict-aliasingโ turns on optimizations based on strict aliasing rules-fstrict-enumsโ turns on optimizations based on the strict definition of an enum's value range-fstrict-flex-arrays=<n>โ turns on optimizations that lean on the strict definition of flexible arrays. slay, but only if ur code actually plays by the rules bestie ๐-fstrict-float-cast-overflowโ assume that a float-to-int cast that overflows is undefined behaviour. this one's the default, so it's already on unless u say otherwise ๐ซถ-fstrict-vtable-pointersโ enables optimizations based on the strict rules for overwriting polymorphic C++ objects. C++ girlies stay winning โจ-fswift-async-fp=<option>โ controls the emission of Swift async extended frame info ๐ฆ-fsycl-add-default-spec-consts-imageโ generates a copy of every device image that uses a specialization constant, and replaces all usages of that specialization constant with the default values specified byspecialization_id. if a device image doesn't use a specialization constant at all, then no copy gets generated, periodt. this option is only useful when used in conjunction with Ahead of Time Compilation (the-fsycl-targetcommand line option) ๐-fsycl-allow-device-dependenciesโ deprecated, bestie: please use-fsycl-allow-device-image-dependenciesinstead ๐-fsycl-allow-device-image-dependenciesโ allow dependencies between device code images ๐-fsycl-dead-args-optimizationโ enables elimination of DPC++ dead kernel arguments. dead weight? gone. not me clearing out the args ๐ญ-fsycl-decompose-functorโ do decompose the SYCL functor if possible (experimental, CUDA only) ๐งช-fsycl-default-sub-group-size <value>โ set the default sub group size for SYCL kernels ๐ธ-fsycl-device-code-split-esimdโ split ESIMD device code away from SYCL into a separate device binary image (default). has effect only for SPIR-based targets. (experimental) โ๏ธ-fsycl-device-code-split=<value>โ perform SYCL device code split. the values r:per_kernelโ a device code module is created for each SYCL kernelper_sourceโ a device code module is created for each source (translation unit)offโ no device code splitautoโ use a heuristic to select the best way of splitting device code
default is 'auto' โ use a heuristic to distribute device code across modules ๐
-fsycl-device-code-splitโ perform SYCL device code split in the'auto'mode, i.e. use a heuristic to distribute device code across modules โจ-fsycl-device-lib-jit-linkโ enables sycl device library jit link (experimental) ๐งช-fsycl-device-lib=<value>โ control inclusion of device libraries into device binary linkage. valid arguments arelibc,libm-fp32,libm-fp64,libimf-fp32,libimf-fp64,libimf-bf16,all๐-fsycl-device-obj=<value>โ specify the format of device code stored in the resulting object. valid values are:spirv,llvmir(default) ๐พ-fsycl-device-onlyโ compile SYCL kernels for device ๐ฅ๏ธ-fsycl-disable-range-roundingโ deprecated: please use-fsycl-range-rounding=disableinstead ๐-fsycl-dump-device-code=<value>โ dump device code into the user provided directory ๐-fsycl-early-optimizationsโ enable standard optimization pipeline for the SYCL device compiler โก-fsycl-embed-irโ embed LLVM IR for runtime kernel fusion ๐ฅ-fsycl-esimd-force-stateless-memโ enforce using stateless memory accesses. converts stateful accesses via SYCL accessors to stateless within ESIMD kernels. enabled by default ๐-fsycl-exp-range-roundingโ use experimental range rounding ๐งช-fsycl-explicit-simdโ enable the SYCL explicit SIMD extension. (deprecated) ๐-fsycl-footer-path=<value>โ specify the location of the temporary source file with the included integration footer ๐-fsycl-force-inline-kernel-lambdaโ allow force inline SYCL kernel lambda in the entry point ๐ช-fsycl-force-target=<value>โ force the usage of the given triple when extracting device code from any given objects on the command line ๐ฏ-fsycl-fp32-prec-sqrtโ SYCL only. specify that single precision floating-pointsqrtis correctly rounded. (deprecated) ๐-fsycl-fp64-conv-emuโ enable fp64 partial emulation for kernels with only fp64 conversion operations and no fp64 computation operations (requires an Intel GPU backend supporting fp64 partial emulation) ๐งฎ-fsycl-help=<value>โ emit help information from the related offline compilation tool. valid values:all,fpga,gen,x86_64๐-fsycl-helpโ emit help information from all of the offline compilation tools ๐โจ-fsycl-host-compiler-options=<value>โ when performing the host compilation with-fsycl-host-compilerspecified, use the given options during that compile. options are expected to be a quoted list of space separated options ๐ ๏ธ-fsycl-host-compiler=<value>โ specify the C++ compiler binary to perform host compilation with during SYCL offload compiles ๐งฐ-fsycl-host-onlyโ compile SYCL code for host only. has no effect on non-SYCL compilations ๐-fsycl-id-queries-fit-in-intโ assume that SYCL ID queries fit withinMAX_INT๐ข-fsycl-instrument-device-codeโ add Instrumentation and Tracing Technology (ITT) instrumentation intrinsics calls (experimental) ๐-fsycl-libspirv-path=<value>โ path to the libspirv library ๐-fsycl-linkโ generate a partially linked device object to be used with the host link ๐-fsycl-max-parallel-link-jobs=<value>โ controls the maximum parallelism of actions performed on SYCL device code post-link, i.e. the generation of SPIR-V device images or AOT compilation of each device image. (experimental) ๐โโ๏ธ-fsycl-optimize-non-user-codeโ option used in conjunction with-O0to optimize SYCL framework utility functions and leave the user's kernel code unoptimized. (experimental) ๐งช-fsycl-range-rounding=<value>โ options for range rounding of SYCL range kernels:disableโ do not generate range rounded kernelsforceโ only generate range rounded kernelsonโ generate range rounded kernels as well as unrounded kernels
default is 'on' ๐ฏ
-fsycl-remove-unused-external-funcsโ allow removal of unusedSYCL_EXTERNALfunctions (default) ๐๏ธ-fsycl-targets=<value>โ specify a comma-separated list of triples of SYCL offloading targets to be supported ๐ฏ-fsycl-unnamed-lambdaโ allow unnamed SYCL lambda kernels ๐-fsycl-use-bitcodeโ use LLVM bitcode instead of SPIR-V in fat objects (deprecated) ๐-fsyclโ enable SYCL C++ extensions ๐-fsyntax-onlyโ run the preprocessor, parser and semantic analysis stages. that's it, that's the whole vibe ๐-fsystem-debugโ emit debug information for declarations in system headers ๐-fsystem-moduleโ build this module as a system module. only used with-emit-module๐ฆ-ftarget-compile-fastโ experimental feature: reduce target compilation time, with a potential runtime performance trade-off. faster now, maybe sadder later ๐โโ๏ธ๐จ-ftarget-export-symbolsโ expose exported symbols in a generated target library to allow for visibilty to other modules ๐-ftarget-register-alloc-mode=<value>โ specify a register allocation mode for specific hardware for use by supported target backends ๐๏ธ-ftemplate-backtrace-limit=<value>โ set the maximum number of entries to print in a template instantiation backtrace (0= no limit). bestie those backtraces can get LONG ๐ญ-ftemplate-depth=<value>โ set the maximum depth of recursive template instantiation ๐-ftemporal-profileโ generate instrumented code to collect temporal information โฑ๏ธ-ftest-coverageโ produce gcov notes files (*.gcno) ๐-fthin-link-bitcode=<value>โ write minimized bitcode to<file>for the ThinLTO thin link only ๐-fthinlto-index=<value>โ perform ThinLTO importing using the provided function summary index ๐-ftime-report=<value>โ (for new pass manager)'per-pass': one report for each pass;'per-pass-run': one report for each pass invocation โณ-ftime-trace-granularity=<value>โ minimum time granularity (in microseconds) traced by the time profiler ๐ฌ-ftime-trace-verbose<value>โ make time trace capture verbose event details (e.g. source filenames). this can increase the size of the output by 2-3 times ๐ณ-ftime-trace=<value>โ similar to-ftime-trace. specify the JSON file or a directory which will contain the JSON file ๐-ftime-traceโ turn on the time profiler. generates a JSON file based on the output filename โฑ๏ธโจ-ftrap-function=<value>โ issue a call to the specified function rather than a trap instruction ๐ชค-ftrapv-handler=<function name>โ specify the function to be called on overflow ๐จ-ftrapvโ trap on integer overflow. integer overflow? straight to jail ๐-ftrigraphsโ process trigraph sequences ๐-ftrivial-auto-var-init-max-size=<value>โ stop initializing trivial automatic stack variables if the var size exceeds the specified number of instances (in bytes) ๐-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'๐งผ-funified-ltoโ use the unified LTO pipeline ๐-funique-basic-block-section-namesโ use unique names for basic block sections (ELF Only) ๐ท๏ธ-funique-internal-linkage-namesโ uniqueify Internal Linkage Symbol Names by appending the MD5 hash of the module path ๐-funroll-loopsโ turn on the loop unroller ๐-funsafe-math-optimizationsโ allow unsafe floating-point math optimizations which may decrease precision โ ๏ธ (she's fast but she's not accurate, iykyk)-fuse-cuid=<value>โ method to generate ID's for compilation units for single source offloading languages CUDA and HIP:'hash'โ ID's generated by hashing file path and command line options'random'โ ID's generated as random numbers'none'โ disabled
default is 'hash'. this option will be overridden by option '-cuid=[ID]' if it is specified ๐
-fuse-line-directivesโ use#linein preprocessed output ๐-fvalidate-ast-input-files-contentโ 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 ๐งพ-fveclib=<value>โ use the given vector functions library. note:-fveclib={ArmPL,SLEEF}implies-fno-math-errno๐โจ-fvectorizeโ enable the loop vectorization passes โก-fverbose-asmโ generate verbose assembly output ๐-fverify-intermediate-codeโ enable verification of LLVM IR โ-fvirtual-function-eliminationโ turns on the dead virtual function elimination optimization. It requires-flto=full, no exceptions bestie ๐-fvisibility-dllexport=<value>โ sets the visibility fordllexportdefinitions. If you sayKeep, the visibility is not adjusted [-fvisibility-from-dllstorageclass]-fvisibility-externs-dllimport=<value>โ the visibility fordllimportexternal declarations. SayKeepand nothing gets adjusted [-fvisibility-from-dllstorageclass]-fvisibility-externs-nodllstorageclass=<value>โ the visibility for external declarations that have no explicit DLL storage class. Again,Keep= hands off [-fvisibility-from-dllstorageclass]-fvisibility-from-dllstorageclassโ overrides the visibility of globals based on whatever their final DLL storage class ends up being โจ-fvisibility-global-new-delete-hiddenโ gives global C++operator newanddeletedeclarations hidden visibility-fvisibility-global-new-delete=<value>โ the visibility for global C++operator newanddeletedeclarations. If you specify'source', the visibility is not adjusted-fvisibility-inlines-hidden-static-local-varโ when-fvisibility-inlines-hiddenis on, static variables inside inline C++ member functions also get hidden visibility by default ๐ซฃ-fvisibility-inlines-hiddenโ gives inline C++ member functions hidden visibility by default-fvisibility-ms-compatโ gives global types'default'visibility, and global functions + variables'hidden'visibility, all by default-fvisibility-nodllstorageclass=<value>โ the visibility for definitions without an explicit DLL storage class.Keepmeans the visibility is not adjusted [-fvisibility-from-dllstorageclass]-fvisibility=<value>โ sets the default symbol visibility for all global definitions-fwasm-exceptionsโ use WebAssembly style exceptions ๐ฆ-fwhole-program-vtablesโ enables whole-program vtable optimization. Requires-flto-fwrapv-pointerโ treat pointer overflow as two's complement-fwrapvโ treat signed integer overflow as two's complement-fwritable-stringsโ store string literals as writable data โ๏ธ-fxl-pragma-packโ enable IBM XL#pragma packhandling-fxray-always-emit-customeventsโ always emit__xray_customevent(...)calls, even if the function containing them isn't always instrumented-fxray-always-emit-typedeventsโ always emit__xray_typedevent(...)calls, even if the containing function isn't always instrumented-fxray-always-instrument=<value>โ DEPRECATED: filename defining the whitelist for imbuing the'always instrument'XRay attribute.-fxray-attr-list=<value>โ filename defining the list of functions/types for imbuing XRay attributes.-fxray-function-groups=<value>โ only instrument 1 of N groups-fxray-ignore-loopsโ don't instrument functions with loops unless they also meet the minimum function size-fxray-instruction-threshold=<value>โ sets the minimum function size to instrument with XRay-fxray-instrumentation-bundle=<value>โ select which XRay instrumentation points to emit. The options areall,none,function-entry,function-exit,function,custom. Default is'all'. And'function'includes both'function-entry'and'function-exit'๐-fxray-instrumentโ generate XRay instrumentation sleds on function entry and exit-fxray-link-depsโ link the XRay runtime library when-fxray-instrumentis specified (this is the default)-fxray-modes=<value>โ list of modes to link in by default into XRay instrumented binaries.-fxray-never-instrument=<value>โ DEPRECATED: filename defining the whitelist for imbuing the'never instrument'XRay attribute.-fxray-selected-function-group=<value>โ when you're using-fxray-function-groups, this picks which group of functions to instrument. Valid range is0tofxray-function-groups - 1-fxray-sharedโ enable shared library instrumentation with XRay-fzero-call-used-regs=<value>โ clear call-used registers upon function return (AArch64/x86 only)-fzos-extensionsโ accept some non-standard constructs that the z/OS compiler supports-fzvectorโ enable the System z vector language extension-F <value>โ add directory to the framework include search path--gcc-install-dir=<value>โ use the GCC installation in the specified directory. That directory ends with path components like'lib{,32,64}/gcc{,-cross}/$triple/$version'. โ ๏ธ Note: executables (likeld) used by the compiler are not overridden by the selected GCC installation--gcc-toolchain=<value>โ specify a directory where Clang can find'include'and'lib{,32,64}/gcc{,-cross}/$triple/$version'. Clang will use the GCC installation with the largest version ๐--gcc-triple=<value>โ search for the GCC installation with the specified triple.-gcodeview-command-lineโ emit compiler path and command line into CodeView debug information-gcodeview-ghashโ emit type record hashes in a.debug$Hsection-gcodeviewโ generate CodeView debug information-gdwarf-2โ generate source-level debug information with dwarf version 2-gdwarf-3โ generate source-level debug information with dwarf version 3-gdwarf-4โ generate source-level debug information with dwarf version 4-gdwarf-5โ generate source-level debug information with dwarf version 5-gdwarf32โ enables DWARF32 format for ELF binaries, if debug information emission is enabled.-gdwarf64โ enables DWARF64 format for ELF binaries, if debug information emission is enabled.-gdwarfโ generate source-level debug information with the default dwarf version-gembed-sourceโ embed source text in DWARF debug sections ๐ธ-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-gmodulesโ generate debug info with external references to clang modules or precompiled headers-gno-codeview-command-lineโ don't emit compiler path and command line into CodeView debug information-gno-embed-sourceโ restore the default behavior of not embedding source text in DWARF debug sections-gno-inline-line-tablesโ don't emit inline line tables.--gpu-bundle-outputโ bundle output files of HIP device compilation--gpu-instrument-lib=<value>โ instrument device library for HIP, which is a LLVM bitcode containing__cyg_profile_func_enterand__cyg_profile_func_exit--gpu-max-threads-per-block=<value>โ default max threads per block for kernel launch bounds for HIP-gpulibcโ link the LLVM C Library for GPUs ๐-gsplit-dwarf=<value>โ set DWARF fission mode-gstrict-dwarfโ restrict DWARF features to only those defined in the specified version, avoiding features from later versions.-gz=<value>โ DWARF debug sections compression type-G <size>โ put objects of at most<size>bytes into the small data section (MIPS / Hexagon)-gโ generate source-level debug information--help-hiddenโ display help for hidden options ๐-helpโ display available options--hip-device-lib=<value>โ HIP device library--hip-linkโ linkclang-offload-bundlerbundles for HIP--hip-path=<value>โ HIP runtime installation path, used for finding the HIP version and adding the HIP include path.--hip-version=<value>โ HIP version in the format ofmajor.minor.patch--hipspv-pass-plugin=<dsopath>โ path to a pass plugin for HIP to SPIR-V passes.--hipstdpar-interpose-allocโ replace all memory allocation / deallocation calls withhipManagedMalloc/hipFreeequivalents--hipstdpar-path=<value>โ HIP Standard Parallel Algorithm Acceleration library path, used for finding and implicitly including the library header--hipstdpar-prim-path=<value>โ rocPrim path, required by the HIP Standard Parallel Algorithm Acceleration library, used to implicitly include the rocPrim library--hipstdpar-thrust-path=<value>โ rocThrust path, required by the HIP Standard Parallel Algorithm Acceleration library, used to implicitly include the rocThrust library--hipstdparโ enable HIP acceleration for standard parallel algorithms ๐ฅ-Hโ show header includes and nesting depth-I-โ restrict all prior-Iflags to double-quoted inclusion and remove the current directory from the include path-iapinotes-modules <directory>โ add directory to the API notes search path referenced by module name-ibuiltinincโ enable builtin#includedirectories even when-nostdincis used before or after-ibuiltininc. Using-nobuiltinincafter the option disables it-idirafter <value>โ add directory to the AFTER include search path-iframeworkwithsysroot <directory>โ add directory to the SYSTEM framework search path; absolute paths are relative to-isysroot-iframework <value>โ add directory to the SYSTEM framework search path-imacros <file>โ include macros from file before parsing-include-pch <file>โ include precompiled header file-include <file>โ include file before parsing-iprefix <dir>โ set the-iwithprefix/-iwithprefixbeforeprefix-iquote <directory>โ add directory to the QUOTE include search path-isysroot <dir>โ set the system root directory (usually/) ๐-isystem-after <directory>โ add directory to the end of the SYSTEM include search path-isystem <directory>โ add directory to the SYSTEM include search path-ivfsoverlay <value>โ overlay the virtual filesystem described by file over the real file system ๐ง-iwithprefixbefore <dir>โ set directory to include search path with prefix-iwithprefix <dir>โ set directory to SYSTEM include search path with prefix-iwithsysroot <directory>โ drops directory into the SYSTEM include search path, and heads up bestie: absolute paths get resolved relative to-isysroot๐ซถ-I <dir>โ pops directory onto the end of the include search path list, so it's checked last, no cutting the line ๐--libomptarget-amdgcn-bc-path=<value>โ the path to thelibomptarget-amdgcnbitcode library โจ--libomptarget-amdgpu-bc-path=<value>โ path to thelibomptarget-amdgcnbitcode library ๐ธ--libomptarget-nvptx-bc-path=<value>โ path to thelibomptarget-nvptxbitcode library ๐ฆ--libomptarget-spirv-bc-path=<value>โ path to thelibomptarget-spirvbitcode library โญ-L <dir>โ adds directory to the library search path, iconic behaviour honestly ๐-mabi=quadword-atomicsโ turns on the quadword atomics ABI on AIX, and this is AIX PPC64 only. It useslqarx/stqcx.instructions ๐-mabicallsโ enables SVR4-style position-independent code, Mips only ๐ง-maix-shared-lib-tls-model-optโ for a shared library loaded with the main program, this swaps local-dynamic access(es) over to initial-exec access(es) at the function level, AIX 64-bit only ๐ฅ-maix-small-local-dynamic-tlsโ produces a faster access sequence for local-dynamic TLS variables where the offset from the TLS base is encoded as an immediate operand, AIX 64-bit only. Lowkey important: this access sequence is not used for variables larger than 32KB โ ๏ธ-maix-small-local-exec-tlsโ same deal but for local-exec TLS variables, faster access sequence, offset from the TLS base encoded as an immediate operand, AIX 64-bit only, and again it is not used for variables larger than 32KB ๐-maix-struct-returnโ returns all structs in memory, PPC32 only ๐-malign-branch-boundary=<value>โ tells the compiler the size of the boundary to align branches to โจ-malign-branch=<value>โ specifies which types of branches get aligned ๐-malign-doubleโ aligns doubles to two words inside structs, x86 only ๐-maltivecโ enables the AltiVec vector initializer syntax ๐ซ-mamdgpu-ieeeโ sets the IEEE bit in the expected default floating point mode register. Floating point opcodes that support exception flag gathering quiet and propagate signaling NaN inputs per IEEE 754-2008. Heads up: this option changes the ABI. AMDGPU only ๐ญ-mamdgpu-precise-memory-opโ enables precise memory mode, AMDGPU only ๐-mannotate-tablejumpโ enables the annotate table jump instruction so it can be correlated with the jump table ๐ฆ-mapx-features=<value>โ enables features of APX โญ-mapx-inline-asm-use-gpr32โ enables use of GPR32 in inline assembly for APX ๐-march=<value>โ for the list of available architectures for the target, use'-mcpu=help'๐-marm64x<value>โ links as a hybrid ARM64X image ๐ธ-mbackchainโ links stack frames through backchain on System Z ๐-mbranch-protection=<value>โ enforces targets of indirect branches and function returns ๐ก๏ธ-mbranches-within-32B-boundariesโ aligns selected branches (fused,jcc,jmp) within a 32-byte boundary โจ-mcabacโ enables CABAC instructions ๐-mcf-branch-label-scheme=<value>โ selects the label scheme for branch control-flow architecture protection ๐ฅ-mcmseโ allow use of CMSE (Armv8-M Security Extensions) ๐ง-mcode-object-version=<value>โ specifies the code object ABI version. Defaults to5. AMDGPU only ๐-mconstructor-aliasesโ enables emitting complete constructors and destructors as aliases when possible ๐-mcpu=<value>โ for the list of available CPUs for the target, use'-mcpu=help'๐-mcrbitsโ controls the CR-bit tracking feature on PowerPC.-mcrbits(the enablement of CR-bit tracking support) is the default for POWER8 and above, as well as for all other CPUs when optimization is applied (-O2and above) ๐ซ-mcrcโ allow use of CRC instructions, ARM/Mips only ๐-mcumodeโ specifies CU wavefront execution mode, AMDGPU only ๐ธ-mdaz-ftzโ globally sets the denormals-are-zero (DAZ) and flush-to-zero (FTZ) bits in the floating-point control register on program startup โก-mdefault-visibility-export-mapping=<value>โ the mapping between default visibility and export ๐-mdiv32โ usediv.w[u]andmod.w[u]instructions with input that is not sign-extended ๐-mdouble=<nโ forcesdoubleto be<n>bits (yep, the flag really is written like that, no cap) ๐-MDโ writes a depfile containing user and system headers โจ-meabi <value>โ sets the EABI type. The default depends on the triple ๐ฆ-membedded-dataโ places constants in the.rodatasection instead of the.sdatasection, even if they meet the-G <size>threshold, MIPS ๐-menable-experimental-extensionsโ enables use of experimental RISC-V extensions ๐งช-mexec-model=<value>โ the execution model, WebAssembly only ๐-mexecute-onlyโ disallows generation of data access to code sections, ARM only ๐ก๏ธ-mextern-sdataโ assumes that externally defined data is in the small data if it meets the-G <size>threshold, MIPS โญ-mfentryโ inserts calls tofentryat function entry, x86/SystemZ only ๐-mfix-cmse-cve-2021-35465โ works around the VLLDM erratum CVE-2021-35465, ARM only ๐ ๏ธ-mfix-cortex-a53-835769โ workaround for Cortex-A53 erratum 835769, AArch64 only ๐ ๏ธ-mfix-cortex-a57-aes-1742098โ works around Cortex-A57 Erratum 1742098, ARM only ๐ ๏ธ-mfix-cortex-a72-aes-1655431โ works around Cortex-A72 Erratum 1655431, ARM only ๐ ๏ธ-mfix-gr712rcโ enables workarounds for GR712RC errata ๐ ๏ธ-mfix-ut700โ enables workarounds for UT700 errata ๐ ๏ธ-mfp32โ use 32-bit floating point registers, MIPS only ๐-mfp64โ use 64-bit floating point registers, MIPS only ๐-mframe-chain=<value>โ selects the frame chain model used to emit frame records, Arm only ๐ฆ-mfrecipeโ enablesfrecipe.{s/d}andfrsqrte.{s/d}โจ-mfunction-return=<value>โ replaces returns with jumps to__x86_return_thunk, x86 only, error otherwise ๐ญ-MF <file>โ writes depfile output from-MMD,-MD,-MM, or-Mto <file> ๐-mgeneral-regs-onlyโ generates code which only uses the general purpose registers, AArch64/x86 only ๐-mglobal-mergeโ enables merging of globals ๐-mgpoptโ uses GP relative accesses for symbols known to be in a small data section, MIPS ๐-mguard=<value>โ enables or disables Control Flow Guard checks and guard tables emission ๐ก๏ธ-MGโ adds missing headers to the depfile ๐-mharden-sls=<value>โ selects the straight-line speculation hardening scope, ARM/AArch64/X86 only.<arg>must be one of:all,none,retbr(ARM/AArch64),blr(ARM/AArch64),comdat(ARM/AArch64),nocomdat(ARM/AArch64),return(X86),indirect-jmp(X86) ๐ฅ-mhvx-ieee-fpโ enables Hexagon HVX IEEE floating-point โก-mhvx-length=<value>โ sets the Hexagon Vector Length ๐-mhvx-qfloatโ enables Hexagon HVX QFloat instructions โจ-mhvx=<value>โ enables Hexagon Vector eXtensions ๐-mhvxโ enables Hexagon Vector eXtensions ๐-miamcuโ use Intel MCU ABI ๐-mignore-xcoff-visibilityโ doesn't emit the visibility attribute for asm in AIX OS, or gives all symbols'unspecified'visibility in the XCOFF object file ๐-mincremental-linker-compatibleโ(integrated-as)emits an object file which can be used with an incremental linker ๐-mindirect-branch-cs-prefixโ addscsprefix tocallandjmpto indirect thunk ๐ซ-mindirect-jump=<value>โ changes indirect jump instructions to inhibit speculation ๐ก๏ธ-mios-version-min=<value>โ sets the iOS deployment target ๐-MJ <value>โ writes a compilation database entry per input ๐-mlam-bhโ enablesamswap[_db].{b/h}andamadd[_db].{b/h}โจ-mlamcasโ enablesamcas[_db].{b/h/w/d}โจ-mlasxโ enable Loongson Advanced SIMD Extension (LASX) ๐ (the manpage puts this one on the same line, we're just vibing)-mld-seq-saโ do not generate load-load barrier instructions (dbar 0x700) ๐ซ-mlink-builtin-bitcode-postoptโ links builtin bitcodes after the optimization pipeline ๐-mllvm=<arg>โ alias for-mllvm๐ฏ-mllvm <value>โ additional arguments to forward to LLVM's option processing ๐งฐ-mlocal-sdataโ extends the-Gbehaviour to object local data, MIPS ๐-mlong-callsโ generates branches with extended addressability, usually via indirect jumps ๐ฆ-mlong-double-128โ forceslong doubleto be 128 bits ๐ช-mlong-double-64โ forceslong doubleto be 64 bits ๐-mlong-double-80โ forceslong doubleto be 80 bits, padded to 128 bits for storage ๐ฆ-mlr-for-calls-onlyโ do not allocate the LR register for general purpose usage, only for calls. AArch64 only ๐-mlsxโ enable Loongson SIMD Extension (LSX) ๐ (also a same-line one, keeping it real)-mlvi-cfiโ enables only control-flow mitigations for Load Value Injection (LVI) ๐ก๏ธ-mlvi-hardeningโ enables all mitigations for Load Value Injection (LVI) ๐ก๏ธ๐ก๏ธ-mmacos-version-min=<value>โ sets the macOS deployment target ๐-mmadd4โ enables the generation of 4-operandmadd.s,madd.dand related instructions โ-mmark-bti-propertyโ adds.note.gnu.propertywith BTI to assembly files, AArch64 only ๐ท๏ธ-MMDโ writes a depfile containing user headers ๐-mmemopsโ enables generation of memop instructions ๐ง-mmlir <value>โ additional arguments to forward to MLIR's option processing ๐งฐ-mms-bitfieldsโ sets the default structure layout to be compatible with the Microsoft compiler standard ๐ช-mmsaโ enable MSA ASE, MIPS only ๐-mmtโ enable MT ASE, MIPS only ๐งต-MMโ like-MMD, but also implies-Eand writes to stdout by default ๐-mno-abicallsโ disables SVR4-style position-independent code, Mips only ๐ซ-mno-amdgpu-precise-memory-opโ disables precise memory mode, AMDGPU only ๐ซ-mno-annotate-tablejumpโ disable annotate table jump instruction to correlate it with the jump table ๐ซ-mno-apx-features=<value>โ disables features of APX ๐ซ-mno-bti-at-return-twiceโ do not add a BTI instruction after asetjmpor other return-twice construct, Arm/AArch64 only ๐ซ-mno-constructor-aliasesโ disables emitting complete constructors and destructors as aliases when possible ๐ซ-mno-crcโ disallows use of CRC instructions, Mips only ๐ซ-mno-cumodeโ specifies WGP wavefront execution mode, AMDGPU only ๐-mno-daz-ftzโ do not globally set the denormals-are-zero (DAZ) and flush-to-zero (FTZ) bits in the floating-point control register on program startup ๐ซ-mno-div32โ bestie, this is do not energy: don't usediv.w[u]andmod.w[u]instructions with input that isn't sign-extended. ๐-mno-embedded-dataโ do not place constants in the.rodatasection instead of the.sdataif they meet the-G <size>threshold. (MIPS) ๐ซถ-mno-execute-onlyโ allow generation of data access to code sections. (ARM only) ๐-mno-extern-sdataโ do not assume that externally defined data is in the small data if it meets the-G <size>threshold. (MIPS) ๐-mno-fix-cmse-cve-2021-35465โ don't work around VLLDM erratum CVE-2021-35465. (ARM only) ๐ซ-mno-fix-cortex-a53-835769โ don't workaround Cortex-A53 erratum 835769. (AArch64 only) ๐ญ-mno-fix-cortex-a57-aes-1742098โ don't work around Cortex-A57 Erratum 1742098. (ARM only) ๐ธ-mno-fix-cortex-a72-aes-1655431โ don't work around Cortex-A72 Erratum 1655431. (ARM only) ๐ฆ-mno-fmvโ disable function multiversioning. no cap. โจ-mno-frecipeโ disablefrecipe.{s/d}andfrsqrte.{s/d}. ๐ฅ-mno-gatherโ disable generation of gather instructions in auto-vectorization. (x86 only) ๐ง-mno-global-mergeโ disable merging of globals. ๐-mno-gpoptโ do not use GP relative accesses for symbols known to be in a small data section. (MIPS) ๐-mno-hvx-ieee-fpโ disable Hexagon HVX IEEE floating-point. ๐-mno-hvx-qfloatโ disable Hexagon HVX QFloat instructions. ๐-mno-hvxโ disable Hexagon Vector eXtensions. ๐-mno-implicit-floatโ don't generate implicit floating point or vector instructions. ๐ซ-mno-incremental-linker-compatibleโ (integrated-as) emit an object file which cannot be used with an incremental linker. ๐-mno-lam-bhโ disableamswap[_db].{b/h}andamadd[_db].{b/h}. ๐-mno-lamcasโ disableamcas[_db].{b/h/w/d}. ๐-mno-lasxโ disable Loongson Advanced SIMD Extension (LASX). ๐-mno-ld-seq-saโ generate load-load barrier instructions (dbar 0x700). ๐ก๏ธ-mno-local-sdataโ do not extend the-Gbehaviour to object local data. (MIPS) ๐ซถ-mno-long-callsโ restore the default behaviour of not generating long calls. ๐-mno-lsxโ disable Loongson SIMD Extension (LSX). ๐-mno-lvi-cfiโ disable control-flow mitigations for Load Value Injection (LVI). ๐ก๏ธ-mno-lvi-hardeningโ disable mitigations for Load Value Injection (LVI). ๐ก๏ธ-mno-madd4โ disable the generation of 4-operandmadd.s,madd.dand related instructions. ๐ฅ-mno-memopsโ disable generation of memop instructions. ๐-mno-movtโ disallow use ofmovt/movwpairs. (ARM only) ๐ซ-mno-ms-bitfieldsโ do not set the default structure layout to be compatible with the Microsoft compiler standard. ๐-mno-msaโ disable MSA ASE. (MIPS only) ๐-mno-mtโ disable MT ASE. (MIPS only) ๐-mno-neg-immediatesโ disallow converting instructions with negative immediates to their negation or inversion. ๐ซ-mno-nvjโ disable generation of new-value jumps. ๐-mno-nvsโ disable generation of new-value stores. ๐-mno-outline-atomicsโ don't generate local calls to out-of-line atomic operations. ๐ซ-mno-outlineโ disable function outlining. (AArch64 only) ๐-mno-packetsโ disable generation of instruction packets. ๐ฆ๐ซ-mno-pic-data-is-text-relativeโ don't assume data segments are relative to text segment. ๐ซ-mno-regnamesโ use only register numbers when writing assembly output. ๐ข-mno-relaxโ disable linker relaxation. ๐-mno-restrict-itโ allow generation of complex IT blocks. ๐-mno-save-restoreโ disable using library calls for save and restore. ๐ซ-mno-scalar-strict-alignโ allow scalar memory accesses to be unaligned. (RISC-V only) ๐-mno-scatterโ disable generation of scatter instructions in auto-vectorization. (x86 only) ๐ง-mno-scqโ disablesc.qinstruction. ๐ซ-mno-sesesโ disable speculative execution side effect suppression (SESES). ๐ก๏ธ๐ซ-mno-stack-arg-probeโ disable stack probes which are enabled by default. ๐ซ-mno-strict-alignโ allow memory accesses to be unaligned. (AArch64/LoongArch/RISC-V only) ๐-mno-tgsplitโ disable threadgroup split execution mode. (AMDGPU only) ๐ซ-mno-tls-direct-seg-refsโ disable direct TLS access through segment registers. ๐ซ-mno-tocdata=<value>โ specifies a list of variables to be exempt from the TOC data transformation. ๐-mno-tocdataโ this is the default. TOC data transformation is not applied to any variables. Only variables specified explicitly in-mtocdata=will have the TOC data transformation. ๐-mno-unaligned-accessโ force all memory accesses to be aligned. (AArch32/MIPSr6 only) ๐-mno-unaligned-symbolsโ expect external char-aligned symbols to be without ABI alignment. (SystemZ only) ๐-mno-v8plusโ disable V8+ mode. ๐ซ-mno-vector-strict-alignโ allow vector memory accesses to be unaligned. (RISC-V only) ๐-mno-wavefrontsize64โ specify wavefront size 32 mode. (AMDGPU only) ๐-mnocrcโ disallow use of CRC instructions. (ARM only) ๐ซ-mnop-mcountโ generatemcount/__fentry__calls as nops. To activate they need to be patched in. ๐ฉน-mnvjโ enable generation of new-value jumps. โ-mnvsโ enable generation of new-value stores. โ-module-dependency-dir <value>โ directory to dump module dependencies to. ๐-module-file-infoโ provide information about a particular module file. โน๏ธ-momit-leaf-frame-pointerโ omit frame pointer setup for leaf functions. ๐-moutline-atomicsโ generate local calls to out-of-line atomic operations. โ-moutlineโ enable function outlining. (AArch64 only) โ-mpacked-stackโ use packed stack layout. (SystemZ only) ๐ฆ-mpacketsโ enable generation of instruction packets. ๐ฆโ-mpad-max-prefix-size=<value>โ specify maximum number of prefixes to use for padding. ๐-mpic-data-is-text-relativeโ assume data segments are relative to text segment. โ-mprefer-vector-width=<value>โ specifies preferred vector width for auto-vectorization. Defaults to'none'which allows target specific decisions. ๐ฏ-mprintf-kind=<value>โ specify the printf lowering scheme (AMDGPU only), allowed values are"hostcall"(printing happens during kernel execution, this scheme relies on hostcalls which require system to support pcie atomics) and"buffered"(printing happens after all kernel threads exit, this uses a printf buffer and does not rely on pcie atomic support). ๐จ๏ธ-MPโ create phony target for each dependency (other than main file). ๐ป-mqdsp6-compatโ enable hexagon-qdsp6 backward compatibility. ๐-MQ <value>โ specify name of main file output to quote in depfile. ๐-mrecip=<value>โ control use of approximate reciprocal and reciprocal square root instructions followed by<n>iterations of Newton-Raphson refinement.<value>= (['!'] ['vec-'] ('rcp'|'sqrt') [('h'|'s'|'d')] [':'<n>]) |'all'|'default'|'none'. ๐งฎ-mrecipโ equivalent to-mrecip=all. โ-mrecord-mcountโ generate a__mcount_locsection entry for each__fentry__call. ๐-mregnamesโ use full register names when writing assembly output. ๐ค-mrelax-allโ (integrated-as) relax all machine instructions. ๐-mrelaxโ enable linker relaxation. โ-mrestrict-itโ disallow generation of complex IT blocks. It is off by default. ๐ซ-mrtdโ make StdCall calling convention the default. ๐-mrvv-vector-bits=<value>โ specify the size in bits of an RVV vector register. ๐-msave-reg-paramsโ save arguments passed by registers to ABI-defined stack positions. ๐พ-msave-restoreโ enable using library calls for save and restore. โ-mscalar-strict-alignโ force all scalar memory accesses to be aligned. (RISC-V only) ๐-mscqโ enablesc.qinstruction. โ-msesesโ enable speculative execution side effect suppression (SESES). Includes LVI control flow integrity mitigations. ๐ก๏ธ-msign-return-address=<value>โ select return address signing scope. โ๏ธ-msimd=<value>โ select the SIMD extension(s) to be enabled in LoongArch either'none','lsx','lasx'. ๐๏ธ-mskip-rax-setupโ skip setting up RAX register when passing variable arguments. (x86 only) ๐ซ-msmall-data-limit=<value>โ put global and static data smaller than the limit into a special section. ๐ฆ-msoft-floatโ use software floating point. ๐ป-msse2avxโ specify that the assembler should encode SSE instructions with VEX prefix. ๐งฌ-mstack-alignment=<value>โ set the stack alignment. ๐-mstack-arg-probeโ enable stack probes. โ-mstack-probe-size=<value>โ set the stack probe size. ๐-mstack-protector-guard-offset=<value>โ use the given offset for addressing the stack-protector guard. ๐-mstack-protector-guard-reg=<value>โ use the given reg for addressing the stack-protector guard. ๐-mstack-protector-guard-symbol=<value>โ use the given symbol for addressing the stack-protector guard. ๐-mstack-protector-guard=<value>โ use the given guard (global,tls) for addressing the stack-protector guard. ๐-mstackrealignโ force realign the stack at entry to every function. ๐-mstrict-alignโ force all memory accesses to be aligned. (AArch64/LoongArch/RISC-V only) ๐-msve-vector-bits=<value>โ specify the size in bits of an SVE vector register. Defaults to the vector length agnostic value of"scalable". (AArch64 only) ๐-msvr4-struct-returnโ return small structs in registers. (PPC32 only) ๐ฆ-mtargetos=<value>โ set the deployment target to be the specified OS and OS version. ๐ฏ-mtgsplitโ enable threadgroup split execution mode. (AMDGPU only) โ-mthread-model <value>โ the thread model to use. Defaults to'posix'.) ๐งต-mtls-dialect=<value>โ which thread-local storage dialect to use for dynamic accesses of TLS variables. ๐งต-mtls-direct-seg-refsโ enable direct TLS access through segment registers (default). โ-mtls-size=<value>โ specify bit size of immediate TLS offsets (AArch64 ELF only):12(for 4KB) |24(for 16MB, default) |32(for 4GB) |48(for 256TB, needs-mcmodel=large). ๐-mtocdata=<value>โ bestie, you hand over a list of variables and the TOC data transformation gets applied to exactly those. slay ๐-mtocdataโ no value? then every suitable variable gets the TOC data transformation. all of them โจ-mtp=<value>โ thread pointer access method, okay? For AArch32:'soft'uses a function call, or'tpidrurw','tpidruro'or'tpidrprw'use the three CP15 registers.'cp15'is an alias for'tpidruro'. For AArch64:'tpidr_el0','tpidr_el1','tpidr_el2','tpidr_el3'or'tpidrro_el0'use the five system registers.'elN'is an alias for'tpidr_elN'. so many options, iykyk ๐ฆ-mtune=<value>โ only supported on AArch64, PowerPC, RISC-V, SPARC, SystemZ, and X86. not everywhere, bestie โ ๏ธ-MT <value>โ specify name of main file output in depfile. depfile stuff ๐-multi-lib-config=<file>โ path to the YAML configuration file to be used for multilib selection. yaml vibes ๐-munaligned-accessโ allow memory accesses to be unaligned (AArch32/MIPSr6 only). unaligned, risky but ok ๐-munaligned-symbolsโ expect external char-aligned symbols to be without ABI alignment (SystemZ only). systemz things ๐ง-munsafe-fp-atomicsโ enable generation of unsafe floating point atomic instructions. May generate more efficient code, but may not respect rounding and denormal modes, and may give incorrect results for certain memory destinations. (AMDGPU only) unsafe, but fast? careful bestie ๐ญ-mv8plusโ enable V8+ mode, allowing use of 64-bit V9 instructions in 32-bit code. v8+ mode, slay ๐ฅ-mvector-strict-alignโ force all vector memory accesses to be aligned (RISC-V only). alignment enforcement ๐-mvevpuโ emit VPU instructions for VE. ve vpu things ๐ฆ-MVโ use NMake/Jom format for the depfile. nmake/jom format ๐-mwavefrontsize64โ specify wavefront size 64 mode (AMDGPU only). wavefront 64 ๐-mxcoff-build-id=<0xHEXSTRING>โ on AIX, request creation of a build-id string,"0xHEXSTRING", in the string table of the loader section inside the linked binary. aix build id ๐-mxcoff-roptrโ place constant objects with relocatable address values in the RO data section and add-bforceimprwto the linker flags (AIX only). ro data + linker flags ๐-mzos-hlq-clang=<ClangHLQ>โ high level qualifier for z/OS C++RT side deck datasets. z/os stuff ๐ง-mzos-hlq-csslib=<CsslibHLQ>โ high level qualifier for z/OS CSSLIB dataset. csslib hlq ๐ธ-mzos-hlq-le=<LeHLQ>โ high level qualifier for z/OS Language Environment datasets. le hlq ๐-mzos-sys-include=<SysInclude>โ path to system headers on z/OS. z/os headers ๐ฆ-Mโ like-MD, but also implies-Eand writes to stdout by default. like -MD but extra โจ--no-cuda-include-ptx=<value>โ do not include PTX for the following GPU architecture (e.g.sm_35) or'all'. May be specified more than once. no ptx for that arch ๐ซ--no-cuda-version-checkโ don't error out if the detected version of the CUDA install is too low for the requested CUDA gpu architecture. no version check, yolo ๐--no-default-configโ disable loading default configuration files. no default config ๐--no-gpu-bundle-outputโ do not bundle output files of HIP device compilation. no bundle ๐ง-no-hip-rtโ do not link against HIP runtime libraries. no hip runtime ๐ธ--no-offload-arch=<value>โ 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. remove offload arch ๐--no-offload-new-driverโ don't use the new driver for offloading compilation. old driver, ok ๐ฆ--no-system-header-prefix=<prefix>โ treat all#includepaths starting with<prefix>as not including a system header. not a system header ๐ซ--no-wasm-optโ disable the wasm-opt optimizer. no wasm opt ๐-nobuiltinincโ disable builtin#includedirectories only. no builtin includes ๐-nogpuincโ do not add include paths for CUDA/HIP and do not include the default CUDA/HIP wrapper headers. no gpu includes ๐ซ-nogpulibโ do not link device library for CUDA/HIP device compilation. no gpu lib ๐ง-nohipwrapperincโ do not include the default HIP wrapper headers and include paths. no hip wrapper ๐ธ-nolibsyclโ do not link SYCL runtime library. no sycl lib ๐-nostdinc++โ disable standard#includedirectories for the C++ standard library. no c++ std includes ๐ฆ-nostdincโ disable both standard system#includedirectories and builtin#includedirectories. no std includes at all ๐-nostdlibincโ disable standard system#includedirectories only. no system std includes ๐--nvptx-arch-tool=<value>โ tool used for detecting NVIDIA GPU arch in the system. nvptx arch tool ๐ง-ObjC++โ treat source input files as Objective-C++ inputs. objc++ mode ๐ฅ-ObjCโ treat source input files as Objective-C inputs. objc mode ๐ธ-object-file-name=<file>โ set the output<file>for debug infos. object file name ๐-Ofast<value>โ deprecated; use'-O3 -ffast-math'for the same behavior, or'-O3'to enable only conforming optimizations. deprecated, bestie, use -O3 instead โ ๏ธ--offload-arch=<value>โ specify an offloading device architecture for CUDA, HIP, or OpenMP. (e.g.sm_35). If'native'is used the compiler will detect locally installed architectures. For HIP offloading, the device architecture can be followed by target ID features delimited by a colon (e.g.gfx908:xnack+:sramecc-). May be specified more than once. offload arch, so many options ๐ฆ--offload-compressโ compress offload device binaries (HIP only). compress offload ๐๏ธ--offload-device-onlyโ only compile for the offloading device. device only ๐--offload-host-deviceโ compile for both the offloading host and device (default). host and device, default โจ--offload-host-onlyโ only compile for the offloading host. host only ๐ซ--offload-linkโ use the new offloading linker to perform the link job. new offload linker ๐--offload-new-driverโ use the new driver for offloading compilation. new offload driver ๐ฅ--offload=<value>โ specify comma-separated list of offloading target triples (CUDA and HIP only). offload target triples ๐-o <file>โ write output to<file>. output file ๐-pedanticโ warn on language extensions. pedantic mode, warning you โ ๏ธ-pgโ enable mcount instrumentation. mcount instrumentation ๐-pipeโ use pipes between commands, when possible. pipes between commands ๐ฐ--precompileโ only precompile the input. precompile only ๐--pretty-sgfโ emit pretty printed symbol graphs. pretty symbol graphs ๐ธ-print-diagnostic-optionsโ print all of Clang's warning options. print warning options ๐-print-effective-tripleโ print the effective target triple. effective triple ๐ฏ-print-enabled-extensionsโ print the extensions enabled by the given target and-march/-mcpuoptions. (AArch64 and RISC-V only) enabled extensions ๐ฆ-print-file-name=<file>โ print the full library path of<file>. full library path ๐-print-ivar-layoutโ enable Objective-C Ivar layout bitmap print trace. ivar layout trace ๐-print-libgcc-file-nameโ print the library path for the currently used compiler runtime library ("libgcc.a"or"libclang_rt.builtins.*.a"). libgcc path ๐๏ธ-print-library-module-manifest-pathโ print the path for the C++ Standard library module manifest. module manifest path ๐-print-multi-flags-experimentalโ print the flags used for selecting multilibs (experimental). multilib flags, experimental ๐งช-print-prog-name=<name>โ print the full program path of<name>. program path ๐ ๏ธ-print-resource-dirโ print the resource directory pathname. resource dir ๐-print-rocm-search-dirsโ print the paths used for finding ROCm installation. rocm search dirs ๐งญ-print-runtime-dirโ print the directory pathname containing Clang's runtime libraries. runtime dir ๐-print-search-dirsโ print the paths used for finding libraries and programs. search dirs ๐-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). supported cpus ๐ฅ๏ธ-print-supported-extensionsโ print supported-marchextensions (RISC-V, AArch64 and ARM only). supported extensions ๐-print-target-tripleโ print the normalized target triple. target triple ๐ฏ-print-targetsโ print the registered targets. registered targets ๐-pthreadโ support POSIX threads in generated code. posix threads ๐งต--ptxas-path=<value>โ path to ptxas (used for compiling CUDA code). ptxas path ๐ฃ๏ธ-Pโ disable linemarker output in-Emode. no linemarkers ๐ซ-pโ enable mcount instrumentation with prof. mcount with prof ๐-Qnโ do not emit metadata containing compiler name and version. no compiler metadata ๐ซ-Qunused-argumentsโ don't emit warning for unused driver arguments. no warning for unused args ๐-Qyโ emit metadata containing compiler name and version. compiler metadata ๐-regcall4โ set__regcall4as a default calling convention to respect__regcallABI v.4. regcall4 convention ๐-relocatable-pchโ whether to build a relocatable precompiled header. relocatable pch ๐ฆ-rewrite-legacy-objcโ rewrite Legacy Objective-C source to C++. legacy objc to c++ ๐-rewrite-objcโ rewrite Objective-C source to C++. objc to c++ ๐--rocm-device-lib-path=<value>โ ROCm device library path. Alternative to rocm-path. rocm device lib path ๐๏ธ--rocm-path=<value>โ ROCm installation path, used for finding and automatically linking required bitcode libraries. rocm path ๐งญ-Rpass-analysis=<value>โ report transformation analysis from optimization passes whose name matches the given POSIX regular expression. report analysis ๐-Rpass-missed=<value>โ report missed transformations by optimization passes whose name matches the given POSIX regular expression. report missed ๐ซ-Rpass=<value>โ report transformations performed by optimization passes whose name matches the given POSIX regular expression. report transformations โจ-rtlib=<value>โ compiler runtime library to use. runtime library ๐-R<remark>โ enable the specified remark. enable remark ๐ฌ-save-stats=<value>โ save llvm statistics. save stats ๐-save-statsโ save llvm statistics. save stats ๐-save-temps=<value>โ save intermediate compilation results.<arg>can be set to'cwd'for current working directory, or'obj'which will save temporary files in the same directory as the final output file. save temps ๐๏ธ-save-tempsโ alias for--save-temps=cwd. alias for --save-temps=cwd ๐-serialize-diagnostics <value>โ serialize compiler diagnostics to a file. serialize diagnostics ๐-shared-libsanโ dynamically link the sanitizer runtime. dynamic sanitizer ๐--start-no-unused-argumentsโ don't emit warnings about unused arguments for the following arguments. no unused arg warnings ๐-static-libsanโ statically link the sanitizer runtime (Not supported for ASan, TSan or UBSan on darwin). static sanitizer, not on darwin ๐ซ-static-openmpโ use the static host OpenMP runtime while linking. static openmp ๐-std=<value>โ language standard to compile for. language standard ๐-stdlib++-isystem <directory>โ use directory as the C++ standard library include path. c++ stdlib include path ๐-stdlib=<value>โ C++ standard library to use. c++ stdlib ๐-sycl-std=<value>โ SYCL language standard to compile for. sycl std ๐งช--symbol-graph-dir=<value>โ directory in which to emit symbol graphs. symbol graph dir ๐--system-header-prefix=<prefix>โ treat all#includepaths starting with<prefix>as including a system header. system header prefix ๐-Sโ only run preprocess and compilation steps. only preprocess and compile ๐--target=<value>โ generate code for the given target. target ๐ฏ-timeโ time individual commands. time commands โฑ๏ธ-traditional-cppโ enable some traditional CPP emulation. traditional cpp ๐ฐ๏ธ-trigraphsโ process trigraph sequences. yes bestie, those three-character sequences are getting processed ๐-T <script>โ specify <script> as linker script. it's giving "here's the map, linker" ๐บ๏ธ-undefโ undef all system defines. literally all of them, no cap ๐-unwindlib=<value>โ unwind library to use. pick your unwind vibe โจ-U <macro>โ undefine macro <macro>. bye bye macro ๐--verify-debug-infoโ verify the binary representation of debug output. double-check that debug glow-up ๐-verify-pchโ load and verify that a pre-compiled header file is not stale. not me checking if your PCH is expired ๐--versionโ print version information. the classic "who am I" moment ๐-vfsoverlay <value>โ overlay the virtual filesystem described by file over the real file system, bestie. additionally, pass this overlay file to the linker if it supports it ๐ฆ-vโ show commands to run and use verbose output. main character energy: tell me everything ๐ค-Wa,<arg>โ pass the comma separated arguments in <arg> to the assembler. assembler gets the tea โ--warning-suppression-mappings=<value>โ file containing diagnostic suppression mappings. see user manual for file format, iykyk ๐--wasm-optโ enable thewasm-optoptimizer (default). it's on by default, periodt โจ-Wl,<arg>โ pass the comma separated arguments in <arg> to the linker. linker says thanks bestie ๐ซถ-working-directory <value>โ resolve file paths relative to the specified directory. paths, but make it relative to <value> ๐-Wp,<arg>โ pass the comma separated arguments in <arg> to the preprocessor. preprocessor gets the comma-separated gossip ๐-W<warning>โ enable the specified warning. turn on that warning, bestie ๐จ-wโ suppress all warnings. not a single warning, no cap ๐คซ-Xanalyzer <arg>โ pass <arg> to the static analyzer. analyzer gets the arg ๐-Xarch_device <arg>โ pass <arg> to the CUDA/HIP device compilation. device side, slay ๐ฎ-Xarch_host <arg>โ pass <arg> to the CUDA/HIP host compilation. host side, also slay ๐ป-Xassembler <arg>โ pass <arg> to the assembler. assembler, here's your arg โจ-Xclang=<arg>โ alias for-Xclang. yes, literally an alias for-Xclang, bestie ๐-Xclang <arg>โ pass <arg> toclang -cc1.clang -cc1, take this arg ๐-Xcuda-fatbinary <arg>โ pass <arg> to fatbinary invocation. fatbinary gets the arg ๐ง-Xcuda-ptxas <arg>โ pass <arg> to the ptxas assembler. ptxas assembler, here you go ๐-Xlinker <arg>โ pass <arg> to the linker. linker arg, periodt ๐-Xoffload-linker<triple> <arg>โ pass <arg> to the offload linkers or the ones identified by-<triple>. offload linkers or the-<triple>ones, got it ๐ฆ-Xopenmp-target=<triple> <arg>โ pass <arg> to the target offloading toolchain identified by <triple>. ๐-Xopenmp-target <arg>โ pass <arg> to the target offloading toolchain. no triple, just vibes โจ-Xpreprocessor <arg>โ pass <arg> to the preprocessor. preprocessor gets it ๐ง-Xsycl-target-backend=<triple> <arg>โ pass <arg> to the SYCL based backend identified by <triple>. SYCL backend with triple, iconic ๐-Xsycl-target-backend <arg>โ pass <arg> to the SYCL based target backend. SYCL backend, no triple ๐-Xsycl-target-frontend=<triple> <arg>โ pass <arg> to the SYCL based target frontend identified by <triple>. frontend with triple ๐-Xsycl-target-frontend <arg>โ pass <arg> to the SYCL based target frontend. frontend, no triple โจ-Xsycl-target-linker=<triple> <arg>โ pass <arg> to the SYCL based target linker identified by <triple>. linker with triple ๐-Xsycl-target-linker <arg>โ pass <arg> to the SYCL based target linker. linker, no triple ๐-Xs <arg>โ pass <arg> to the offline compiler. offline compiler gets it ๐ฅ๏ธ-Xs<arg>โ pass <arg> to the offline compiler, adding the option specifier-to the <arg>. note the specifier-gets added to <arg> ๐-x <language>โ treat subsequent input files as having type <language>. language vibe check ๐-z <arg>โ pass-z <arg>to the linker. linker gets-z <arg>, periodt ๐
dxc compatibility options.: ๐โจ
--dxv-path=<value>โ DXIL validator installation path. where the DXIL validator lives ๐-fspv-target-env=<value>โ specify the target environment. target env, specify it ๐ซ-hlsl-entry <value>โ entry point name for hlsl. HLSL entry point, bestie ๐ฏ
SEE ALSO ๐ธ
okay so the full documentation for clang-21 is maintained as a Texinfo manual, fr fr. if the info and clang-21 programs are properly installed at your site, this command:
info clang-21
should give you access to the complete manual. periodt. ๐
This page is from clang-21 6.2.0-0ubuntu2, dated March 2026. slay, bestie, you made it to the end ๐ซถโจ
๐ฆ where this page comes from
- ubuntu resolute: dpclang-6 6.2.0-0ubuntu2 ยท APACHE-2-LLVM-EXCEPTIONS
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms