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