gccBase top-level property

FigSpec gccBase
final

Base spec (options without -std); gcc spec = gccBase + stdOption

Implementation

final FigSpec gccBase = FigSpec(
    name: 'gcc',
    description: 'The default compiler for most linux distributions',
    options: [
      Option(
          name: '--analyzer-output',
          description: 'Static analyzer report output format',
          args: [
            Arg(name: 'value', description: 'Value', suggestions: [
              FigSuggestion(name: 'html'),
              FigSuggestion(name: 'plist'),
              FigSuggestion(name: 'plist-multi-file'),
              FigSuggestion(name: 'plist-html'),
              FigSuggestion(name: 'sarif'),
              FigSuggestion(name: 'text')
            ])
          ]),
      Option(name: '--analyze', description: 'Run the static analyzer'),
      Option(
          name: '-arcmt-migrate-emit-errors',
          description: 'Emit ARC errors even if the migrator can fix them'),
      Option(
          name: '-arcmt-migrate-report-output',
          description: 'Output path for the plist report',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-B',
          description:
              'Add <dir> to search path for binaries and object files used implicitly',
          args: [Arg(name: 'dir', description: 'Dir', template: 'folders')]),
      Option(
          name: '-CC',
          description:
              'Include comments from within macros in preprocessed output'),
      Option(
          name: '-cl-denorms-are-zero',
          description: 'OpenCL only. Allow denormals to be flushed to zero'),
      Option(
          name: '-cl-fast-relaxed-math',
          description:
              'OpenCL only. Sets -cl-finite-math-only and -cl-unsafe-math-optimizations, and defines __FAST_RELAXED_MATH__'),
      Option(
          name: '-cl-finite-math-only',
          description:
              'OpenCL only. Allow floating-point optimizations that assume arguments and results are not NaNs or +-Inf'),
      Option(
          name: '-cl-fp32-correctly-rounded-divide-sqrt',
          description:
              'OpenCL only. Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded'),
      Option(
          name: '-cl-kernel-arg-info',
          description: 'OpenCL only. Generate kernel argument metadata'),
      Option(
          name: '-cl-mad-enable',
          description:
              'OpenCL only. Allow use of less precise MAD computations in the generated binary'),
      Option(
          name: '-cl-no-signed-zeros',
          description:
              'OpenCL only. Allow use of less precise no signed zeros computations in the generated binary'),
      Option(
          name: '-cl-opt-disable',
          description:
              'OpenCL only. This option disables all optimizations. By default optimizations are enabled'),
      Option(
          name: '-cl-single-precision-constant',
          description:
              'OpenCL only. Treat double precision floating-point constant as single precision constant'),
      Option(
          name: '-cl-std',
          description: 'OpenCL language standard to compile for',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-cl-strict-aliasing',
          description:
              'OpenCL only. This option is added for compatibility with OpenCL 1.0'),
      Option(
          name: '-cl-uniform-work-group-size',
          description:
              'OpenCL only. Defines that the global work-size be a multiple of the work-group size specified to clEnqueueNDRangeKernel'),
      Option(
          name: '-cl-unsafe-math-optimizations',
          description:
              'OpenCL only. Allow unsafe floating-point optimizations'),
      Option(
          name: '--config',
          description: 'Specifies configuration file',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '--cuda-compile-host-device',
          description: 'Compile CUDA code for both host and device (default)'),
      Option(
          name: '--cuda-device-only',
          description: 'Compile CUDA code for device only'),
      Option(
          name: '--cuda-host-only',
          description: 'Compile CUDA code for host only'),
      Option(
          name: '--cuda-include-ptx',
          description:
              'Include PTX for the following GPU architecture (e.g. sm_35) or \'all\'. May be specified more than once',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '--cuda-noopt-device-debug',
          description:
              'Enable device-side debug info generation. Disables ptxas optimizations'),
      Option(
          name: '--cuda-path-ignore-env',
          description:
              'Ignore environment variables to detect CUDA installation'),
      Option(name: '--cuda-path', description: 'CUDA installation path', args: [
        Arg(name: 'value', description: 'Value', template: 'folders')
      ]),
      Option(
          name: '-cxx-isystem',
          description: 'Add directory to the C++ SYSTEM include search path',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-C', description: 'Include comments in preprocessed output'),
      Option(
          name: '-c',
          description: 'Only run preprocess, compile, and assemble steps'),
      Option(
          name: '-dD',
          description:
              'Print macro definitions in -E mode in addition to normal output'),
      Option(
          name: '-dependency-dot',
          description: 'Filename to write DOT-formatted header dependencies to',
          args: [
            Arg(name: 'value', description: 'Value', template: 'filepaths')
          ]),
      Option(
          name: '-dependency-file',
          description: 'Filename (or -) to write dependency output to',
          args: [
            Arg(
                name: 'value',
                description: 'Value',
                suggestions: [FigSuggestion(name: '-')],
                template: 'filepaths')
          ]),
      Option(
          name: '-dI',
          description:
              'Print include directives in -E mode in addition to normal output'),
      Option(
          name: '-dM',
          description:
              'Print macro definitions in -E mode instead of normal output'),
      Option(
          name: '-D',
          description: 'Define <macro> to <value> (or 1 if <value> omitted)',
          args: [Arg(name: 'macro>=<value', description: 'Macro>=<valu')]),
      Option(
          name: '-emit-ast',
          description: 'Emit Clang AST files for source inputs'),
      Option(
          name: '-emit-interface-stubs',
          description: 'Generate Interface Stub Files'),
      Option(
          name: '-emit-llvm',
          description:
              'Use the LLVM representation for assembler and object files'),
      Option(
          name: '-emit-merged-ifs',
          description:
              'Generate Interface Stub Files, emit merged text not binary'),
      Option(
          name: '--emit-static-lib',
          description: 'Enable linker job to emit a static library'),
      Option(
          name:
              '-enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang',
          description:
              'Trivial automatic variable initialization to zero is only here for benchmarks, it\'ll eventually be removed, and I\'m OK with that because I\'m only using it to benchmark'),
      Option(name: '-E', description: 'Only run the preprocessor'),
      Option(
          name: '-fAAPCSBitfieldLoad',
          description:
              'Follows the AAPCS standard that all volatile bit-field write generates at least one load. (ARM only)'),
      Option(
          name: '-faddrsig', description: 'Emit an address-significance table'),
      Option(
          name: '-faligned-allocation',
          description: 'Enable C++17 aligned allocation functions'),
      Option(
          name: '-fallow-editor-placeholders',
          description: 'Treat editor placeholders as valid source code'),
      Option(
          name: '-fansi-escape-codes',
          description: 'Use ANSI escape codes for diagnostics'),
      Option(
          name: '-fapinotes-cache-path',
          description:
              'Does nothing; API notes are no longer cached separately from modules',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-fapinotes-modules',
          description: 'Enable module-based external API notes support'),
      Option(
          name: '-fapinotes-swift-version',
          description:
              'Specify the Swift version to use when filtering API notes',
          args: [Arg(name: 'version', description: 'Version')]),
      Option(
          name: '-fapinotes', description: 'Enable external API notes support'),
      Option(
          name: '-fapple-kext',
          description: 'Use Apple\'s kernel extensions ABI'),
      Option(
          name: '-fapple-link-rtlib',
          description: 'Force linking the clang builtins runtime library'),
      Option(
          name: '-fapple-pragma-pack',
          description: 'Enable Apple gcc-compatible #pragma pack handling'),
      Option(name: '-fapplication-extension', description: 'Restrict'),
      Option(name: '-fasm-blocks', description: ''),
      Option(name: '-fautolink', description: ''),
      Option(
          name: '-fbasic-block-sections',
          description:
              'Place each function\'s basic blocks in unique sections (ELF Only) : all | labels | none | list=<file>',
          args: [
            Arg(name: 'value', description: 'Value', suggestions: [
              FigSuggestion(name: 'all'),
              FigSuggestion(name: 'labels'),
              FigSuggestion(name: 'none')
            ])
          ]),
      Option(
          name: '-fblocks',
          description: 'Enable the \'blocks\' language feature'),
      Option(
          name: '-fborland-extensions',
          description:
              'Accept non-standard constructs supported by the Borland compiler'),
      Option(
          name: '-fbranch-target-identification',
          description:
              'Emit branch target identification instructions for indirect branch destinations'),
      Option(
          name: '-fbuild-session-file',
          description:
              'Use the last modification time of <file> as the build session timestamp',
          args: [
            Arg(name: 'file', description: 'File', template: 'filepaths')
          ]),
      Option(
          name: '-fbuild-session-timestamp',
          description: 'Time when the current build session started',
          args: [
            Arg(
                name: 'time since Epoch in seconds',
                description: 'Time since Epoch in seconds')
          ]),
      Option(
          name: '-fbuiltin-module-map',
          description: 'Load the clang builtins module map file'),
      Option(name: '-fc++-static-destructors', description: ''),
      Option(
          name: '-fcall-saved-x10',
          description: 'Make the x10 register call-saved (AArch64 only)'),
      Option(
          name: '-fcall-saved-x11',
          description: 'Make the x11 register call-saved (AArch64 only)'),
      Option(
          name: '-fcall-saved-x12',
          description: 'Make the x12 register call-saved (AArch64 only)'),
      Option(
          name: '-fcall-saved-x13',
          description: 'Make the x13 register call-saved (AArch64 only)'),
      Option(
          name: '-fcall-saved-x14',
          description: 'Make the x14 register call-saved (AArch64 only)'),
      Option(
          name: '-fcall-saved-x15',
          description: 'Make the x15 register call-saved (AArch64 only)'),
      Option(
          name: '-fcall-saved-x18',
          description: 'Make the x18 register call-saved (AArch64 only)'),
      Option(
          name: '-fcall-saved-x8',
          description: 'Make the x8 register call-saved (AArch64 only)'),
      Option(
          name: '-fcall-saved-x9',
          description: 'Make the x9 register call-saved (AArch64 only)'),
      Option(name: '-fcaret-diagnostics', description: ''),
      Option(
          name: '-fcf-protection',
          description: 'Enable cf-protection in \'full\' mode',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(name: '-fchar8_t', description: 'Enable C++ builtin type char8_t'),
      Option(
          name: '-fclang-abi-compat',
          description: 'Attempt to match the ABI of Clang <version>',
          args: [Arg(name: 'version', description: 'Version')]),
      Option(
          name: '-fcolor-diagnostics',
          description: 'Enable colors in diagnostics'),
      Option(
          name: '-fcomment-block-commands',
          description:
              'Treat each comma separated argument in <arg> as a documentation comment block command',
          args: [Arg(name: 'arg', description: 'Arg')]),
      Option(
          name: '-fcommon',
          description:
              'Place uninitialized global variables in a common block'),
      Option(
          name: '-fcomplete-member-pointers',
          description:
              'Require member pointer base types to be complete if they would be significant under the Microsoft ABI'),
      Option(
          name: '-fconvergent-functions',
          description: 'Assume functions may be convergent'),
      Option(
          name: '-fcoroutines-ts',
          description: 'Enable support for the C++ Coroutines TS'),
      Option(
          name: '-fcoverage-mapping',
          description:
              'Generate coverage mapping to enable code coverage analysis'),
      Option(
          name: '-fcs-profile-generate',
          description:
              'Generate instrumented code to collect context sensitive execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                isOptional: true,
                template: 'folders')
          ]),
      Option(
          name: '-fcuda-approx-transcendentals',
          description: 'Use approximate transcendental functions'),
      Option(
          name: '-fcuda-flush-denormals-to-zero',
          description:
              'Flush denormal floating point values to zero in CUDA device mode'),
      Option(
          name: '-fcuda-short-ptr',
          description:
              'Use 32-bit pointers for accessing const/local/shared address spaces'),
      Option(name: '-fcxx-exceptions', description: 'Enable C++ exceptions'),
      Option(
          name: '-fdata-sections',
          description: 'Place each data in its own section'),
      Option(
          name: '-fdebug-compilation-dir',
          description: 'The compilation directory to embed in the debug info',
          args: [
            Arg(name: 'value', description: 'Value', template: 'folders')
          ]),
      Option(
          name: '-fdebug-default-version',
          description:
              'Default DWARF version to use, if a -g option caused DWARF debug info to be produced',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fdebug-info-for-profiling',
          description:
              'Emit extra debug info to make sample profile more accurate'),
      Option(
          name: '-fdebug-macro', description: 'Emit macro debug information'),
      Option(
          name: '-fdebug-prefix-map',
          description: 'Remap file source paths in debug info',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fdebug-ranges-base-address',
          description:
              'Use DWARF base address selection entries in .debug_ranges'),
      Option(
          name: '-fdebug-types-section',
          description: 'Place debug types in their own section (ELF Only)'),
      Option(name: '-fdeclspec', description: 'Allow __declspec as a keyword'),
      Option(
          name: '-fdelayed-template-parsing',
          description:
              'Parse templated function definitions at the end of the translation unit'),
      Option(
          name: '-fdelete-null-pointer-checks',
          description:
              'Treat usage of null pointers as undefined behavior (default)'),
      Option(
          name: '-fdiagnostics-absolute-paths',
          description: 'Print absolute paths in diagnostics'),
      Option(
          name: '-fdiagnostics-hotness-threshold',
          description:
              'Prevent optimization remarks from being output if they do not have at least this profile count',
          args: [Arg(name: 'number', description: 'Number')]),
      Option(
          name: '-fdiagnostics-parseable-fixits',
          description: 'Print fix-its in machine parseable form'),
      Option(
          name: '-fdiagnostics-print-source-range-info',
          description: 'Print source range spans in numeric form'),
      Option(
          name: '-fdiagnostics-show-hotness',
          description: 'Enable profile hotness information in diagnostic line'),
      Option(
          name: '-fdiagnostics-show-note-include-stack',
          description: 'Display include stacks for diagnostic notes'),
      Option(
          name: '-fdiagnostics-show-option',
          description: 'Print option name with mappable diagnostics'),
      Option(
          name: '-fdiagnostics-show-template-tree',
          description:
              'Print a template comparison tree for differing templates'),
      Option(
          name: '-fdigraphs',
          description:
              'Enable alternative token representations \'<:\', \':>\', \'<%\', \'%>\', \'%:\', \'%:%:\' (default)'),
      Option(
          name: '-fdiscard-value-names',
          description: 'Discard value names in LLVM IR'),
      Option(
          name: '-fdollars-in-identifiers',
          description: 'Allow \'\$\' in identifiers'),
      Option(
          name: '-fdouble-square-bracket-attributes',
          description:
              'Enable \'[[]]\' attributes in all C and C++ language modes'),
      Option(name: '-fdwarf-directory-asm', description: ''),
      Option(
          name: '-fdwarf-exceptions',
          description: 'Use DWARF style exceptions'),
      Option(
          name: '-fembed-bitcode-marker',
          description: 'Embed placeholder LLVM IR data as a marker'),
      Option(
          name: '-fembed-bitcode',
          description: 'Embed LLVM bitcode (option: off, all, bitcode, marker)',
          args: [Arg(name: 'option', description: 'Option')]),
      Option(
          name: '-femit-all-decls',
          description: 'Emit all declarations, even if unused'),
      Option(
          name: '-femulated-tls',
          description: 'Use emutls functions to access thread_local variables'),
      Option(
          name: '-fenable-globaldse',
          description: 'Enable experimental global dead store elimination'),
      Option(
          name: '-fenable-matrix',
          description: 'Enable matrix data type and related builtin functions'),
      Option(
          name: '-fexceptions',
          description: 'Enable support for exception handling'),
      Option(
          name: '-fexperimental-new-constant-interpreter',
          description: 'Enable the experimental new constant interpreter'),
      Option(
          name: '-fexperimental-new-pass-manager',
          description: 'Enables an experimental new pass manager in LLVM'),
      Option(
          name: '-fexperimental-relative-c++-abi-vtables',
          description:
              'Use the experimental C++ class ABI for classes with virtual tables'),
      Option(
          name: '-fexperimental-strict-floating-point',
          description: 'Enables experimental strict floating point in LLVM'),
      Option(
          name: '-ffast-math',
          description: 'Allow aggressive, lossy floating-point optimizations'),
      Option(
          name: '-ffile-prefix-map',
          description:
              'Remap file source paths in debug info and predefined preprocessor macros',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-ffine-grained-bitfield-accesses',
          description:
              'Use separate accesses for consecutive bitfield runs with legal widths and alignments'),
      Option(name: '-ffixed-point', description: 'Enable fixed point types'),
      Option(
          name: '-ffixed-r19',
          description: 'Reserve register r19 (Hexagon only)'),
      Option(
          name: '-ffixed-r9',
          description: 'Reserve the r9 register (ARM only)'),
      Option(
          name: '-ffixed-x10',
          description: 'Reserve the x10 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x11',
          description: 'Reserve the x11 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x12',
          description: 'Reserve the x12 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x13',
          description: 'Reserve the x13 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x14',
          description: 'Reserve the x14 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x15',
          description: 'Reserve the x15 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x16',
          description: 'Reserve the x16 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x17',
          description: 'Reserve the x17 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x18',
          description: 'Reserve the x18 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x19',
          description: 'Reserve the x19 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x1',
          description: 'Reserve the x1 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x20',
          description: 'Reserve the x20 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x21',
          description: 'Reserve the x21 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x22',
          description: 'Reserve the x22 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x23',
          description: 'Reserve the x23 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x24',
          description: 'Reserve the x24 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x25',
          description: 'Reserve the x25 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x26',
          description: 'Reserve the x26 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x27',
          description: 'Reserve the x27 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x28',
          description: 'Reserve the x28 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x29',
          description: 'Reserve the x29 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x2',
          description: 'Reserve the x2 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x30',
          description: 'Reserve the x30 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x31',
          description: 'Reserve the x31 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x3',
          description: 'Reserve the x3 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x4',
          description: 'Reserve the x4 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x5',
          description: 'Reserve the x5 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x6',
          description: 'Reserve the x6 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x7',
          description: 'Reserve the x7 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x8',
          description: 'Reserve the x8 register (AArch64/RISC-V only)'),
      Option(
          name: '-ffixed-x9',
          description: 'Reserve the x9 register (AArch64/RISC-V only)'),
      Option(
          name: '-fforce-dwarf-frame',
          description: 'Always emit a debug frame section'),
      Option(
          name: '-fforce-emit-vtables',
          description: 'Emits more virtual tables to improve devirtualization'),
      Option(
          name: '-fforce-enable-int128',
          description: 'Enable support for int128_t type'),
      Option(
          name: '-ffp-contract',
          description:
              'Form fused FP ops (e.g. FMAs): fast (everywhere) | on (according to FP_CONTRACT pragma) | off (never fuse). Default is \'fast\' for CUDA/HIP and \'on\' otherwise',
          args: [
            Arg(name: 'value', description: 'Value', suggestions: [
              FigSuggestion(name: 'fast'),
              FigSuggestion(name: 'on'),
              FigSuggestion(name: 'off')
            ])
          ]),
      Option(
          name: '-ffp-exception-behavior',
          description:
              'Specifies the exception behavior of floating-point operations',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-ffp-model',
          description: 'Controls the semantics of floating-point calculations',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-ffreestanding',
          description:
              'Assert that the compilation takes place in a freestanding environment'),
      Option(
          name: '-ffunction-sections',
          description: 'Place each function in its own section'),
      Option(
          name: '-fglobal-isel',
          description: 'Enables the global instruction selector'),
      Option(name: '-fgnu-inline-asm', description: ''),
      Option(
          name: '-fgnu-keywords',
          description:
              'Allow GNU-extension keywords regardless of language standard'),
      Option(
          name: '-fgnu-runtime',
          description:
              'Generate output compatible with the standard GNU Objective-C runtime'),
      Option(
          name: '-fgnu89-inline',
          description: 'Use the gnu89 inline semantics'),
      Option(
          name: '-fgnuc-version',
          description:
              'Sets various macros to claim compatibility with the given GCC version',
          args: [
            Arg(name: 'value', description: 'Value', defaultValue: '4.2.')
          ]),
      Option(name: '-fgpu-allow-device-init', description: 'Allow'),
      Option(
          name: '-fgpu-rdc',
          description:
              'Generate relocatable device code, also known as separate compilation mode'),
      Option(
          name: '-fhip-new-launch-api',
          description: 'Use new kernel launching API for HIP'),
      Option(
          name: '-fignore-exceptions',
          description:
              'Enable support for ignoring exception handling constructs'),
      Option(
          name: '-fimplicit-module-maps',
          description:
              'Implicitly search the file system for module map files'),
      Option(
          name: '-finline-functions', description: 'Inline suitable functions'),
      Option(name: '-finline-hint-functions', description: 'Inline'),
      Option(
          name: '-finstrument-function-entry-bare',
          description:
              'Instrument function entry only, after inlining, without arguments to the instrumentation call'),
      Option(
          name: '-finstrument-functions-after-inlining',
          description:
              'Like -finstrument-functions, but insert the calls after inlining'),
      Option(
          name: '-finstrument-functions',
          description: 'Generate calls to instrument function entry and exit'),
      Option(
          name: '-fintegrated-as',
          description: 'Enable the integrated assembler'),
      Option(name: '-fintegrated-cc1', description: 'Run cc1 in-process'),
      Option(
          name: '-fjump-tables',
          description: 'Use jump tables for lowering switches'),
      Option(
          name: '-fkeep-static-consts',
          description: 'Keep static const variables if unused'),
      Option(
          name: '-flax-vector-conversions',
          description: 'Enable implicit vector bit-casts',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-flto-jobs',
          description:
              'Controls the backend parallelism of -flto=thin (default of 0 means the number of threads will be derived from the number of CPUs detected)',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-flto',
          description: 'Set LTO mode to either \'full\' or \'thin\'',
          args: [
            Arg(
                name: 'value',
                description: 'Value',
                isOptional: true,
                suggestions: [
                  FigSuggestion(name: 'full'),
                  FigSuggestion(name: 'thin')
                ])
          ]),
      Option(
          name: '-fmacro-prefix-map',
          description:
              'Remap file source paths in predefined preprocessor macros',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fmath-errno',
          description:
              'Require math functions to indicate errors by setting errno'),
      Option(
          name: '-fmax-tokens',
          description:
              'Max total number of preprocessed tokens for -Wmax-tokens',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fmax-type-align',
          description:
              'Specify the maximum alignment to enforce on pointers lacking an explicit alignment',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fmerge-all-constants',
          description: 'Allow merging of constants'),
      Option(
          name: '-fmessage-length',
          description:
              'Format message diagnostics so that they fit within N columns',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fmodule-file',
          description:
              'Specify the mapping of module name to precompiled module file, or load a module file if name is omitted',
          args: [Arg(name: '<name', description: '<nam')]),
      Option(
          name: '-fmodule-map-file',
          description: 'Load this module map file',
          args: [
            Arg(name: 'file', description: 'File', template: 'filepaths')
          ]),
      Option(
          name: '-fmodule-name',
          description: 'Specify the name of the module to build',
          args: [Arg(name: 'name', description: 'Name')]),
      Option(
          name: '-fmodules-cache-path',
          description: 'Specify the module cache path',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-fmodules-decluse',
          description: 'Require declaration of modules used within a module'),
      Option(
          name: '-fmodules-disable-diagnostic-validation',
          description:
              'Disable validation of the diagnostic options when loading the module'),
      Option(
          name: '-fmodules-ignore-macro',
          description:
              'Ignore the definition of the given macro when building and loading modules',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fmodules-prune-after',
          description:
              'Specify the interval (in seconds) after which a module file will be considered unused',
          args: [Arg(name: 'seconds', description: 'Seconds')]),
      Option(
          name: '-fmodules-prune-interval',
          description:
              'Specify the interval (in seconds) between attempts to prune the module cache',
          args: [Arg(name: 'seconds', description: 'Seconds')]),
      Option(
          name: '-fmodules-search-all',
          description:
              'Search even non-imported modules to resolve references'),
      Option(
          name: '-fmodules-strict-decluse',
          description:
              'Like -fmodules-decluse but requires all headers to be in modules'),
      Option(
          name: '-fmodules-ts',
          description: 'Enable support for the C++ Modules TS'),
      Option(
          name: '-fmodules-user-build-path',
          description: 'Specify the module user build path',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-fmodules-validate-input-files-content',
          description:
              'Validate PCM input files based on content if mtime differs'),
      Option(
          name: '-fmodules-validate-once-per-build-session',
          description:
              'Don\'t verify input files for the modules if the module has been successfully validated or loaded during this build session'),
      Option(
          name: '-fmodules-validate-system-headers',
          description:
              'Validate the system headers that a module depends on when loading the module'),
      Option(
          name: '-fmodules',
          description: 'Enable the \'modules\' language feature'),
      Option(
          name: '-fms-compatibility-version',
          description:
              'Dot-separated value representing the Microsoft compiler version number to report in _MSC_VER (0 = don\'t define it (default))',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fms-compatibility',
          description: 'Enable full Microsoft Visual C++ compatibility'),
      Option(
          name: '-fms-extensions',
          description:
              'Accept some non-standard constructs supported by the Microsoft compiler'),
      Option(
          name: '-fmsc-version',
          description:
              'Microsoft compiler version number to report in _MSC_VER (0 = don\'t define it (default))',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fnew-alignment',
          description:
              'Specifies the largest alignment guaranteed by \'::operator new(size_t)\'',
          args: [Arg(name: 'align', description: 'Alig')]),
      Option(name: '-fno-access-control', description: ''),
      Option(
          name: '-fno-addrsig',
          description: 'Don\'t emit an address-significance table'),
      Option(name: '-fno-allow-editor-placeholders', description: ''),
      Option(
          name: '-fno-apinotes-modules',
          description: 'Disable module-based external API notes support'),
      Option(
          name: '-fno-apinotes',
          description: 'Disable external API notes support'),
      Option(name: '-fno-asm-blocks', description: ''),
      Option(
          name: '-fno-assume-sane-operator-new',
          description:
              'Don\'t assume that C++\'s global operator new can\'t alias any pointer'),
      Option(
          name: '-fno-autolink',
          description:
              'Disable generation of linker directives for automatic library linking'),
      Option(name: '-fno-blocks', description: ''),
      Option(
          name: '-fno-builtin',
          description: 'Disable implicit builtin knowledge of functions',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fno-c++-static-destructors',
          description: 'Disable C++ static destructor registration'),
      Option(name: '-fno-caret-diagnostics', description: ''),
      Option(
          name: '-fno-char8_t',
          description: 'Disable C++ builtin type char8_t'),
      Option(
          name: '-fno-color-diagnostics',
          description: 'Disable colors in diagnostics'),
      Option(
          name: '-fno-common',
          description: 'Compile common globals like normal definitions'),
      Option(
          name: '-fno-complete-member-pointers',
          description:
              'Do not require member pointer base types to be complete if they would be significant under the Microsoft ABI'),
      Option(name: '-fno-constant-cfstrings', description: 'Disable'),
      Option(
          name: '-fno-constant-nsarray-literals',
          description:
              'Disable creation of CodeFoundation-type constant initializer `NSArray`s from array literals'),
      Option(
          name: '-fno-constant-nsdictionary-literals',
          description:
              'Disable creation of CodeFoundation-type constant initializer `NSDictionary`s from dictionary literals'),
      Option(
          name: '-fno-constant-nsnumber-literals',
          description:
              'Disable creation of CodeFoundation-type constant initializer `NSNumber`s from number literals'),
      Option(name: '-fno-coroutines-ts', description: ''),
      Option(
          name: '-fno-coverage-mapping',
          description: 'Disable code coverage analysis'),
      Option(
          name: '-fno-crash-diagnostics',
          description:
              'Disable auto-generation of preprocessed source files and a script for reproduction during a clang crash'),
      Option(
          name: '-fno-cuda-approx-transcendentals',
          description: 'Don\'t use approximate transcendental functions'),
      Option(name: '-fno-cuda-short-ptr', description: ''),
      Option(name: '-fno-cxx-exceptions', description: ''),
      Option(name: '-fno-data-sections', description: ''),
      Option(name: '-fno-debug-info-for-profiling', description: ''),
      Option(
          name: '-fno-debug-macro',
          description: 'Do not emit macro debug information'),
      Option(name: '-fno-debug-ranges-base-address', description: ''),
      Option(
          name: '-fno-declspec',
          description: 'Disallow __declspec as a keyword'),
      Option(
          name: '-fno-delayed-template-parsing',
          description: 'Disable delayed template parsing'),
      Option(
          name: '-fno-delete-null-pointer-checks',
          description:
              'Do not treat usage of null pointers as undefined behavior'),
      Option(
          name: '-fno-diagnostics-fixit-info',
          description: 'Do not include fixit information in diagnostics'),
      Option(
          name: '-fno-digraphs',
          description:
              'Disallow alternative token representations \'<:\', \':>\', \'<%\', \'%>\', \'%:\', \'%:%:\''),
      Option(
          name: '-fno-discard-value-names',
          description: 'Do not discard value names in LLVM IR'),
      Option(
          name: '-fno-dollars-in-identifiers',
          description: 'Disallow \'\$\' in identifiers'),
      Option(
          name: '-fno-double-square-bracket-attributes',
          description:
              'Disable \'[[]]\' attributes in all C and C++ language modes'),
      Option(name: '-fno-dwarf-directory-asm', description: ''),
      Option(name: '-fno-elide-constructors', description: 'Disable'),
      Option(
          name: '-fno-elide-type',
          description: 'Do not elide types when printing diagnostics'),
      Option(
          name: '-fno-exceptions',
          description: 'Disable support for exception handling'),
      Option(
          name: '-fno-experimental-new-pass-manager',
          description: 'Disables an experimental new pass manager in LLVM'),
      Option(
          name: '-fno-experimental-relative-c++-abi-vtables',
          description:
              'Do not use the experimental C++ class ABI for classes with virtual tables'),
      Option(name: '-fno-fast-math', description: ''),
      Option(
          name: '-fno-fine-grained-bitfield-accesses',
          description:
              'Use large-integer access for consecutive bitfield runs'),
      Option(
          name: '-fno-fixed-point', description: 'Disable fixed point types'),
      Option(name: '-fno-force-dwarf-frame', description: ''),
      Option(name: '-fno-force-emit-vtables', description: ''),
      Option(
          name: '-fno-force-enable-int128',
          description: 'Disable support for int128_t type'),
      Option(name: '-fno-function-sections', description: ''),
      Option(
          name: '-fno-global-isel',
          description: 'Disables the global instruction selector'),
      Option(
          name: '-fno-gnu-inline-asm',
          description: 'Disable GNU style inline asm'),
      Option(name: '-fno-gnu89-inline', description: ''),
      Option(
          name: '-fno-gpu-allow-device-init',
          description: 'Don\'t allow device side init function in HIP'),
      Option(name: '-fno-gpu-rdc', description: ''),
      Option(name: '-fno-hip-new-launch-api', description: 'Don\'t'),
      Option(
          name: '-fno-integrated-as',
          description: 'Disable the integrated assembler'),
      Option(
          name: '-fno-integrated-cc1',
          description: 'Spawn a separate process for each cc1'),
      Option(
          name: '-fno-jump-tables',
          description: 'Do not use jump tables for lowering switches'),
      Option(name: '-fno-keep-static-consts', description: 'Don\'t'),
      Option(name: '-fno-lto', description: 'Disable LTO mode (default)'),
      Option(name: '-fno-math-errno', description: ''),
      Option(
          name: '-fno-merge-all-constants',
          description: 'Disallow merging of constants'),
      Option(
          name: '-fno-no-access-control',
          description: 'Disable C++ access control'),
      Option(
          name: '-fno-objc-infer-related-result-type',
          description:
              'Do not infer Objective-C related result type based on method family'),
      Option(
          name: '-fno-operator-names',
          description:
              'Do not treat C++ operator name keywords as synonyms for operators'),
      Option(
          name: '-fno-pch-codegen',
          description:
              'Do not generate code for uses of this PCH that assumes an explicit object file will be built for the PCH'),
      Option(
          name: '-fno-pch-debuginfo',
          description:
              'Do not generate debug info for types in an object file built from this PCH and do not generate them elsewhere'),
      Option(
          name: '-fno-plt',
          description:
              'Use GOT indirection instead of PLT to make external function calls (x86 only)'),
      Option(
          name: '-fno-preserve-as-comments',
          description: 'Do not preserve comments in inline assembly'),
      Option(
          name: '-fno-profile-generate',
          description: 'Disable generation of profile instrumentation'),
      Option(
          name: '-fno-profile-instr-generate',
          description: 'Disable generation of profile instrumentation'),
      Option(
          name: '-fno-profile-instr-use',
          description:
              'Disable using instrumentation data for profile-guided optimization'),
      Option(
          name: '-fno-ptrauth-abi-version',
          description: 'Disable Pointer Authentication ABI versioning'),
      Option(
          name: '-fno-ptrauth-kernel-abi-version',
          description: 'Disable Pointer Authentication kernel ABI versioning'),
      Option(
          name: '-fno-register-global-dtors-with-atexit',
          description:
              'Don\'t use atexit or __cxa_atexit to register global destructors'),
      Option(name: '-fno-reroll-loops', description: ''),
      Option(name: '-fno-rewrite-imports', description: ''),
      Option(name: '-fno-rewrite-includes', description: ''),
      Option(name: '-fno-ropi', description: ''),
      Option(
          name: '-fno-rtlib-add-rpath',
          description:
              'Do not add -rpath with architecture-specific resource directory to the linker flags'),
      Option(
          name: '-fno-rtti-data',
          description: 'Disable generation of RTTI data'),
      Option(
          name: '-fno-rtti',
          description: 'Disable generation of rtti information'),
      Option(name: '-fno-rwpi', description: ''),
      Option(
          name: '-fno-sanitize-address-poison-custom-array-cookie',
          description:
              'Disable poisoning array cookies when using custom operator new[] in AddressSanitizer'),
      Option(
          name: '-fno-sanitize-address-use-after-scope',
          description: 'Disable use-after-scope detection in AddressSanitizer'),
      Option(
          name: '-fno-sanitize-address-use-odr-indicator',
          description: 'Disable ODR indicator globals'),
      Option(name: '-fno-sanitize-blacklist', description: 'Don\'t'),
      Option(
          name: '-fno-sanitize-cfi-canonical-jump-tables',
          description:
              'Do not make the jump table addresses canonical in the symbol table'),
      Option(
          name: '-fno-sanitize-cfi-cross-dso',
          description:
              'Disable control flow integrity (CFI) checks for cross-DSO calls'),
      Option(
          name: '-fno-sanitize-coverage',
          description:
              'Disable specified features of coverage instrumentation for Sanitizers',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fno-sanitize-memory-track-origins',
          description: 'Disable origins tracking in MemorySanitizer'),
      Option(
          name: '-fno-sanitize-memory-use-after-dtor',
          description:
              'Disable use-after-destroy detection in MemorySanitizer'),
      Option(
          name: '-fno-sanitize-recover',
          description: 'Disable recovery for specified sanitizers',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fno-sanitize-stats',
          description: 'Disable sanitizer statistics gathering'),
      Option(
          name: '-fno-sanitize-thread-atomics',
          description:
              'Disable atomic operations instrumentation in ThreadSanitizer'),
      Option(
          name: '-fno-sanitize-thread-func-entry-exit',
          description:
              'Disable function entry/exit instrumentation in ThreadSanitizer'),
      Option(
          name: '-fno-sanitize-thread-memory-access',
          description:
              'Disable memory access instrumentation in ThreadSanitizer'),
      Option(
          name: '-fno-sanitize-trap',
          description: 'Disable trapping for specified sanitizers',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fno-short-wchar',
          description: 'Force wchar_t to be an unsigned int'),
      Option(
          name: '-fno-show-column',
          description: 'Do not include column number on diagnostics'),
      Option(
          name: '-fno-show-source-location',
          description:
              'Do not include source location information with diagnostics'),
      Option(name: '-fno-signed-char', description: 'Char is unsigned'),
      Option(
          name: '-fno-signed-zeros',
          description:
              'Allow optimizations that ignore the sign of floating point zeros'),
      Option(
          name: '-fno-spell-checking', description: 'Disable spell-checking'),
      Option(name: '-fno-split-lto-unit', description: ''),
      Option(name: '-fno-stack-check', description: 'Disable stack checking'),
      Option(
          name: '-fno-stack-clash-protection',
          description: 'Disable stack clash protection'),
      Option(
          name: '-fno-stack-protector',
          description: 'Disable the use of stack protectors'),
      Option(name: '-fno-stack-size-section', description: ''),
      Option(
          name: '-fno-standalone-debug',
          description:
              'Limit debug information produced to reduce size of debug binary'),
      Option(
          name: '-fno-strict-float-cast-overflow',
          description:
              'Relax language rules and try to match the behavior of the target\'s native float-to-int conversion instructions'),
      Option(
          name: '-fno-strict-return',
          description:
              'Don\'t treat control flow paths that fall off the end of a non-void function as unreachable'),
      Option(
          name: '-fno-sycl',
          description: 'Disable SYCL kernels compilation for device'),
      Option(
          name: '-fno-temp-file',
          description:
              'Directly create compilation output files. This may lead to incorrect incremental builds if the compiler crashes'),
      Option(name: '-fno-threadsafe-statics', description: 'Do'),
      Option(
          name: '-fno-trigraphs',
          description: 'Do not process trigraph sequences'),
      Option(name: '-fno-unique-basic-block-section-names', description: ''),
      Option(name: '-fno-unique-internal-linkage-names', description: ''),
      Option(
          name: '-fno-unique-section-names',
          description: 'Don\'t use unique names for text and data sections'),
      Option(name: '-fno-unroll-loops', description: 'Turn off loop unroller'),
      Option(
          name: '-fno-use-cxa-atexit',
          description: 'Don\'t use __cxa_atexit for calling destructors'),
      Option(
          name: '-fno-use-init-array',
          description: 'Use .ctors/.dtors instead of .init_array/.fini_array'),
      Option(name: '-fno-use-line-directives', description: ''),
      Option(name: '-fno-virtual-function-elimination', description: ''),
      Option(
          name: '-fno-visibility-inlines-hidden-static-local-var',
          description:
              'Disables -fvisibility-inlines-hidden-static-local-var (this is the default on non-darwin targets)'),
      Option(name: '-fno-whole-program-vtables', description: ''),
      Option(name: '-fno-xray-always-emit-customevents', description: ''),
      Option(name: '-fno-xray-always-emit-typedevents', description: ''),
      Option(
          name: '-fno-xray-function-index',
          description:
              'Omit function index section at the expense of single-function patching performance'),
      Option(name: '-fno-xray-ignore-loops', description: ''),
      Option(name: '-fno-xray-instrument', description: ''),
      Option(
          name: '-fno-zero-initialized-in-bss',
          description: 'Don\'t place zero initialized data in BSS'),
      Option(name: '-fno-zvector', description: ''),
      Option(
          name: '-fobjc-arc-exceptions',
          description:
              'Use EH-safe code when synthesizing retains and releases in -fobjc-arc'),
      Option(
          name: '-fobjc-arc',
          description:
              'Synthesize retain and release calls for Objective-C pointers'),
      Option(
          name: '-fobjc-exceptions',
          description: 'Enable Objective-C exceptions'),
      Option(
          name: '-fobjc-relative-method-lists',
          description: 'Enable relative method lists'),
      Option(
          name: '-fobjc-runtime',
          description:
              'Specify the target Objective-C runtime kind and version',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fobjc-weak',
          description: 'Enable ARC-style weak references in Objective-C'),
      Option(
          name: '-fopenmp-simd',
          description: 'Emit OpenMP code only for SIMD-based constructs'),
      Option(
          name: '-fopenmp-targets',
          description:
              'Specify comma-separated list of triples OpenMP offloading targets to be supported',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fopenmp',
          description: 'Parse OpenMP pragmas and generate parallel code'),
      Option(
          name: '-foptimization-record-file',
          description:
              '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',
          args: [
            Arg(name: 'file', description: 'File', template: 'filepaths')
          ]),
      Option(
          name: '-foptimization-record-passes',
          description:
              'Only include passes which match a specified regular expression in the generated optimization record (by default, include all passes)',
          args: [Arg(name: 'regex', description: 'Rege')]),
      Option(
          name: '-forder-file-instrumentation',
          description:
              'Generate instrumented code to collect order file into default.profraw file (overridden by \'=\' form of option or LLVM_PROFILE_FILE env var)'),
      Option(
          name: '-fpack-struct',
          description: 'Specify the default maximum struct packing alignment',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fpascal-strings',
          description: 'Recognize and construct Pascal-style string literals'),
      Option(
          name: '-fpass-plugin',
          description:
              'Load pass plugin from a dynamic shared object file (only with new pass manager)',
          args: [Arg(name: 'dsopath', description: 'Dsopath')]),
      Option(
          name: '-fpatchable-function-entry',
          description:
              'Generate M NOPs before function entry and N-M NOPs after function entry',
          args: [Arg(name: 'N,M', description: 'N,')]),
      Option(
          name: '-fpcc-struct-return',
          description:
              'Override the default ABI to return all structs on the stack'),
      Option(
          name: '-fpch-codegen',
          description:
              'Generate code for uses of this PCH that assumes an explicit object file will be built for the PCH'),
      Option(
          name: '-fpch-debuginfo',
          description:
              'Generate debug info for types in an object file built from this PCH and do not generate them elsewhere'),
      Option(
          name: '-fpch-instantiate-templates',
          description: 'Instantiate templates already while building a PCH'),
      Option(
          name: '-fpch-validate-input-files-content',
          description:
              'Validate PCH input files based on content if mtime differs'),
      Option(name: '-fplt', description: ''),
      Option(
          name: '-fplugin',
          description: 'Load the named plugin (dynamic shared object)',
          args: [Arg(name: 'dsopath', description: 'Dsopath')]),
      Option(
          name: '-fprebuilt-module-path',
          description: 'Specify the prebuilt module path',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(name: '-fpreserve-as-comments', description: ''),
      Option(
          name: '-fprofile-exclude-files',
          description:
              'Instrument only functions from files where names don\'t match all the regexes separated by a semi-colon',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fprofile-filter-files',
          description:
              'Instrument only functions from files where names match any regex separated by a semi-colon',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fprofile-generate',
          description:
              'Generate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                isOptional: true,
                template: 'folders')
          ]),
      Option(
          name: '-fprofile-instr-generate',
          description:
              'Generate instrumented code to collect execution counts into <file> (overridden by LLVM_PROFILE_FILE env var)',
          args: [
            Arg(
                name: 'file',
                description: 'File',
                isOptional: true,
                template: 'filepaths')
          ]),
      Option(
          name: '-fprofile-instr-use',
          description:
              'Use instrumentation data for profile-guided optimization',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fprofile-remapping-file',
          description:
              'Use the remappings described in <file> to match the profile data against names in the program',
          args: [
            Arg(name: 'file', description: 'File', template: 'filepaths')
          ]),
      Option(
          name: '-fprofile-sample-accurate',
          description: 'Specifies that the sample profile is accurate'),
      Option(
          name: '-fprofile-sample-use',
          description: 'Enable sample-based profile guided optimizations',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fprofile-use',
          description:
              'Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from <pathname>/default.profdata. Otherwise, it reads from file <pathname>',
          args: [Arg(name: 'pathname', description: 'Pathname')]),
      Option(
          name: '-fptrauth-abi-version',
          description: 'Pointer Authentication ABI version',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fptrauth-auth-traps',
          description: 'Enable traps on authentication failures'),
      Option(
          name: '-fptrauth-block-descriptor-pointers',
          description: 'Enable signing block descriptors'),
      Option(
          name: '-fptrauth-calls',
          description:
              'Enable signing and authentication of all indirect calls'),
      Option(
          name: '-fptrauth-function-pointer-type-discrimination',
          description: 'Enabling type discrimination on C function pointers'),
      Option(
          name: '-fptrauth-indirect-gotos',
          description:
              'Enable signing and authentication of indirect goto targets'),
      Option(
          name: '-fptrauth-intrinsics',
          description: 'Enable pointer-authentication intrinsics'),
      Option(
          name: '-fptrauth-kernel-abi-version',
          description: 'Enable Pointer Authentication kernel ABI version'),
      Option(
          name: '-fptrauth-objc-isa-masking',
          description:
              'Pre- and post-authentication masking mode of objective-c isa pointers'),
      Option(
          name: '-fptrauth-objc-isa-mode',
          description:
              'Authentication mode for ObjC isa field. Full auth if unspecified',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fptrauth-objc-isa',
          description:
              'Enable signing and authentication of Objective-C object\'s \'isa\' field'),
      Option(
          name: '-fptrauth-returns',
          description: 'Enable signing and authentication of return addresses'),
      Option(
          name: '-fptrauth-soft',
          description: 'Enable software lowering of pointer authentication'),
      Option(
          name: '-fptrauth-vtable-pointer-address-discrimination',
          description: 'Enable address discrimination of vtable pointers'),
      Option(
          name: '-fptrauth-vtable-pointer-type-discrimination',
          description: 'Enable type discrimination of vtable pointers'),
      Option(
          name: '-freciprocal-math',
          description: 'Allow division operations to be reassociated'),
      Option(
          name: '-freg-struct-return',
          description:
              'Override the default ABI to return small structs in registers'),
      Option(
          name: '-fregister-global-dtors-with-atexit',
          description:
              'Use atexit or __cxa_atexit to register global destructors'),
      Option(
          name: '-frelaxed-template-template-args',
          description:
              'Enable C++17 relaxed template template argument matching'),
      Option(name: '-freroll-loops', description: 'Turn on loop reroller'),
      Option(name: '-frewrite-imports', description: ''),
      Option(name: '-frewrite-includes', description: ''),
      Option(
          name: '-fropi',
          description:
              'Generate read-only position independent code (ARM only)'),
      Option(
          name: '-frtlib-add-rpath',
          description:
              'Add -rpath with architecture-specific resource directory to the linker flags'),
      Option(name: '-frtti-data', description: ''),
      Option(name: '-frtti', description: ''),
      Option(
          name: '-frwpi',
          description:
              'Generate read-write position independent code (ARM only)'),
      Option(
          name: '-fsanitize-address-field-padding',
          description: 'Level of field padding for AddressSanitizer',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-address-globals-dead-stripping',
          description:
              'Enable linker dead stripping of globals in AddressSanitizer'),
      Option(
          name: '-fsanitize-address-poison-custom-array-cookie',
          description:
              'Enable poisoning array cookies when using custom operator new[] in AddressSanitizer'),
      Option(
          name: '-fsanitize-address-use-after-scope',
          description: 'Enable use-after-scope detection in AddressSanitizer'),
      Option(
          name: '-fsanitize-address-use-odr-indicator',
          description:
              'Enable ODR indicator globals to avoid false ODR violation reports in partially sanitized programs at the cost of an increase in binary size'),
      Option(
          name: '-fsanitize-blacklist',
          description: 'Path to blacklist file for sanitizers',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-cfi-canonical-jump-tables',
          description:
              'Make the jump table addresses canonical in the symbol table'),
      Option(
          name: '-fsanitize-cfi-cross-dso',
          description:
              'Enable control flow integrity (CFI) checks for cross-DSO calls'),
      Option(
          name: '-fsanitize-cfi-icall-generalize-pointers',
          description:
              'Generalize pointers in CFI indirect call type signature checks'),
      Option(
          name: '-fsanitize-coverage-allowlist',
          description:
              'Restrict sanitizer coverage instrumentation exclusively to modules and functions that match the provided special case list, except the blocked ones',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-coverage-blacklist',
          description: 'Deprecated, use -fsanitize-coverage-blocklist= instead',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-coverage-blocklist',
          description:
              'Disable sanitizer coverage instrumentation for modules and functions that match the provided special case list, even the allowed ones',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-coverage-whitelist',
          description: 'Deprecated, use -fsanitize-coverage-allowlist= instead',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-coverage',
          description:
              'Specify the type of coverage instrumentation for Sanitizers',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-hwaddress-abi',
          description:
              'Select the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor). This option is currently unused',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-memory-track-origins',
          description: 'Enable origins tracking in MemorySanitizer',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-memory-use-after-dtor',
          description: 'Enable use-after-destroy detection in MemorySanitizer'),
      Option(
          name: '-fsanitize-recover',
          description: 'Enable recovery for specified sanitizers',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-stats',
          description: 'Enable sanitizer statistics gathering'),
      Option(
          name: '-fsanitize-system-blacklist',
          description: 'Path to system blacklist file for sanitizers',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-thread-atomics',
          description:
              'Enable atomic operations instrumentation in ThreadSanitizer (default)'),
      Option(
          name: '-fsanitize-thread-func-entry-exit',
          description:
              'Enable function entry/exit instrumentation in ThreadSanitizer (default)'),
      Option(
          name: '-fsanitize-thread-memory-access',
          description:
              'Enable memory access instrumentation in ThreadSanitizer (default)'),
      Option(
          name: '-fsanitize-trap',
          description: 'Enable trapping for sanitizers',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fsanitize-undefined-strip-path-components',
          description:
              'Strip (or keep only, if negative) a given number of path components when emitting check metadata',
          args: [Arg(name: 'number', description: 'Number')]),
      Option(
          name: '-fsanitize',
          description:
              'Turn on runtime checks for various forms of undefined or suspicious behavior. See user manual for available checks',
          args: [Arg(name: 'check', description: 'Chec')]),
      Option(
          name: '-fsave-optimization-record',
          description:
              'Generate an optimization record file in a specific format',
          args: [Arg(name: 'format', description: 'Format')]),
      Option(name: '-fseh-exceptions', description: 'Use SEH style exceptions'),
      Option(
          name: '-fshort-enums',
          description:
              'Allocate to an enum type only as many bytes as it needs for the declared range of possible values'),
      Option(
          name: '-fshort-wchar',
          description: 'Force wchar_t to be a short unsigned int'),
      Option(name: '-fshow-column', description: ''),
      Option(
          name: '-fshow-overloads',
          description:
              'Which overload candidates to show when overload resolution fails: best|all; defaults to all',
          args: [
            Arg(name: 'value', description: 'Value', suggestions: [
              FigSuggestion(name: 'best'),
              FigSuggestion(name: 'all')
            ])
          ]),
      Option(name: '-fsigned-char', description: 'Char is signed'),
      Option(
          name: '-fsized-deallocation',
          description: 'Enable C++14 sized global deallocation functions'),
      Option(
          name: '-fsjlj-exceptions', description: 'Use SjLj style exceptions'),
      Option(
          name: '-fslp-vectorize',
          description:
              'Enable the superword-level parallelism vectorization passes'),
      Option(
          name: '-fsmall-block-descriptors',
          description: 'Enable small block descriptors'),
      Option(
          name: '-fsplit-dwarf-inlining',
          description:
              'Provide minimal debug info in the object/executable to facilitate online symbolication/stack traces in the absence of .dwo/.dwp files when using Split DWARF'),
      Option(
          name: '-fsplit-lto-unit',
          description: 'Enables splitting of the LTO unit'),
      Option(name: '-fstack-check', description: 'Enable stack checking'),
      Option(
          name: '-fstack-clash-protection',
          description: 'Enable stack clash protection'),
      Option(
          name: '-fstack-protector-all',
          description: 'Enable stack protectors for all functions'),
      Option(
          name: '-fstack-protector-strong',
          description:
              'Enable stack protectors for some functions vulnerable to stack smashing. Compared to -fstack-protector, this uses a stronger heuristic that includes functions containing arrays of any size (and any type), as well as any calls to alloca or the taking of an address from a local variable'),
      Option(
          name: '-fstack-protector',
          description:
              'Enable stack protectors for some functions vulnerable to stack smashing. This uses a loose heuristic which considers functions vulnerable if they contain a char (or 8bit integer) array or constant sized calls to alloca, which are of greater size than ssp-buffer-size (default: 8 bytes). All variable sized calls to alloca are considered vulnerable'),
      Option(
          name: '-fstack-size-section',
          description:
              'Emit section containing metadata on function stack sizes'),
      Option(
          name: '-fstandalone-debug',
          description:
              'Emit full debug info for all types used by the program'),
      Option(
          name: '-fstrict-enums',
          description:
              'Enable optimizations based on the strict definition of an enum\'s value range'),
      Option(
          name: '-fstrict-float-cast-overflow',
          description:
              'Assume that overflowing float-to-int casts are undefined (default)'),
      Option(name: '-fstrict-return', description: ''),
      Option(
          name: '-fstrict-vtable-pointers',
          description:
              'Enable optimizations based on the strict rules for overwriting polymorphic C++ objects'),
      Option(
          name: '-fsycl',
          description: 'Enable SYCL kernels compilation for device'),
      Option(
          name: '-fsystem-module',
          description:
              'Build this module as a system module. Only used with -emit-module'),
      Option(
          name: '-ftarget-variant-availability-checks',
          description:
              'Enable availability checks for the target variant platform'),
      Option(
          name: '-fthin-link-bitcode',
          description:
              'Write minimized bitcode to <file> for the ThinLTO thin link only',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fthinlto-index',
          description:
              'Perform ThinLTO importing using provided function summary index',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-ftime-trace-granularity',
          description:
              'Minimum time granularity (in microseconds) traced by time profiler',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-ftime-trace',
          description:
              'Turn on time profiler. Generates JSON file based on output filename'),
      Option(
          name: '-ftrap-function',
          description:
              'Issue call to specified function rather than a trap instruction',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-ftrapv-handler',
          description: 'Specify the function to be called on overflow',
          args: [Arg(name: 'function name', description: 'Function nam')]),
      Option(name: '-ftrapv', description: 'Trap on integer overflow'),
      Option(name: '-ftrigraphs', description: 'Process trigraph sequences'),
      Option(
          name: '-ftrivial-auto-var-init-stop-after',
          description:
              'Stop initializing trivial automatic stack variables after the specified number of instances',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-ftrivial-auto-var-init',
          description: 'Initialize trivial automatic stack variables',
          args: [
            Arg(
                name: 'value',
                description: 'Value',
                defaultValue: 'uninitialized',
                suggestions: [
                  FigSuggestion(name: 'uninitialized'),
                  FigSuggestion(name: 'pattern')
                ])
          ]),
      Option(
          name: '-funique-basic-block-section-names',
          description: 'Use unique names for basic block sections (ELF Only)'),
      Option(
          name: '-funique-internal-linkage-names',
          description:
              'Uniqueify Internal Linkage Symbol Names by appending the MD5 hash of the module path'),
      Option(name: '-funique-section-names', description: ''),
      Option(name: '-funroll-loops', description: 'Turn on loop unroller'),
      Option(name: '-fuse-init-array', description: ''),
      Option(
          name: '-fuse-line-directives',
          description: 'Use #line in preprocessed output'),
      Option(
          name: '-fvalidate-ast-input-files-content',
          description:
              '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'),
      Option(
          name: '-fveclib',
          description: 'Use the given vector functions library',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fvectorize',
          description: 'Enable the loop vectorization passes'),
      Option(
          name: '-fverbose-asm',
          description: 'Generate verbose assembly output'),
      Option(
          name: '-fvirtual-function-elimination',
          description:
              'Enables dead virtual function elimination optimization. Requires -flto=full'),
      Option(
          name: '-fvisibility-global-new-delete-hidden',
          description:
              'Give global C++ operator new and delete declarations hidden visibility'),
      Option(
          name: '-fvisibility-inlines-hidden-static-local-var',
          description:
              'When -fvisibility-inlines-hidden is enabled, static variables in inline C++ member functions will also be given hidden visibility by default'),
      Option(
          name: '-fvisibility-inlines-hidden',
          description:
              'Give inline C++ member functions hidden visibility by default'),
      Option(
          name: '-fvisibility-ms-compat',
          description:
              'Give global types \'default\' visibility and global functions and variables \'hidden\' visibility by default'),
      Option(
          name: '-fvisibility',
          description:
              'Set the default symbol visibility for all global declarations',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fwasm-exceptions',
          description: 'Use WebAssembly style exceptions'),
      Option(name: '-fwhole-program-vtables', description: 'Enables'),
      Option(
          name: '-fwrapv',
          description: 'Treat signed integer overflow as two\'s complement'),
      Option(
          name: '-fwritable-strings',
          description: 'Store string literals as writable data'),
      Option(
          name: '-fxray-always-emit-customevents',
          description:
              'Always emit __xray_customevent(...) calls even if the containing function is not always instrumented'),
      Option(
          name: '-fxray-always-emit-typedevents',
          description:
              'Always emit __xray_typedevent(...) calls even if the containing function is not always instrumented'),
      Option(
          name: '-fxray-always-instrument',
          description:
              'DEPRECATED: Filename defining the whitelist for imbuing the \'always instrument\' XRay attribute',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fxray-attr-list',
          description:
              'Filename defining the list of functions/types for imbuing XRay attributes',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(name: '-fxray-function-index', description: ''),
      Option(
          name: '-fxray-ignore-loops',
          description:
              'Don\'t instrument functions with loops unless they also meet the minimum function size'),
      Option(
          name: '-fxray-instruction-threshold',
          description: 'Sets the minimum function size to instrument with XRay',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fxray-instrumentation-bundle',
          description:
              'Select which XRay instrumentation points to emit. \'function\' includes both \'function-entry\' and \'function-exit\'',
          args: [
            Arg(
                name: 'fxray-instrumentation-bundle',
                suggestions: [
                  FigSuggestion(name: 'all'),
                  FigSuggestion(name: 'none'),
                  FigSuggestion(name: 'function-entry'),
                  FigSuggestion(name: 'function-exit'),
                  FigSuggestion(name: 'function'),
                  FigSuggestion(name: 'custom')
                ],
                defaultValue: 'all')
          ]),
      Option(
          name: '-fxray-instrument',
          description:
              'Generate XRay instrumentation sleds on function entry and exit'),
      Option(
          name: '-fxray-link-deps',
          description: 'Tells clang to add the link dependencies for XRay'),
      Option(
          name: '-fxray-modes',
          description:
              'List of modes to link in by default into XRay instrumented binaries',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-fxray-never-instrument',
          description:
              'DEPRECATED: Filename defining the whitelist for imbuing the \'never instrument\' XRay attribute',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(name: '-fzero-initialized-in-bss', description: ''),
      Option(
          name: '-fzvector',
          description: 'Enable System z vector language extension'),
      Option(
          name: '-F',
          description: 'Add directory to framework include search path',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '--gcc-toolchain',
          description: 'Use the gcc toolchain at the given directory',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-gcodeview-ghash',
          description: 'Emit type record hashes in a .debug\$H section'),
      Option(
          name: '-gcodeview',
          description: 'Generate CodeView debug information'),
      Option(
          name: '-gdwarf-2',
          description:
              'Generate source-level debug information with dwarf version 2'),
      Option(
          name: '-gdwarf-3',
          description:
              'Generate source-level debug information with dwarf version 3'),
      Option(
          name: '-gdwarf-4',
          description:
              'Generate source-level debug information with dwarf version 4'),
      Option(
          name: '-gdwarf-5',
          description:
              'Generate source-level debug information with dwarf version 5'),
      Option(
          name: '-gdwarf',
          description:
              'Generate source-level debug information with the default dwarf version'),
      Option(
          name: '-gembed-source',
          description: 'Embed source text in DWARF debug sections'),
      Option(
          name: '-gline-directives-only',
          description: 'Emit debug line info directives only'),
      Option(
          name: '-gline-tables-only',
          description: 'Emit debug line number tables only'),
      Option(
          name: '-gmodules',
          description:
              'Generate debug info with external references to clang modules or precompiled headers'),
      Option(
          name: '-gno-embed-source',
          description:
              'Restore the default behavior of not embedding source text in DWARF debug sections'),
      Option(name: '-gno-inline-line-tables', description: 'Don\'t'),
      Option(
          name: '--gpu-max-threads-per-block',
          description:
              'Default max threads per block for kernel launch bounds for HIP',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-gsplit-dwarf',
          description:
              'Set DWARF fission mode to either \'split\' or \'single\'',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-gz',
          description: 'DWARF debug sections compression type',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-G',
          description:
              'Put objects of at most <size> bytes into small data section (MIPS / Hexagon)',
          args: [Arg(name: 'size', description: 'Siz')]),
      Option(
          name: '-g', description: 'Generate source-level debug information'),
      Option(
          name: '--help-hidden',
          description: 'Display help for hidden options'),
      Option(name: '-help', description: 'Display available options'),
      Option(
          name: '--hip-device-lib',
          description: 'HIP device library',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '--hip-link',
          description: 'Link clang-offload-bundler bundles for HIP'),
      Option(
          name: '--hip-version',
          description: 'HIP version in the format of major.minor.patch',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(name: '-H', description: 'Show header includes and nesting depth'),
      Option(
          name: '-I-',
          description:
              'Restrict all prior -I flags to double-quoted inclusion and remove current directory from include path'),
      Option(
          name: '-iapinotes-modules',
          description:
              'Add directory to the API notes search path referenced by module name',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-ibuiltininc',
          description:
              'Enable builtin #include directories even when -nostdinc is used before or after -ibuiltininc. Using -nobuiltininc after the option disables it'),
      Option(
          name: '-idirafter',
          description: 'Add directory to AFTER include search path',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-iframeworkwithsysroot',
          description:
              'Add directory to SYSTEM framework search path, absolute paths are relative to -isysroot',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-iframework',
          description: 'Add directory to SYSTEM framework search path',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-imacros',
          description: 'Include macros from file before parsing',
          args: [
            Arg(name: 'file', description: 'File', template: 'filepaths')
          ]),
      Option(
          name: '-include-pch',
          description: 'Include precompiled header file',
          args: [
            Arg(name: 'file', description: 'File', template: 'filepaths')
          ]),
      Option(
          name: '-include',
          description: 'Include file before parsing',
          args: [
            Arg(name: 'file', description: 'File', template: 'filepaths')
          ]),
      Option(
          name: '-index-header-map',
          description:
              'Make the next included directory (-I or -F) an indexer header map'),
      Option(
          name: '-index-ignore-system-symbols',
          description: 'Ignore symbols from system headers'),
      Option(
          name: '-index-record-codegen-name',
          description: 'Record the codegen name for symbols'),
      Option(
          name: '-index-store-path',
          description: 'Enable indexing with the specified data store path',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-iprefix',
          description: 'Set the -iwithprefix/-iwithprefixbefore prefix',
          args: [Arg(name: 'dir', description: 'Dir', template: 'folders')]),
      Option(
          name: '-iquote',
          description: 'Add directory to QUOTE include search path',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-isysroot',
          description: 'Set the system root directory (usually /)',
          args: [Arg(name: 'dir', description: 'Dir', template: 'folders')]),
      Option(
          name: '-isystem-after',
          description: 'Add directory to end of the SYSTEM include search path',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-isystem',
          description: 'Add directory to SYSTEM include search path',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-ivfsoverlay',
          description:
              'Overlay the virtual filesystem described by file over the real file system',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-iwithprefixbefore',
          description: 'Set directory to include search path with prefix',
          args: [Arg(name: 'dir', description: 'Dir', template: 'folders')]),
      Option(
          name: '-iwithprefix',
          description:
              'Set directory to SYSTEM include search path with prefix',
          args: [Arg(name: 'dir', description: 'Dir', template: 'folders')]),
      Option(
          name: '-iwithsysroot',
          description:
              'Add directory to SYSTEM include search path, absolute paths are relative to -isysroot',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-I',
          description: 'Add directory to include search path',
          args: [Arg(name: 'dir', description: 'Dir', template: 'folders')]),
      Option(
          name: '--libomptarget-nvptx-path',
          description: 'Path to libomptarget-nvptx libraries',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-L',
          description: 'Add directory to library search path',
          args: [Arg(name: 'dir', description: 'Dir', template: 'folders')]),
      Option(
          name: '-mabicalls',
          description:
              'Enable SVR4-style position-independent code (Mips only)'),
      Option(
          name: '-maix-struct-return',
          description: 'Return all structs in memory (PPC32 only)'),
      Option(
          name: '-malign-branch-boundary',
          description: 'Specify the boundary\'s size to align branches',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-malign-branch',
          description: 'Specify types of branches to align',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-malign-double',
          description: 'Align doubles to two words in structs (x86 only)'),
      Option(
          name: '-mbackchain',
          description: 'Link stack frames through backchain on System Z'),
      Option(
          name: '-mbranch-protection',
          description:
              'Enforce targets of indirect branches and function returns',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mbranches-within-32B-boundaries',
          description:
              'Align selected branches (fused, jcc, jmp) within 32-byte boundary'),
      Option(
          name: '-mcmodel',
          description:
              'Equivalent to -mcmodel=medium, compatible with RISC-V gcc',
          args: [Arg(name: 'edan', description: 'Edan')]),
      Option(
          name: '-mcmse',
          description: 'Allow use of CMSE (Armv8-M Security Extensions)'),
      Option(
          name: '-mcode-object-v3',
          description: 'Enable code object v3 (AMDGPU only)'),
      Option(
          name: '-mcrc',
          description: 'Allow use of CRC instructions (ARM/Mips only)'),
      Option(
          name: '-mcumode',
          description: 'CU wavefront execution mode is used (AMDGPU only)'),
      Option(
          name: '-mdouble',
          description: 'Force double to be 32 bits or 64 bits',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-MD',
          description: 'Write a depfile containing user and system headers'),
      Option(
          name: '-meabi',
          description:
              'Set EABI type, e.g. 4, 5 or gnu (default depends on triple)',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-membedded-data',
          description:
              'Place constants in the .rodata section instead of the .sdata section even if they meet the -G <size> threshold (MIPS)'),
      Option(
          name: '-menable-experimental-extensions',
          description: 'Enable use of experimental RISC-V extensions'),
      Option(
          name: '-mexec-model',
          description: 'Execution model (WebAssembly only)',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mexecute-only',
          description:
              'Disallow generation of data access to code sections (ARM only)'),
      Option(
          name: '-mextern-sdata',
          description:
              'Assume that externally defined data is in the small data if it meets the -G <size> threshold (MIPS)'),
      Option(
          name: '-mfentry',
          description:
              'Insert calls to fentry at function entry (x86/SystemZ only)'),
      Option(name: '-mfix-cortex-a53-835769', description: 'Workaround'),
      Option(
          name: '-mfp32',
          description: 'Use 32-bit floating point registers (MIPS only)'),
      Option(
          name: '-mfp64',
          description: 'Use 64-bit floating point registers (MIPS only)'),
      Option(
          name: '-MF',
          description:
              'Write depfile output from -MMD, -MD, -MM, or -M to <file>',
          args: [
            Arg(name: 'file', description: 'File', template: 'filepaths')
          ]),
      Option(
          name: '-mgeneral-regs-only',
          description:
              'Generate code which only uses the general purpose registers (AArch64 only)'),
      Option(name: '-mglobal-merge', description: 'Enable merging of globals'),
      Option(
          name: '-mgpopt',
          description:
              'Use GP relative accesses for symbols known to be in a small data section (MIPS)'),
      Option(name: '-MG', description: 'Add missing headers to depfile'),
      Option(
          name: '-mharden-sls',
          description: 'Select straight-line speculation hardening scope',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mhvx-length',
          description: 'Set Hexagon Vector Length',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mhvx',
          description: 'Enable Hexagon Vector eXtensions',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(name: '-miamcu', description: 'Use Intel MCU ABI'),
      Option(name: '--migrate', description: 'Run the migrator'),
      Option(
          name: '-mincremental-linker-compatible',
          description:
              '(integrated-as) Emit an object file which can be used with an incremental linker'),
      Option(
          name: '-mindirect-jump',
          description:
              'Change indirect jump instructions to inhibit speculation',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mios-version-min',
          description: 'Set iOS deployment target',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-MJ',
          description: 'Write a compilation database entry per input',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mllvm',
          description:
              'Additional arguments to forward to LLVM\'s option processing',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mlocal-sdata',
          description: 'Extend the -G behaviour to object local data (MIPS)'),
      Option(
          name: '-mlong-calls',
          description:
              'Generate branches with extended addressability, usually via indirect jumps'),
      Option(
          name: '-mlong-double-128',
          description: 'Force long double to be 128 bits'),
      Option(
          name: '-mlong-double-64',
          description: 'Force long double to be 64 bits'),
      Option(
          name: '-mlong-double-80',
          description:
              'Force long double to be 80 bits, padded to 128 bits for storage'),
      Option(
          name: '-mlvi-cfi',
          description:
              'Enable only control-flow mitigations for Load Value Injection (LVI)'),
      Option(
          name: '-mlvi-hardening',
          description: 'Enable all mitigations for Load Value Injection (LVI)'),
      Option(
          name: '-mmacosx-version-min',
          description: 'Set Mac OS X deployment target',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mmadd4',
          description:
              'Enable the generation of 4-operand madd.s, madd.d and related instructions'),
      Option(
          name: '-MMD', description: 'Write a depfile containing user headers'),
      Option(
          name: '-mmemops',
          description: 'Enable generation of memop instructions'),
      Option(
          name: '-mms-bitfields',
          description:
              'Set the default structure layout to be compatible with the Microsoft compiler standard'),
      Option(name: '-mmsa', description: 'Enable MSA ASE (MIPS only)'),
      Option(name: '-mmt', description: 'Enable MT ASE (MIPS only)'),
      Option(
          name: '-MM',
          description:
              'Like -MMD, but also implies -E and writes to stdout by default'),
      Option(
          name: '-mno-abicalls',
          description:
              'Disable SVR4-style position-independent code (Mips only)'),
      Option(
          name: '-mno-code-object-v3',
          description: 'Disable code object v3 (AMDGPU only)'),
      Option(
          name: '-mno-crc',
          description: 'Disallow use of CRC instructions (Mips only)'),
      Option(
          name: '-mno-cumode',
          description: 'WGP wavefront execution mode is used (AMDGPU only)'),
      Option(
          name: '-mno-embedded-data',
          description:
              'Do not place constants in the .rodata section instead of the .sdata if they meet the -G <size> threshold (MIPS)'),
      Option(
          name: '-mno-execute-only',
          description:
              'Allow generation of data access to code sections (ARM only)'),
      Option(
          name: '-mno-extern-sdata',
          description:
              'Do not assume that externally defined data is in the small data if it meets the -G <size> threshold (MIPS)'),
      Option(
          name: '-mno-fix-cortex-a53-835769',
          description:
              'Don\'t workaround Cortex-A53 erratum 835769 (AArch64 only)'),
      Option(
          name: '-mno-global-merge', description: 'Disable merging of globals'),
      Option(
          name: '-mno-gpopt',
          description:
              'Do not use GP relative accesses for symbols known to be in a small data section (MIPS)'),
      Option(
          name: '-mno-hvx', description: 'Disable Hexagon Vector eXtensions'),
      Option(
          name: '-mno-implicit-float',
          description: 'Don\'t generate implicit floating point instructions'),
      Option(
          name: '-mno-incremental-linker-compatible',
          description:
              '(integrated-as) Emit an object file which cannot be used with an incremental linker'),
      Option(
          name: '-mno-local-sdata',
          description:
              'Do not extend the -G behaviour to object local data (MIPS)'),
      Option(
          name: '-mno-long-calls',
          description:
              'Restore the default behaviour of not generating long calls'),
      Option(
          name: '-mno-lvi-cfi',
          description:
              'Disable control-flow mitigations for Load Value Injection (LVI)'),
      Option(
          name: '-mno-lvi-hardening',
          description: 'Disable mitigations for Load Value Injection (LVI)'),
      Option(
          name: '-mno-madd4',
          description:
              'Disable the generation of 4-operand madd.s, madd.d and related instructions'),
      Option(
          name: '-mno-memops',
          description: 'Disable generation of memop instructions'),
      Option(
          name: '-mno-movt',
          description: 'Disallow use of movt/movw pairs (ARM only)'),
      Option(
          name: '-mno-ms-bitfields',
          description:
              'Do not set the default structure layout to be compatible with the Microsoft compiler standard'),
      Option(name: '-mno-msa', description: 'Disable MSA ASE (MIPS only)'),
      Option(name: '-mno-mt', description: 'Disable MT ASE (MIPS only)'),
      Option(
          name: '-mno-neg-immediates',
          description:
              'Disallow converting instructions with negative immediates to their negation or inversion'),
      Option(
          name: '-mno-nvj',
          description: 'Disable generation of new-value jumps'),
      Option(
          name: '-mno-nvs',
          description: 'Disable generation of new-value stores'),
      Option(
          name: '-mno-outline',
          description: 'Disable function outlining (AArch64 only)'),
      Option(
          name: '-mno-packets',
          description: 'Disable generation of instruction packets'),
      Option(name: '-mno-relax', description: 'Disable linker relaxation'),
      Option(
          name: '-mno-restrict-it',
          description:
              'Allow generation of deprecated IT blocks for ARMv8. It is off by default for ARMv8 Thumb mode'),
      Option(
          name: '-mno-save-restore',
          description: 'Disable using library calls for save and restore'),
      Option(
          name: '-mno-seses',
          description:
              'Disable speculative execution side effect suppression (SESES)'),
      Option(
          name: '-mno-sram-ecc', description: 'Disable SRAM ECC (AMDGPU only)'),
      Option(
          name: '-mno-stack-arg-probe',
          description: 'Disable stack probes which are enabled by default'),
      Option(
          name: '-mno-tls-direct-seg-refs',
          description: 'Disable direct TLS access through segment registers'),
      Option(
          name: '-mno-unaligned-access',
          description:
              'Force all memory accesses to be aligned (AArch32/AArch64 only)'),
      Option(
          name: '-mno-wavefrontsize64',
          description: 'Wavefront size 32 is used'),
      Option(name: '-mno-xnack', description: 'Disable XNACK (AMDGPU only)'),
      Option(
          name: '-mnocrc',
          description: 'Disallow use of CRC instructions (ARM only)'),
      Option(
          name: '-mnop-mcount',
          description:
              'Generate mcount/__fentry__ calls as nops. To activate they need to be patched in'),
      Option(
          name: '-mnvj', description: 'Enable generation of new-value jumps'),
      Option(
          name: '-mnvs', description: 'Enable generation of new-value stores'),
      Option(
          name: '-module-dependency-dir',
          description: 'Directory to dump module dependencies to',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-module-file-info',
          description: 'Provide information about a particular module file'),
      Option(
          name: '-momit-leaf-frame-pointer',
          description: 'Omit frame pointer setup for leaf functions'),
      Option(
          name: '-moutline',
          description: 'Enable function outlining (AArch64 only)'),
      Option(
          name: '-mpacked-stack',
          description: 'Use packed stack layout (SystemZ only)'),
      Option(
          name: '-mpackets',
          description: 'Enable generation of instruction packets'),
      Option(
          name: '-mpad-max-prefix-size',
          description: 'Specify maximum number of prefixes to use for padding',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mpie-copy-relocations',
          description: 'Use copy relocations support for PIE builds'),
      Option(
          name: '-mprefer-vector-width',
          description:
              'Specifies preferred vector width for auto-vectorization. Defaults to \'none\' which allows target specific decisions',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-MP',
          description:
              'Create phony target for each dependency (other than main file)'),
      Option(
          name: '-mqdsp6-compat',
          description: 'Enable hexagon-qdsp6 backward compatibility'),
      Option(
          name: '-MQ',
          description: 'Specify name of main file output to quote in depfile',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mrecord-mcount',
          description:
              'Generate a __mcount_loc section entry for each __fentry__ call'),
      Option(
          name: '-mrelax-all',
          description: '(integrated-as) Relax all machine instructions'),
      Option(name: '-mrelax', description: 'Enable linker relaxation'),
      Option(
          name: '-mrestrict-it',
          description:
              'Disallow generation of deprecated IT blocks for ARMv8. It is on by default for ARMv8 Thumb mode'),
      Option(
          name: '-mrtd',
          description: 'Make StdCall calling convention the default'),
      Option(
          name: '-msave-restore',
          description: 'Enable using library calls for save and restore'),
      Option(
          name: '-mseses',
          description:
              'Enable speculative execution side effect suppression (SESES). Includes LVI control flow integrity mitigations'),
      Option(
          name: '-msign-return-address',
          description: 'Select return address signing scope',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-msmall-data-limit',
          description:
              'Put global and static data smaller than the limit into a special section',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(name: '-msoft-float', description: 'Use software floating point'),
      Option(name: '-msram-ecc', description: 'Enable SRAM ECC (AMDGPU only)'),
      Option(
          name: '-mstack-alignment',
          description: 'Set the stack alignment',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(name: '-mstack-arg-probe', description: 'Enable stack probes'),
      Option(
          name: '-mstack-probe-size',
          description: 'Set the stack probe size',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mstackrealign',
          description: 'Force realign the stack at entry to every function'),
      Option(
          name: '-msvr4-struct-return',
          description: 'Return small structs in registers (PPC32 only)'),
      Option(
          name: '-mthread-model',
          description:
              'The thread model to use, e.g. posix, single (posix by default)',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mtls-direct-seg-refs',
          description:
              'Enable direct TLS access through segment registers (default)'),
      Option(
          name: '-mtls-size',
          description:
              '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)',
          args: [
            Arg(name: 'value', description: 'Value', suggestions: [
              FigSuggestion(name: '12'),
              FigSuggestion(name: '24'),
              FigSuggestion(name: '32'),
              FigSuggestion(name: '48')
            ])
          ]),
      Option(
          name: '-mtp',
          description: 'Thread pointer access method (AArch32/AArch64 only)',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-mtune',
          description:
              'Accepted for compatibility with GCC. Currently has no effect',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-MT',
          description: 'Specify name of main file output in depfile',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-munaligned-access',
          description:
              'Allow memory accesses to be unaligned (AArch32/AArch64 only)'),
      Option(name: '-MV', description: 'Use NMake/Jom format for the depfile'),
      Option(
          name: '-mwavefrontsize64', description: 'Wavefront size 64 is used'),
      Option(name: '-mxnack', description: 'Enable XNACK (AMDGPU only)'),
      Option(
          name: '-M',
          description:
              'Like -MD, but also implies -E and writes to stdout by default'),
      Option(
          name: '--no-cuda-include-ptx',
          description:
              'Do not include PTX for the following GPU architecture (e.g. sm_35) or \'all\'. May be specified more than once',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(name: '--no-cuda-version-check', description: 'Don\'t'),
      Option(
          name: '--no-offload-arch',
          description:
              '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',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '--no-system-header-prefix',
          description:
              'Treat all #include paths starting with <prefix> as not including a system header',
          args: [Arg(name: 'prefix', description: 'Prefix')]),
      Option(
          name: '-nobuiltininc',
          description: 'Disable builtin #include directories'),
      Option(
          name: '-nogpulib',
          description:
              'Do not link device library for CUDA/HIP device compilation'),
      Option(
          name: '-nostdinc++',
          description:
              'Disable standard #include directories for the C++ standard library'),
      Option(
          name: '-ObjC++',
          description: 'Treat source input files as Objective-C++ inputs'),
      Option(name: '-objcmt-atomic-property', description: 'Make'),
      Option(
          name: '-objcmt-migrate-all',
          description: 'Enable migration to modern ObjC'),
      Option(
          name: '-objcmt-migrate-annotation',
          description: 'Enable migration to property and method annotations'),
      Option(
          name: '-objcmt-migrate-designated-init',
          description:
              'Enable migration to infer NS_DESIGNATED_INITIALIZER for initializer methods'),
      Option(
          name: '-objcmt-migrate-instancetype',
          description:
              'Enable migration to infer instancetype for method result type'),
      Option(
          name: '-objcmt-migrate-literals',
          description: 'Enable migration to modern ObjC literals'),
      Option(
          name: '-objcmt-migrate-ns-macros',
          description: 'Enable migration to NS_ENUM/NS_OPTIONS macros'),
      Option(
          name: '-objcmt-migrate-property-dot-syntax',
          description:
              'Enable migration of setter/getter messages to property-dot syntax'),
      Option(
          name: '-objcmt-migrate-property',
          description: 'Enable migration to modern ObjC property'),
      Option(
          name: '-objcmt-migrate-protocol-conformance',
          description:
              'Enable migration to add protocol conformance on classes'),
      Option(
          name: '-objcmt-migrate-readonly-property',
          description: 'Enable migration to modern ObjC readonly property'),
      Option(
          name: '-objcmt-migrate-readwrite-property',
          description: 'Enable migration to modern ObjC readwrite property'),
      Option(
          name: '-objcmt-migrate-subscripting',
          description: 'Enable migration to modern ObjC subscripting'),
      Option(
          name: '-objcmt-ns-nonatomic-iosonly',
          description:
              'Enable migration to use NS_NONATOMIC_IOSONLY macro for setting property\'s \'atomic\' attribute'),
      Option(
          name: '-objcmt-returns-innerpointer-property',
          description:
              'Enable migration to annotate property with NS_RETURNS_INNER_POINTER'),
      Option(
          name: '-objcmt-whitelist-dir-path',
          description:
              'Only modify files with a filename contained in the provided directory path',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-ObjC',
          description: 'Treat source input files as Objective-C inputs'),
      Option(name: '-o', description: 'Write output to <file>', args: [
        Arg(name: 'file', description: 'File', template: 'filepaths')
      ]),
      Option(name: '-pg', description: 'Enable mcount instrumentation'),
      Option(
          name: '-pipe',
          description: 'Use pipes between commands, when possible'),
      Option(name: '--precompile', description: 'Only precompile the input'),
      Option(name: '-print-effective-triple', description: 'Print'),
      Option(
          name: '-print-file-name',
          description: 'Print the full library path',
          args: [
            Arg(name: 'file', description: 'File', template: 'filepaths')
          ]),
      Option(
          name: '-print-ivar-layout',
          description: 'Enable Objective-C Ivar layout bitmap print trace'),
      Option(name: '-print-libgcc-file-name', description: 'Print'),
      Option(
          name: '-print-prog-name',
          description: 'Print the full program path of <name>',
          args: [Arg(name: 'name', description: 'Name')]),
      Option(
          name: '-print-resource-dir',
          description: 'Print the resource directory pathname'),
      Option(
          name: '-print-search-dirs',
          description:
              'Print the paths used for finding libraries and programs'),
      Option(
          name: '-print-supported-cpus',
          description:
              'Print supported cpu models for the given target (if target is not specified, it will print the supported cpus for the default target)'),
      Option(
          name: '-print-target-triple',
          description: 'Print the normalized target triple'),
      Option(
          name: '-print-targets', description: 'Print the registered targets'),
      Option(
          name: '-pthread',
          description: 'Support POSIX threads in generated code'),
      Option(
          name: '--ptxas-path',
          description: 'Path to ptxas (used for compiling CUDA code)',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(name: '-P', description: 'Disable linemarker output in -E mode'),
      Option(
          name: '-Qn',
          description:
              'Do not emit metadata containing compiler name and version'),
      Option(
          name: '-Qunused-arguments',
          description: 'Don\'t emit warning for unused driver arguments'),
      Option(
          name: '-Qy',
          description: 'Emit metadata containing compiler name and version'),
      Option(
          name: '-relocatable-pch',
          description: 'Whether to build a relocatable precompiled header'),
      Option(
          name: '-rewrite-legacy-objc',
          description: 'Rewrite Legacy Objective-C source to C++'),
      Option(
          name: '-rewrite-objc',
          description: 'Rewrite Objective-C source to C++'),
      Option(
          name: '--rocm-device-lib-path',
          description: 'ROCm device library path. Alternative to rocm-path',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '--rocm-path',
          description:
              'ROCm installation path, used for finding and automatically linking required bitcode libraries',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-Rpass-analysis',
          description:
              'Report transformation analysis from optimization passes whose name matches the given POSIX regular expression',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-Rpass-missed',
          description:
              'Report missed transformations by optimization passes whose name matches the given POSIX regular expression',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-Rpass',
          description:
              'Report transformations performed by optimization passes whose name matches the given POSIX regular expression',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-rtlib',
          description: 'Compiler runtime library to use',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-R',
          description: 'Enable the specified remark',
          args: [Arg(name: 'remark', description: 'Remar')]),
      Option(
          name: '-save-stats',
          description: 'Save llvm statistics',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-save-temps',
          description: 'Save intermediate compilation results',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-serialize-diagnostics',
          description: 'Serialize compiler diagnostics to a file',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-shared-libsan',
          description: 'Dynamically link the sanitizer runtime'),
      Option(
          name: '-static-libsan',
          description: 'Statically link the sanitizer runtime'),
      Option(
          name: '-static-openmp',
          description: 'Use the static host OpenMP runtime while linking'),
      Option(
          name: '-stdlib++-isystem',
          description: 'Use directory as the C++ standard library include path',
          args: [
            Arg(
                name: 'directory',
                description: 'Directory',
                template: 'folders')
          ]),
      Option(
          name: '-stdlib',
          description: 'C++ standard library to use',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-sycl-std',
          description: 'SYCL language standard to compile for',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '--system-header-prefix',
          description:
              'Treat all #include paths starting with <prefix> as including a system header',
          args: [Arg(name: 'prefix', description: 'Prefix')]),
      Option(
          name: '-S', description: 'Only run preprocess and compilation steps'),
      Option(
          name: '-target-variant',
          description:
              'Generate code that may run on a particular variant of the deployment target',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '--target',
          description: 'Generate code for the given target',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-Tbss',
          description: 'Set starting address of BSS to <addr>',
          args: [Arg(name: 'addr', description: 'Add')]),
      Option(
          name: '-Tdata',
          description: 'Set starting address of DATA to <addr>',
          args: [Arg(name: 'addr', description: 'Add')]),
      Option(name: '-time', description: 'Time individual commands'),
      Option(
          name: '-traditional-cpp',
          description: 'Enable some traditional CPP emulation'),
      Option(name: '-trigraphs', description: 'Process trigraph sequences'),
      Option(
          name: '-Ttext',
          description: 'Set starting address of TEXT to <addr>',
          args: [Arg(name: 'addr', description: 'Add')]),
      Option(
          name: '-T',
          description: 'Specify <script> as linker script',
          args: [Arg(name: 'script', description: 'Scrip')]),
      Option(name: '-undef', description: 'Undef all system defines'),
      Option(
          name: '-unwindlib',
          description: 'Unwind library to use',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(
          name: '-U',
          description: 'Undefine macro <macro>',
          args: [Arg(name: 'macro', description: 'Macr')]),
      Option(
          name: '--verify-debug-info',
          description: 'Verify the binary representation of debug output'),
      Option(
          name: '-verify-pch',
          description:
              'Load and verify that a pre-compiled header file is not stale'),
      Option(name: '--version', description: 'Print version information'),
      Option(
          name: '-v',
          description: 'Show commands to run and use verbose output'),
      Option(
          name: '-Wdeprecated',
          description:
              'Enable warnings for deprecated constructs and define __DEPRECATED'),
      Option(
          name: '-working-directory',
          description: 'Resolve file paths relative to the specified directory',
          args: [Arg(name: 'value', description: 'Value')]),
      Option(name: '-w', description: 'Suppress all warnings'),
      Option(
          name: '-Xanalyzer',
          description: 'Pass <arg> to the static analyzer',
          args: [Arg(name: 'arg', description: 'Arg')]),
      Option(
          name: '-Xarch_device',
          description: 'Pass <arg> to the CUDA/HIP device compilation',
          args: [Arg(name: 'arg', description: 'Arg')]),
      Option(
          name: '-Xarch_host',
          description: 'Pass <arg> to the CUDA/HIP host compilation',
          args: [Arg(name: 'arg', description: 'Arg')]),
      Option(
          name: '-Xassembler',
          description: 'Pass <arg> to the assembler',
          args: [Arg(name: 'arg', description: 'Arg')]),
      Option(
          name: '-Xclang',
          description: 'Pass <arg> to the clang compiler',
          args: [Arg(name: 'arg', description: 'Arg')]),
      Option(
          name: '-Xcuda-fatbinary',
          description: 'Pass <arg> to fatbinary invocation',
          args: [Arg(name: 'arg', description: 'Arg')]),
      Option(
          name: '-Xcuda-ptxas',
          description: 'Pass <arg> to the ptxas assembler',
          args: [Arg(name: 'arg', description: 'Arg')]),
      Option(
          name: '-Xlinker',
          description: 'Pass <arg> to the linker',
          args: [Arg(name: 'arg', description: 'Arg')]),
      Option(
          name: '-Xopenmp-target',
          description:
              'Pass <arg> to the target offloading toolchain identified by <triple>',
          args: [Arg(name: 'triple', description: 'Triple')]),
      Option(
          name: '-Xpreprocessor',
          description: 'Pass <arg> to the preprocessor',
          args: [Arg(name: 'arg', description: 'Arg')]),
      Option(
          name: '-x',
          description: 'Treat subsequent input files as having type <language>',
          args: [Arg(name: 'language', description: 'Language')]),
      Option(
          name: '-z',
          description: 'Pass -z <arg> to the linker',
          args: [Arg(name: 'arg', description: 'Arg')]),
    ]);