Clang command line argument reference¶
Introduction¶
This page lists the command line arguments currently supported by the
GCC-compatible clang
and clang++
drivers.
-
-B<dir>
,
--prefix
<arg>
,
--prefix
=<arg>
¶
Add <dir> to search path for binaries and object files used implicitly
-
-F<arg>
¶
Add directory to framework include search path
-
-ObjC
¶
Treat source input files as Objective-C inputs
-
-ObjC++
¶
Treat source input files as Objective-C++ inputs
-
-Qn
,
-fno-ident
¶
Do not emit metadata containing compiler name and version
-
-Qunused-arguments
¶
Don’t emit warning for unused driver arguments
-
-Qy
,
-fident
¶
Emit metadata containing compiler name and version
-
-Wa,<arg>,<arg2>...
¶
Pass the comma separated arguments in <arg> to the assembler
-
-Wlarge-by-value-copy
=<arg>
¶
-
-Xarch_<arg1>
<arg2>
¶
-
-Xcuda-fatbinary
<arg>
¶
Pass <arg> to fatbinary invocation
-
-Xcuda-ptxas
<arg>
¶
Pass <arg> to the ptxas assembler
-
-Xopenmp-target
<arg>
¶
Pass <arg> to the target offloading toolchain.
-
-Xopenmp-target
=<triple> <arg>
¶
Pass <arg> to the target offloading toolchain identified by <triple>.
-
-Z<arg>
¶
-
-a<arg>
,
--profile-blocks
¶
-
-all_load
¶
-
-allowable_client
<arg>
¶
-
--analyze
¶
Run the static analyzer
-
--analyzer-no-default-checks
¶
-
--analyzer-output<arg>
¶
Static analyzer report output format (html|plist|plist-multi-file|plist-html|sarif|text).
-
-ansi
,
--ansi
¶
-
-arch
<arg>
¶
-
-arch_errors_fatal
¶
-
-arch_only
<arg>
¶
-
-arcmt-migrate-emit-errors
¶
Emit ARC errors even if the migrator can fix them
-
-arcmt-migrate-report-output
<arg>
¶
Output path for the plist report
-
--autocomplete
=<arg>
¶
-
-bind_at_load
¶
-
-bundle
¶
-
-bundle_loader
<arg>
¶
-
-client_name<arg>
¶
-
-compatibility_version<arg>
¶
-
--config
<arg>
¶
Specifies configuration file
-
--constant-cfstrings
¶
-
-coverage
,
--coverage
¶
-
--cuda-compile-host-device
¶
Compile CUDA code for both host and device (default). Has no effect on non-CUDA compilations.
-
--cuda-device-only
¶
Compile CUDA code for device only
-
--cuda-gpu-arch
=<arg>
,
--no-cuda-gpu-arch
=<arg>
¶
CUDA GPU architecture (e.g. sm_35). May be specified more than once.
-
--cuda-host-only
¶
Compile CUDA code for host only. Has no effect on non-CUDA compilations.
-
--cuda-include-ptx
=<arg>
,
--no-cuda-include-ptx
=<arg>
¶
Include PTX for the following GPU architecture (e.g. sm_35) or ‘all’. May be specified more than once.
-
--cuda-noopt-device-debug
,
--no-cuda-noopt-device-debug
¶
Enable device-side debug info generation. Disables ptxas optimizations.
-
-current_version<arg>
¶
-
-dead_strip
¶
-
-dependency-dot
<arg>
¶
Filename to write DOT-formatted header dependencies to
-
-dependency-file
<arg>
¶
Filename (or -) to write dependency output to
-
-dumpmachine
¶
-
-dumpversion
¶
-
--dyld-prefix
=<arg>
,
--dyld-prefix
<arg>
¶
-
-dylib_file
<arg>
¶
-
-dylinker
¶
-
-dylinker_install_name<arg>
¶
-
-dynamic
¶
-
-dynamiclib
¶
-
-emit-ast
¶
Emit Clang AST files for source inputs
-
-enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang
¶
Trivial automatic variable initialization to zero is only here for benchmarks, it’ll eventually be removed, and I’m OK with that because I’m only using it to benchmark
-
-exported_symbols_list
<arg>
¶
-
-faligned-new
=<arg>
¶
-
-fcuda-approx-transcendentals
,
-fno-cuda-approx-transcendentals
¶
Use approximate transcendental functions
-
-fcuda-flush-denormals-to-zero
,
-fno-cuda-flush-denormals-to-zero
¶
Flush denormal floating point values to zero in CUDA device mode.
-
-fcuda-short-ptr
,
-fno-cuda-short-ptr
¶
Use 32-bit pointers for accessing const/local/shared address spaces.
-
-ffixed-r19
¶
Reserve register r19 (Hexagon only)
-
-fgpu-allow-device-init
,
-fno-gpu-allow-device-init
¶
Allow device side init function in HIP
-
-fgpu-rdc
,
-fcuda-rdc
,
-fno-gpu-rdc
¶
Generate relocatable device code, also known as separate compilation mode.
-
-fheinous-gnu-extensions
¶
-
-fhip-new-launch-api
,
-fno-hip-new-launch-api
¶
Use new kernel launching API for HIP.
-
-flat_namespace
¶
-
-fopenmp-targets
=<arg1>,<arg2>...
¶
Specify comma-separated list of triples OpenMP offloading targets to be supported
-
-force_cpusubtype_ALL
¶
-
-force_flat_namespace
¶
-
-force_load
<arg>
¶
-
-framework
<arg>
¶
-
-frtlib-add-rpath
,
-fno-rtlib-add-rpath
¶
Add -rpath with architecture-specific resource directory to the linker flags
-
-fsanitize-system-blacklist
=<arg>
¶
Path to system blacklist file for sanitizers
-
--gcc-toolchain
=<arg>
,
-gcc-toolchain
<arg>
¶
Use the gcc toolchain at the given directory
-
-gcodeview
¶
Generate CodeView debug information
-
-gcodeview-ghash
,
-gno-codeview-ghash
¶
Emit type record hashes in a .debug$H section
-
-ginline-line-tables
,
-gno-inline-line-tables
¶
-
--gpu-max-threads-per-block
=<arg>
¶
Default max threads per block for kernel launch bounds for HIP
-
-headerpad_max_install_names<arg>
¶
-
-help
,
--help
¶
Display available options
Display help for hidden options
-
--hip-link
¶
Link clang-offload-bundler bundles for HIP
-
-image_base
<arg>
¶
-
-index-header-map
¶
Make the next included directory (-I or -F) an indexer header map
-
-init
<arg>
¶
-
-install_name
<arg>
¶
-
-interface-stub-version
=<arg>
¶
-
-keep_private_externs
¶
-
-lazy_framework
<arg>
¶
-
-lazy_library
<arg>
¶
-
-mbig-endian
,
-EB
¶
-
-mbranch-protection
=<arg>
¶
Enforce targets of indirect branches and function returns
-
--migrate
¶
Run the migrator
-
-mios-simulator-version-min
=<arg>
,
-miphonesimulator-version-min
=<arg>
¶
-
-mlinker-version
=<arg>
¶
-
-mlittle-endian
,
-EL
¶
-
-mllvm
<arg>
¶
Additional arguments to forward to LLVM’s option processing
-
-module-dependency-dir
<arg>
¶
Directory to dump module dependencies to
-
-mtvos-simulator-version-min
=<arg>
,
-mappletvsimulator-version-min
=<arg>
¶
-
-multi_module
¶
-
-multiply_defined
<arg>
¶
-
-multiply_defined_unused
<arg>
¶
-
-mwatchos-simulator-version-min
=<arg>
,
-mwatchsimulator-version-min
=<arg>
¶
-
--no-cuda-version-check
¶
Don’t error out if the detected version of the CUDA install is too low for the requested CUDA gpu architecture.
-
-no-integrated-cpp
,
--no-integrated-cpp
¶
-
-no_dead_strip_inits_and_terms
¶
-
-nobuiltininc
¶
Disable builtin #include directories
-
-nocudainc
¶
-
-nodefaultlibs
¶
-
-nofixprebinding
¶
-
-nogpulib
,
-nocudalib
¶
Do not link device library for CUDA/HIP device compilation
-
-nolibc
¶
-
-nomultidefs
¶
-
-nopie
,
-no-pie
¶
-
-noprebind
¶
-
-noprofilelib
¶
-
-noseglinkedit
¶
-
-nostartfiles
¶
-
-nostdinc
,
--no-standard-includes
¶
-
-nostdinc++
¶
Disable standard #include directories for the C++ standard library
-
-nostdlib
,
--no-standard-libraries
¶
-
-nostdlib++
¶
-
-nostdlibinc
¶
-
-o<file>
,
--output
<arg>
,
--output
=<arg>
¶
Write output to <file>
-
-objcmt-atomic-property
¶
Make migration to ‘atomic’ properties
-
-objcmt-migrate-all
¶
Enable migration to modern ObjC
-
-objcmt-migrate-annotation
¶
Enable migration to property and method annotations
-
-objcmt-migrate-designated-init
¶
Enable migration to infer NS_DESIGNATED_INITIALIZER for initializer methods
-
-objcmt-migrate-instancetype
¶
Enable migration to infer instancetype for method result type
-
-objcmt-migrate-literals
¶
Enable migration to modern ObjC literals
-
-objcmt-migrate-ns-macros
¶
Enable migration to NS_ENUM/NS_OPTIONS macros
-
-objcmt-migrate-property
¶
Enable migration to modern ObjC property
-
-objcmt-migrate-property-dot-syntax
¶
Enable migration of setter/getter messages to property-dot syntax
-
-objcmt-migrate-protocol-conformance
¶
Enable migration to add protocol conformance on classes
-
-objcmt-migrate-readonly-property
¶
Enable migration to modern ObjC readonly property
-
-objcmt-migrate-readwrite-property
¶
Enable migration to modern ObjC readwrite property
-
-objcmt-migrate-subscripting
¶
Enable migration to modern ObjC subscripting
-
-objcmt-ns-nonatomic-iosonly
¶
Enable migration to use NS_NONATOMIC_IOSONLY macro for setting property’s ‘atomic’ attribute
-
-objcmt-returns-innerpointer-property
¶
Enable migration to annotate property with NS_RETURNS_INNER_POINTER
-
-objcmt-whitelist-dir-path
=<arg>
,
-objcmt-white-list-dir-path
=<arg>
¶
Only modify files with a filename contained in the provided directory path
-
-object
¶
-
-p
,
--profile
¶
-
-pagezero_size<arg>
¶
-
-pg
¶
Enable mcount instrumentation
-
-pie
¶
-
-pipe
,
--pipe
¶
Use pipes between commands, when possible
-
-prebind
¶
-
-prebind_all_twolevel_modules
¶
-
-preload
¶
-
--print-diagnostic-categories
¶
-
-print-effective-triple
,
--print-effective-triple
¶
Print the effective target triple
-
-print-file-name
=<file>
,
--print-file-name
=<file>
,
--print-file-name
<arg>
¶
Print the full library path of <file>
-
-print-ivar-layout
¶
Enable Objective-C Ivar layout bitmap print trace
-
-print-libgcc-file-name
,
--print-libgcc-file-name
¶
Print the library path for the currently used compiler runtime library (“libgcc.a” or “libclang_rt.builtins.*.a”)
-
-print-multi-directory
,
--print-multi-directory
¶
-
-print-multi-lib
,
--print-multi-lib
¶
-
-print-prog-name
=<name>
,
--print-prog-name
=<name>
,
--print-prog-name
<arg>
¶
Print the full program path of <name>
-
-print-resource-dir
,
--print-resource-dir
¶
Print the resource directory pathname
-
-print-search-dirs
,
--print-search-dirs
¶
Print the paths used for finding libraries and programs
-
-print-target-triple
,
--print-target-triple
¶
Print the normalized target triple
-
-private_bundle
¶
-
-pthread
,
-no-pthread
¶
Support POSIX threads in generated code
-
-pthreads
¶
-
-rdynamic
¶
-
-read_only_relocs
<arg>
¶
-
-relocatable-pch
,
--relocatable-pch
¶
Whether to build a relocatable precompiled header
-
-remap
¶
-
-rewrite-legacy-objc
¶
Rewrite Legacy Objective-C source to C++
-
-rtlib
=<arg>
,
--rtlib
=<arg>
,
--rtlib
<arg>
¶
Compiler runtime library to use
-
-save-stats
=<arg>
,
--save-stats
=<arg>
,
-save-stats
(equivalent to -save-stats=cwd)
,
--save-stats
(equivalent to -save-stats=cwd)
¶
Save llvm statistics.
-
-save-temps
=<arg>
,
--save-temps
=<arg>
,
-save-temps
(equivalent to -save-temps=cwd)
,
--save-temps
(equivalent to -save-temps=cwd)
¶
Save intermediate compilation results.
-
-sectalign
<arg1> <arg2> <arg3>
¶
-
-sectcreate
<arg1> <arg2> <arg3>
¶
-
-sectobjectsymbols
<arg1> <arg2>
¶
-
-sectorder
<arg1> <arg2> <arg3>
¶
-
-seg1addr<arg>
¶
-
-seg_addr_table
<arg>
¶
-
-seg_addr_table_filename
<arg>
¶
-
-segaddr
<arg1> <arg2>
¶
-
-segcreate
<arg1> <arg2> <arg3>
¶
-
-seglinkedit
¶
-
-segprot
<arg1> <arg2> <arg3>
¶
-
-segs_read_<arg>
¶
-
-segs_read_only_addr
<arg>
¶
-
-segs_read_write_addr
<arg>
¶
-
-serialize-diagnostics
<arg>
,
--serialize-diagnostics
<arg>
¶
Serialize compiler diagnostics to a file
Dynamically link the sanitizer runtime
-
-single_module
¶
-
-specs
=<arg>
,
--specs
=<arg>
¶
-
-static
,
--static
¶
-
-static-libgcc
¶
-
-static-libsan
¶
Statically link the sanitizer runtime
-
-static-libstdc++
¶
-
-static-openmp
¶
Use the static host OpenMP runtime while linking.
-
-static-pie
¶
-
-std-default
=<arg>
¶
-
-stdlib
=<arg>
,
--stdlib
=<arg>
,
--stdlib
<arg>
¶
C++ standard library to use
-
-sub_library<arg>
¶
-
-sub_umbrella<arg>
¶
-
--sysroot
=<arg>
,
--sysroot
<arg>
¶
-
--target-help
¶
-
--target
=<arg>
,
-target
<arg>
¶
Generate code for the given target
-
-time
¶
Time individual commands
-
-traditional
,
--traditional
¶
-
-traditional-cpp
,
--traditional-cpp
¶
Enable some traditional CPP emulation
-
-twolevel_namespace
¶
-
-twolevel_namespace_hints
¶
-
-umbrella
<arg>
¶
-
-unexported_symbols_list
<arg>
¶
-
-unwindlib
=<arg>
,
--unwindlib
=<arg>
¶
Unwind library to use
-
-v
,
--verbose
¶
Show commands to run and use verbose output
-
--verify-debug-info
¶
Verify the binary representation of debug output
-
--version
¶
Print version information
-
-w
,
--no-warnings
¶
Suppress all warnings
-
-weak-l<arg>
¶
-
-weak_framework
<arg>
¶
-
-weak_library
<arg>
¶
-
-weak_reference_mismatches
<arg>
¶
-
-whatsloaded
¶
-
-whyload
¶
-
-working-directory<arg>
,
-working-directory
=<arg>
¶
Resolve file paths relative to the specified directory
-
-x<language>
,
--language
<arg>
,
--language
=<arg>
¶
Treat subsequent input files as having type <language>
-
-y<arg>
¶
Actions¶
The action to perform on the input.
-
-E
,
--preprocess
¶
Only run the preprocessor
-
-S
,
--assemble
¶
Only run preprocess and compilation steps
-
-c
,
--compile
¶
Only run preprocess, compile, and assemble steps
-
-emit-interface-stubs
¶
Generate Inteface Stub Files.
-
-emit-llvm
¶
Use the LLVM representation for assembler and object files
-
-emit-merged-ifs
¶
Generate Interface Stub Files, emit merged text not binary.
-
-fsyntax-only
¶
-
-module-file-info
¶
Provide information about a particular module file
-
--precompile
¶
Only precompile the input
-
-rewrite-objc
¶
Rewrite Objective-C source to C++
-
-verify-pch
¶
Load and verify that a pre-compiled header file is not stale
Compilation flags¶
Flags controlling the behavior of Clang during compilation. These flags have no effect during actions that do not perform compilation.
-
-Xassembler
<arg>
¶
Pass <arg> to the assembler
-
-Xclang
<arg>
¶
Pass <arg> to the clang compiler
-
-fclang-abi-compat
=<version>
¶
Attempt to match the ABI of Clang <version>
-
-fcomment-block-commands
=<arg>,<arg2>...
¶
Treat each comma separated argument in <arg> as a documentation comment block command
-
-fcomplete-member-pointers
,
-fno-complete-member-pointers
¶
Require member pointer base types to be complete if they would be significant under the Microsoft ABI
-
-fcrash-diagnostics-dir
=<arg>
¶
-
-fdeclspec
,
-fno-declspec
¶
Allow __declspec as a keyword
-
-fdepfile-entry
=<arg>
¶
-
-fdiagnostics-fixit-info
,
-fno-diagnostics-fixit-info
¶
-
-fdiagnostics-format
=<arg>
¶
-
-fdiagnostics-parseable-fixits
¶
Print fix-its in machine parseable form
-
-fdiagnostics-print-source-range-info
¶
Print source range spans in numeric form
-
-fdiagnostics-show-category
=<arg>
¶
-
-fdiscard-value-names
,
-fno-discard-value-names
¶
Discard value names in LLVM IR
-
-fexperimental-isel
,
-fno-experimental-isel
¶
Enables the experimental global instruction selector
-
-fexperimental-new-pass-manager
,
-fno-experimental-new-pass-manager
¶
Enables an experimental new pass manager in LLVM.
-
-ffine-grained-bitfield-accesses
,
-fno-fine-grained-bitfield-accesses
¶
Use separate accesses for consecutive bitfield runs with legal widths and alignments.
-
-finline-functions
,
-fno-inline-functions
¶
Inline suitable functions
-
-finline-hint-functions
¶
Inline functions which are (explicitly or implicitly) marked inline
-
-fno-crash-diagnostics
¶
Disable auto-generation of preprocessed source files and a script for reproduction during a clang crash
-
-fno-sanitize-blacklist
¶
Don’t use blacklist file for sanitizers
-
-fparse-all-comments
¶
-
-frecord-command-line
,
-fno-record-command-line
,
-frecord-gcc-switches
¶
-
-fsanitize-address-field-padding
=<arg>
¶
Level of field padding for AddressSanitizer
-
-fsanitize-address-globals-dead-stripping
¶
Enable linker dead stripping of globals in AddressSanitizer
Enable poisoning array cookies when using custom operator new[] in AddressSanitizer
-
-fsanitize-address-use-after-scope
,
-fno-sanitize-address-use-after-scope
¶
Enable use-after-scope detection in AddressSanitizer
-
-fsanitize-address-use-odr-indicator
,
-fno-sanitize-address-use-odr-indicator
¶
Enable ODR indicator globals to avoid false ODR violation reports in partially sanitized programs at the cost of an increase in binary size
-
-fsanitize-blacklist
=<arg>
¶
Path to blacklist file for sanitizers
-
-fsanitize-cfi-canonical-jump-tables
,
-fno-sanitize-cfi-canonical-jump-tables
¶
Make the jump table addresses canonical in the symbol table
-
-fsanitize-cfi-cross-dso
,
-fno-sanitize-cfi-cross-dso
¶
Enable control flow integrity (CFI) checks for cross-DSO calls.
-
-fsanitize-cfi-icall-generalize-pointers
¶
Generalize pointers in CFI indirect call type signature checks
-
-fsanitize-coverage
=<arg1>,<arg2>...
,
-fno-sanitize-coverage
=<arg1>,<arg2>...
¶
Specify the type of coverage instrumentation for Sanitizers
-
-fsanitize-hwaddress-abi
=<arg>
¶
Select the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor). This option is currently unused.
-
-fsanitize-link-c++-runtime
,
-fno-sanitize-link-c++-runtime
¶
-
-fsanitize-link-runtime
,
-fno-sanitize-link-runtime
¶
-
-fsanitize-memory-track-origins
,
-fno-sanitize-memory-track-origins
¶
Enable origins tracking in MemorySanitizer
-
-fsanitize-memory-track-origins
=<arg>
¶
Enable origins tracking in MemorySanitizer
-
-fsanitize-memory-use-after-dtor
,
-fno-sanitize-memory-use-after-dtor
¶
Enable use-after-destroy detection in MemorySanitizer
-
-fsanitize-minimal-runtime
,
-fno-sanitize-minimal-runtime
¶
-
-fsanitize-recover
,
-fno-sanitize-recover
¶
-
-fsanitize-recover
=<arg1>,<arg2>...
,
-fno-sanitize-recover
=<arg1>,<arg2>...
¶
Enable recovery for specified sanitizers
-
-fsanitize-stats
,
-fno-sanitize-stats
¶
Enable sanitizer statistics gathering.
-
-fsanitize-thread-atomics
,
-fno-sanitize-thread-atomics
¶
Enable atomic operations instrumentation in ThreadSanitizer (default)
-
-fsanitize-thread-func-entry-exit
,
-fno-sanitize-thread-func-entry-exit
¶
Enable function entry/exit instrumentation in ThreadSanitizer (default)
-
-fsanitize-thread-memory-access
,
-fno-sanitize-thread-memory-access
¶
Enable memory access instrumentation in ThreadSanitizer (default)
-
-fsanitize-trap
=<arg1>,<arg2>...
,
-fno-sanitize-trap
=<arg1>,<arg2>...
¶
Enable trapping for specified sanitizers
-
-fsanitize-undefined-strip-path-components
=<number>
¶
Strip (or keep only, if negative) a given number of path components when emitting check metadata.
-
-fsanitize-undefined-trap-on-error
,
-fno-sanitize-undefined-trap-on-error
¶
-
-fsanitize
=<check>,<arg2>...
,
-fno-sanitize
=<arg1>,<arg2>...
¶
Turn on runtime checks for various forms of undefined or suspicious behavior. See user manual for available checks
-
-moutline
,
-mno-outline
¶
Enable function outlining (AArch64 only)
-
--param
<arg>
,
--param
=<arg>
¶
-
-print-supported-cpus
,
--print-supported-cpus
,
-mcpu
=?
,
-mtune
=?
¶
Print supported cpu models for the given target (if target is not specified, it will print the supported cpus for the default target)
-
-std
=<arg>
,
--std
=<arg>
,
--std
<arg>
¶
Language standard to compile for
Preprocessor flags¶
Flags controlling the behavior of the Clang preprocessor.
-
-C
,
--comments
¶
Include comments in preprocessed output
-
-CC
,
--comments-in-macros
¶
Include comments from within macros in preprocessed output
-
-D<macro>
=<value>
,
--define-macro
<arg>
,
--define-macro
=<arg>
¶
Define <macro> to <value> (or 1 if <value> omitted)
-
-H
,
--trace-includes
¶
Show header includes and nesting depth
-
-P
,
--no-line-commands
¶
Disable linemarker output in -E mode
-
-U<macro>
,
--undefine-macro
<arg>
,
--undefine-macro
=<arg>
¶
Undefine macro <macro>
-
-Wp,<arg>,<arg2>...
¶
Pass the comma separated arguments in <arg> to the preprocessor
-
-Xpreprocessor
<arg>
¶
Pass <arg> to the preprocessor
-
-fmacro-prefix-map
=<arg>
¶
remap file source paths in predefined preprocessor macros
Include path management¶
Flags controlling how #include
s are resolved to files.
-
-I<dir>
,
--include-directory
<arg>
,
--include-directory
=<arg>
¶
Add directory to include search path
-
-I-
,
--include-barrier
¶
Restrict all prior -I flags to double-quoted inclusion and remove current directory from include path
-
--cuda-path-ignore-env
¶
Ignore environment variables to detect CUDA installation
-
--cuda-path
=<arg>
¶
CUDA installation path
-
-cxx-isystem<directory>
¶
Add directory to the C++ SYSTEM include search path
-
-fbuild-session-file
=<file>
¶
Use the last modification time of <file> as the build session timestamp
-
-fbuild-session-timestamp
=<time since Epoch in seconds>
¶
Time when the current build session started
-
-fmodule-file
=[<name>=]<file>
¶
Specify the mapping of module name to precompiled module file, or load a module file if name is omitted.
-
-fmodules-cache-path
=<directory>
¶
Specify the module cache path
-
-fmodules-disable-diagnostic-validation
¶
Disable validation of the diagnostic options when loading the module
-
-fmodules-prune-after
=<seconds>
¶
Specify the interval (in seconds) after which a module file will be considered unused
-
-fmodules-prune-interval
=<seconds>
¶
Specify the interval (in seconds) between attempts to prune the module cache
-
-fmodules-user-build-path
<directory>
¶
Specify the module user build path
-
-fmodules-validate-once-per-build-session
¶
Don’t verify input files for the modules if the module has been successfully validated or loaded during this build session
-
-fmodules-validate-system-headers
,
-fno-modules-validate-system-headers
¶
Validate the system headers that a module depends on when loading the module
-
-fprebuilt-module-path
=<directory>
¶
Specify the prebuilt module path
-
-idirafter<arg>
,
--include-directory-after
<arg>
,
--include-directory-after
=<arg>
¶
Add directory to AFTER include search path
-
-iframework<arg>
¶
Add directory to SYSTEM framework search path
-
-iframeworkwithsysroot<directory>
¶
Add directory to SYSTEM framework search path, absolute paths are relative to -isysroot
-
-imacros<file>
,
--imacros<file>
,
--imacros
=<arg>
¶
Include macros from file before parsing
-
-include<file>
,
--include<file>
,
--include
=<arg>
¶
Include file before parsing
-
-include-pch
<file>
¶
Include precompiled header file
-
-iprefix<dir>
,
--include-prefix
<arg>
,
--include-prefix
=<arg>
¶
Set the -iwithprefix/-iwithprefixbefore prefix
-
-iquote<directory>
¶
Add directory to QUOTE include search path
-
-isysroot<dir>
¶
Set the system root directory (usually /)
-
-isystem<directory>
¶
Add directory to SYSTEM include search path
-
-isystem-after<directory>
¶
Add directory to end of the SYSTEM include search path
-
-ivfsoverlay<arg>
¶
Overlay the virtual filesystem described by file over the real file system
-
-iwithprefix<dir>
,
--include-with-prefix
<arg>
,
--include-with-prefix-after
<arg>
,
--include-with-prefix-after
=<arg>
,
--include-with-prefix
=<arg>
¶
Set directory to SYSTEM include search path with prefix
-
-iwithprefixbefore<dir>
,
--include-with-prefix-before
<arg>
,
--include-with-prefix-before
=<arg>
¶
Set directory to include search path with prefix
-
-iwithsysroot<directory>
¶
Add directory to SYSTEM include search path, absolute paths are relative to -isysroot
-
--libomptarget-nvptx-path
=<arg>
¶
Path to libomptarget-nvptx libraries
-
--ptxas-path
=<arg>
¶
Path to ptxas (used for compiling CUDA code)
-
-stdlib++-isystem<directory>
¶
Use directory as the C++ standard library include path
-
--system-header-prefix
=<prefix>
,
--no-system-header-prefix
=<prefix>
,
--system-header-prefix
<arg>
¶
Treat all #include paths starting with <prefix> as including a system header.
Dependency file generation¶
Flags controlling generation of a dependency file for make
-like build
systems.
-
-M
,
--dependencies
¶
Like -MD, but also implies -E and writes to stdout by default
-
-MD
,
--write-dependencies
¶
Write a depfile containing user and system headers
-
-MF<file>
¶
Write depfile output from -MMD, -MD, -MM, or -M to <file>
-
-MG
,
--print-missing-file-dependencies
¶
Add missing headers to depfile
-
-MJ<arg>
¶
Write a compilation database entry per input
-
-MM
,
--user-dependencies
¶
Like -MMD, but also implies -E and writes to stdout by default
-
-MMD
,
--write-user-dependencies
¶
Write a depfile containing user headers
-
-MP
¶
Create phony target for each dependency (other than main file)
-
-MQ<arg>
¶
Specify name of main file output to quote in depfile
-
-MT<arg>
¶
Specify name of main file output in depfile
-
-MV
¶
Use NMake/Jom format for the depfile
Dumping preprocessor state¶
Flags allowing the state of the preprocessor to be dumped in various ways.
-
-d
¶
-
-d<arg>
¶
-
-dD
¶
Print macro definitions in -E mode in addition to normal output
-
-dI
¶
Print include directives in -E mode in addition to normal output
-
-dM
¶
Print macro definitions in -E mode instead of normal output
Diagnostic flags¶
Flags controlling which warnings, errors, and remarks Clang will generate. See the full list of warning and remark flags.
-
-R<remark>
¶
Enable the specified remark
-
-Rpass-analysis
=<arg>
¶
Report transformation analysis from optimization passes whose name matches the given POSIX regular expression
-
-Rpass-missed
=<arg>
¶
Report missed transformations by optimization passes whose name matches the given POSIX regular expression
-
-Rpass
=<arg>
¶
Report transformations performed by optimization passes whose name matches the given POSIX regular expression
-
-W<warning>
,
--extra-warnings
,
--warn-<arg>
,
--warn-
=<arg>
¶
Enable the specified warning
-
-Wdeprecated
,
-Wno-deprecated
¶
Enable warnings for deprecated constructs and define __DEPRECATED
-
-Wnonportable-cfstrings<arg>
,
-Wno-nonportable-cfstrings<arg>
¶
Target-independent compilation options¶
-
-Wframe-larger-than
=<arg>
¶
-
-fPIC
,
-fno-PIC
¶
-
-fPIE
,
-fno-PIE
¶
-
-faccess-control
,
-fno-access-control
¶
-
-faddrsig
,
-fno-addrsig
¶
Emit an address-significance table
-
-falign-functions
,
-fno-align-functions
¶
-
-falign-functions
=<arg>
¶
-
-faligned-allocation
,
-faligned-new
,
-fno-aligned-allocation
¶
Enable C++17 aligned allocation functions
-
-fallow-editor-placeholders
,
-fno-allow-editor-placeholders
¶
Treat editor placeholders as valid source code
-
-fallow-unsupported
¶
-
-faltivec
,
-fno-altivec
¶
-
-fansi-escape-codes
¶
Use ANSI escape codes for diagnostics
-
-fapple-kext
,
-findirect-virtual-calls
,
-fterminated-vtables
¶
Use Apple’s kernel extensions ABI
-
-fapple-link-rtlib
¶
Force linking the clang builtins runtime library
-
-fapple-pragma-pack
,
-fno-apple-pragma-pack
¶
Enable Apple gcc-compatible #pragma pack handling
-
-fapplication-extension
,
-fno-application-extension
¶
Restrict code to those available for App Extensions
-
-fasm
,
-fno-asm
¶
-
-fasm-blocks
,
-fno-asm-blocks
¶
-
-fassociative-math
,
-fno-associative-math
¶
-
-fassume-sane-operator-new
,
-fno-assume-sane-operator-new
¶
-
-fast
¶
-
-fastcp
¶
-
-fastf
¶
-
-fasynchronous-unwind-tables
,
-fno-asynchronous-unwind-tables
¶
-
-fautolink
,
-fno-autolink
¶
-
-fblocks
,
-fno-blocks
¶
Enable the ‘blocks’ language feature
-
-fbootclasspath
=<arg>
,
--bootclasspath
<arg>
,
--bootclasspath
=<arg>
¶
-
-fborland-extensions
,
-fno-borland-extensions
¶
Accept non-standard constructs supported by the Borland compiler
-
-fbracket-depth
=<arg>
¶
-
-fbuiltin
,
-fno-builtin
¶
-
-fbuiltin-module-map
¶
Load the clang builtins module map file.
-
-fc++-static-destructors
,
-fno-c++-static-destructors
¶
Enable C++ static destructor registration (the default)
-
-fcaret-diagnostics
,
-fno-caret-diagnostics
¶
-
-fcf-protection
=<arg>
,
-fcf-protection
(equivalent to -fcf-protection=full)
¶
Instrument control-flow architecture protection. Options: return, branch, full, none.
-
-fcf-runtime-abi
=<arg>
¶
-
-fchar8_t
,
-fno-char8_t
¶
Enable C++ builtin type char8_t
-
-fclasspath
=<arg>
,
--CLASSPATH
<arg>
,
--CLASSPATH
=<arg>
,
--classpath
<arg>
,
--classpath
=<arg>
¶
-
-fcolor-diagnostics
,
-fno-color-diagnostics
¶
Use colors in diagnostics
-
-fcommon
,
-fno-common
¶
-
-fcompile-resource
=<arg>
,
--resource
<arg>
,
--resource
=<arg>
¶
-
-fconstant-cfstrings
,
-fno-constant-cfstrings
¶
-
-fconstant-string-class
=<arg>
¶
-
-fconstexpr-backtrace-limit
=<arg>
¶
-
-fconstexpr-depth
=<arg>
¶
-
-fconstexpr-steps
=<arg>
¶
-
-fconvergent-functions
¶
Assume functions may be convergent
-
-fcoroutines-ts
,
-fno-coroutines-ts
¶
Enable support for the C++ Coroutines TS
-
-fcoverage-mapping
,
-fno-coverage-mapping
¶
Generate coverage mapping to enable code coverage analysis
-
-fcreate-profile
¶
-
-fcs-profile-generate
¶
Generate instrumented code to collect context sensitive execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)
-
-fcs-profile-generate
=<directory>
¶
Generate instrumented code to collect context sensitive execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)
-
-fcxx-exceptions
,
-fno-cxx-exceptions
¶
Enable C++ exceptions
-
-fcxx-modules
,
-fno-cxx-modules
¶
-
-fdata-sections
,
-fno-data-sections
¶
Place each data in its own section (ELF Only)
-
-fdebug-compilation-dir
<arg>
,
-fdebug-compilation-dir
=<arg>
¶
The compilation directory to embed in the debug info.
-
-fdebug-default-version
=<arg>
¶
Default DWARF version to use, if a -g option caused DWARF debug info to be produced
-
-fdebug-info-for-profiling
,
-fno-debug-info-for-profiling
¶
Emit extra debug info to make sample profile more accurate.
-
-fdebug-macro
,
-fno-debug-macro
¶
Emit macro debug information
-
-fdebug-pass-arguments
¶
-
-fdebug-pass-structure
¶
-
-fdebug-prefix-map
=<arg>
¶
remap file source paths in debug info
-
-fdebug-ranges-base-address
,
-fno-debug-ranges-base-address
¶
Use DWARF base address selection entries in debug_ranges
-
-fdebug-types-section
,
-fno-debug-types-section
¶
Place debug types in their own section (ELF Only)
-
-fdelayed-template-parsing
,
-fno-delayed-template-parsing
¶
Parse templated function definitions at the end of the translation unit
-
-fdelete-null-pointer-checks
,
-fno-delete-null-pointer-checks
¶
Treat usage of null pointers as undefined behavior.
-
-fdenormal-fp-math
=<arg>
¶
-
-fdiagnostics-absolute-paths
¶
Print absolute paths in diagnostics
-
-fdiagnostics-color
,
-fno-diagnostics-color
¶
-
-fdiagnostics-color
=<arg>
¶
-
-fdiagnostics-hotness-threshold
=<number>
¶
Prevent optimization remarks from being output if they do not have at least this profile count
-
-fdiagnostics-show-hotness
,
-fno-diagnostics-show-hotness
¶
Enable profile hotness information in diagnostic line
-
-fdiagnostics-show-note-include-stack
,
-fno-diagnostics-show-note-include-stack
¶
Display include stacks for diagnostic notes
-
-fdiagnostics-show-option
,
-fno-diagnostics-show-option
¶
Print option name with mappable diagnostics
-
-fdiagnostics-show-template-tree
¶
Print a template comparison tree for differing templates
-
-fdigraphs
,
-fno-digraphs
¶
Enable alternative token representations ‘<:’, ‘:>’, ‘<%’, ‘%>’, ‘%:’, ‘%:%:’ (default)
-
-fdollars-in-identifiers
,
-fno-dollars-in-identifiers
¶
Allow ‘$’ in identifiers
-
-fdouble-square-bracket-attributes
,
-fno-double-square-bracket-attributes
¶
Enable ‘[[]]’ attributes in all C and C++ language modes
-
-fdwarf-directory-asm
,
-fno-dwarf-directory-asm
¶
-
-fdwarf-exceptions
¶
Use DWARF style exceptions
-
-felide-constructors
,
-fno-elide-constructors
¶
-
-feliminate-unused-debug-symbols
,
-fno-eliminate-unused-debug-symbols
¶
-
-fembed-bitcode
=<option>
,
-fembed-bitcode
(equivalent to -fembed-bitcode=all)
,
-fembed-bitcode-marker
(equivalent to -fembed-bitcode=marker)
¶
Embed LLVM bitcode (option: off, all, bitcode, marker)
-
-femit-all-decls
¶
Emit all declarations, even if unused
-
-femulated-tls
,
-fno-emulated-tls
¶
Use emutls functions to access thread_local variables
-
-fencoding
=<arg>
,
--encoding
<arg>
,
--encoding
=<arg>
¶
-
-ferror-limit
=<arg>
¶
-
-fescaping-block-tail-calls
,
-fno-escaping-block-tail-calls
¶
-
-fexceptions
,
-fno-exceptions
¶
Enable support for exception handling
-
-fexec-charset
=<arg>
¶
-
-fexperimental-new-constant-interpreter
¶
Enable the experimental new constant interpreter
-
-fextdirs
=<arg>
,
--extdirs
<arg>
,
--extdirs
=<arg>
¶
-
-ffast-math
,
-fno-fast-math
¶
Allow aggressive, lossy floating-point optimizations
-
-ffile-prefix-map
=<arg>
¶
remap file source paths in debug info and predefined preprocessor macros
-
-ffinite-math-only
,
-fno-finite-math-only
¶
-
-ffixed-point
,
-fno-fixed-point
¶
Enable fixed point types
-
-ffor-scope
,
-fno-for-scope
¶
-
-fforce-dwarf-frame
,
-fno-force-dwarf-frame
¶
Always emit a debug frame section
-
-fforce-emit-vtables
,
-fno-force-emit-vtables
¶
Emits more virtual tables to improve devirtualization
-
-fforce-enable-int128
,
-fno-force-enable-int128
¶
Enable support for int128_t type
-
-ffp-contract
=<arg>
¶
Form fused FP ops (e.g. FMAs): fast (everywhere) | on (according to FP_CONTRACT pragma) | off (never fuse). Default is ‘fast’ for CUDA/HIP and ‘on’ otherwise.
-
-ffp-exception-behavior
=<arg>
¶
Specifies the exception behavior of floating-point operations.
-
-ffp-model
=<arg>
¶
Controls the semantics of floating-point calculations.
-
-ffreestanding
¶
Assert that the compilation takes place in a freestanding environment
-
-ffunction-sections
,
-fno-function-sections
¶
Place each function in its own section (ELF Only)
-
-fgnu-inline-asm
,
-fno-gnu-inline-asm
¶
-
-fgnu-keywords
,
-fno-gnu-keywords
¶
Allow GNU-extension keywords regardless of language standard
-
-fgnu-runtime
¶
Generate output compatible with the standard GNU Objective-C runtime
-
-fgnu89-inline
,
-fno-gnu89-inline
¶
Use the gnu89 inline semantics
-
-fgnuc-version
=<arg>
¶
Sets various macros to claim compatibility with the given GCC version (default is 4.2.1)
-
-fhonor-infinities
,
-fhonor-infinites
,
-fno-honor-infinities
¶
-
-fhonor-nans
,
-fno-honor-nans
¶
-
-fhosted
¶
-
-fimplicit-module-maps
,
-fmodule-maps
,
-fno-implicit-module-maps
¶
Implicitly search the file system for module map files.
-
-fimplicit-modules
,
-fno-implicit-modules
¶
-
-finput-charset
=<arg>
¶
-
-finstrument-function-entry-bare
¶
Instrument function entry only, after inlining, without arguments to the instrumentation call
-
-finstrument-functions
¶
Generate calls to instrument function entry and exit
-
-finstrument-functions-after-inlining
¶
Like -finstrument-functions, but insert the calls after inlining
-
-fintegrated-as
,
-fno-integrated-as
,
-integrated-as
¶
Enable the integrated assembler
-
-fintegrated-cc1
,
-fno-integrated-cc1
¶
Run cc1 in-process
-
-fjump-tables
,
-fno-jump-tables
¶
-
-fkeep-static-consts
¶
Keep static const variables even if unused
-
-flax-vector-conversions
=<arg>
,
-flax-vector-conversions
(equivalent to -flax-vector-conversions=integer)
,
-fno-lax-vector-conversions
(equivalent to -flax-vector-conversions=none)
¶
Enable implicit vector bit-casts
-
-flimited-precision
=<arg>
¶
-
-flto
,
-fno-lto
¶
Enable LTO in ‘full’ mode
-
-flto-jobs
=<arg>
¶
Controls the backend parallelism of -flto=thin (default of 0 means the number of threads will be derived from the number of CPUs detected)
-
-flto
=<arg>
¶
Set LTO mode to either ‘full’ or ‘thin’
-
-fmacro-backtrace-limit
=<arg>
¶
-
-fmath-errno
,
-fno-math-errno
¶
Require math functions to indicate errors by setting errno
-
-fmax-type-align
=<arg>
¶
Specify the maximum alignment to enforce on pointers lacking an explicit alignment
-
-fmerge-all-constants
,
-fno-merge-all-constants
¶
Allow merging of constants
-
-fmessage-length
=<arg>
¶
-
-fmodule-file-deps
,
-fno-module-file-deps
¶
-
-fmodule-map-file
=<file>
¶
Load this module map file
-
-fmodule-name
=<name>
,
-fmodule-implementation-of
<arg>
,
-fmodule-name
<arg>
¶
Specify the name of the module to build
-
-fmodules
,
-fno-modules
¶
Enable the ‘modules’ language feature
-
-fmodules-decluse
,
-fno-modules-decluse
¶
Require declaration of modules used within a module
-
-fmodules-ignore-macro
=<arg>
¶
Ignore the definition of the given macro when building and loading modules
-
-fmodules-search-all
,
-fno-modules-search-all
¶
Search even non-imported modules to resolve references
-
-fmodules-strict-decluse
¶
Like -fmodules-decluse but requires all headers to be in modules
-
-fmodules-ts
¶
Enable support for the C++ Modules TS
-
-fmodules-validate-input-files-content
¶
Validate PCM input files based on content if mtime differs
-
-fms-compatibility
,
-fno-ms-compatibility
¶
Enable full Microsoft Visual C++ compatibility
-
-fms-compatibility-version
=<arg>
¶
Dot-separated value representing the Microsoft compiler version number to report in _MSC_VER (0 = don’t define it (default))
-
-fms-extensions
,
-fno-ms-extensions
¶
Accept some non-standard constructs supported by the Microsoft compiler
-
-fms-memptr-rep
=<arg>
¶
-
-fms-volatile
¶
-
-fmsc-version
=<arg>
¶
Microsoft compiler version number to report in _MSC_VER (0 = don’t define it (default))
-
-fmudflap
¶
-
-fmudflapth
¶
-
-fnested-functions
¶
-
-fnew-alignment
=<align>
,
-fnew-alignment
<arg>
¶
Specifies the largest alignment guaranteed by ‘::operator new(size_t)’
-
-fnext-runtime
¶
-
-fno-builtin-<arg>
¶
Disable implicit builtin knowledge of a specific function
-
-fno-elide-type
¶
Do not elide types when printing diagnostics
-
-fno-max-type-align
¶
-
-fno-operator-names
¶
Do not treat C++ operator name keywords as synonyms for operators
-
-fno-rtti-data
¶
Control emission of RTTI data
-
-fno-strict-modules-decluse
¶
-
-fno-temp-file
¶
Directly create compilation output files. This may lead to incorrect incremental builds if the compiler crashes
-
-fno-virtual-function_elimination
¶
-
-fno-working-directory
¶
-
-fno_modules-validate-input-files-content
¶
-
-fno_pch-validate-input-files-content
¶
-
-fnoxray-link-deps
¶
-
-fobjc-abi-version
=<arg>
¶
-
-fobjc-arc
,
-fno-objc-arc
¶
Synthesize retain and release calls for Objective-C pointers
-
-fobjc-arc-exceptions
,
-fno-objc-arc-exceptions
¶
Use EH-safe code when synthesizing retains and releases in -fobjc-arc
-
-fobjc-convert-messages-to-runtime-calls
,
-fno-objc-convert-messages-to-runtime-calls
¶
-
-fobjc-exceptions
,
-fno-objc-exceptions
¶
Enable Objective-C exceptions
-
-fobjc-legacy-dispatch
,
-fno-objc-legacy-dispatch
¶
-
-fobjc-link-runtime
¶
-
-fobjc-nonfragile-abi
,
-fno-objc-nonfragile-abi
¶
-
-fobjc-nonfragile-abi-version
=<arg>
¶
-
-fobjc-runtime
=<arg>
¶
Specify the target Objective-C runtime kind and version
-
-fobjc-sender-dependent-dispatch
¶
-
-fobjc-weak
,
-fno-objc-weak
¶
Enable ARC-style weak references in Objective-C
-
-fomit-frame-pointer
,
-fno-omit-frame-pointer
¶
-
-fopenmp
,
-fno-openmp
¶
Parse OpenMP pragmas and generate parallel code.
-
-fopenmp-simd
,
-fno-openmp-simd
¶
Emit OpenMP code only for SIMD-based constructs.
-
-fopenmp-version
=<arg>
¶
-
-fopenmp
=<arg>
¶
-
-foperator-arrow-depth
=<arg>
¶
-
-foptimization-record-file
=<file>
¶
Specify the output name of the file containing the optimization remarks. Implies -fsave-optimization-record. On Darwin platforms, this cannot be used with multiple -arch <arch> options.
-
-foptimization-record-passes
=<regex>
¶
Only include passes which match a specified regular expression in the generated optimization record (by default, include all passes)
-
-foptimize-sibling-calls
,
-fno-optimize-sibling-calls
¶
-
-forder-file-instrumentation
¶
Generate instrumented code to collect order file into default.profraw file (overridden by ‘=’ form of option or LLVM_PROFILE_FILE env var)
-
-foutput-class-dir
=<arg>
,
--output-class-directory
<arg>
,
--output-class-directory
=<arg>
¶
-
-fpack-struct
,
-fno-pack-struct
¶
-
-fpack-struct
=<arg>
¶
Specify the default maximum struct packing alignment
-
-fpascal-strings
,
-fno-pascal-strings
,
-mpascal-strings
¶
Recognize and construct Pascal-style string literals
-
-fpass-plugin
=<dsopath>
¶
Load pass plugin from a dynamic shared object file (only with new pass manager).
-
-fpatchable-function-entry
=<N,M>
¶
Generate M NOPs before function entry and N-M NOPs after function entry
-
-fpcc-struct-return
¶
Override the default ABI to return all structs on the stack
-
-fpch-preprocess
¶
-
-fpch-validate-input-files-content
¶
Validate PCH input files based on content if mtime differs
-
-fpic
,
-fno-pic
¶
-
-fpie
,
-fno-pie
¶
-
-fplt
,
-fno-plt
¶
Use the PLT to make function calls
-
-fplugin
=<dsopath>
¶
Load the named plugin (dynamic shared object)
-
-fpreserve-as-comments
,
-fno-preserve-as-comments
¶
-
-fprofile-arcs
,
-fno-profile-arcs
¶
-
-fprofile-dir
=<arg>
¶
-
-fprofile-exclude-files
=<arg>
¶
Instrument only functions from files where names don’t match all the regexes separated by a semi-colon
-
-fprofile-filter-files
=<arg>
¶
Instrument only functions from files where names match any regex separated by a semi-colon
-
-fprofile-generate
,
-fno-profile-generate
¶
Generate instrumented code to collect execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)
-
-fprofile-generate
=<directory>
¶
Generate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)
-
-fprofile-instr-generate
,
-fno-profile-instr-generate
¶
Generate instrumented code to collect execution counts into default.profraw file (overridden by ‘=’ form of option or LLVM_PROFILE_FILE env var)
-
-fprofile-instr-generate
=<file>
¶
Generate instrumented code to collect execution counts into <file> (overridden by LLVM_PROFILE_FILE env var)
-
-fprofile-instr-use
,
-fno-profile-instr-use
,
-fprofile-use
¶
-
-fprofile-instr-use
=<arg>
¶
Use instrumentation data for profile-guided optimization
-
-fprofile-remapping-file
=<file>
,
-fprofile-remapping-file
<arg>
¶
Use the remappings described in <file> to match the profile data against names in the program
-
-fprofile-sample-accurate
,
-fauto-profile-accurate
,
-fno-profile-sample-accurate
¶
- Specifies that the sample profile is accurate. If the sample
- profile is accurate, callsites without profile samples are marked as cold. Otherwise, treat callsites without profile samples as if we have no profile
-
-fprofile-sample-use
,
-fauto-profile
,
-fno-profile-sample-use
¶
-
-fprofile-sample-use
=<arg>
,
-fauto-profile
=<arg>
¶
Enable sample-based profile guided optimizations
-
-fprofile-use
=<pathname>
¶
Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from <pathname>/default.profdata. Otherwise, it reads from file <pathname>.
-
-freciprocal-math
,
-fno-reciprocal-math
¶
Allow division operations to be reassociated
-
-freg-struct-return
¶
Override the default ABI to return small structs in registers
-
-fregister-global-dtors-with-atexit
,
-fno-register-global-dtors-with-atexit
¶
Use atexit or __cxa_atexit to register global destructors
-
-frelaxed-template-template-args
,
-fno-relaxed-template-template-args
¶
Enable C++17 relaxed template template argument matching
-
-freroll-loops
,
-fno-reroll-loops
¶
Turn on loop reroller
-
-fretain-comments-from-system-headers
¶
-
-frewrite-imports
,
-fno-rewrite-imports
¶
-
-frewrite-includes
,
-fno-rewrite-includes
¶
-
-frewrite-map-file
<arg>
¶
-
-frewrite-map-file
=<arg>
¶
-
-fropi
,
-fno-ropi
¶
-
-frounding-math
,
-fno-rounding-math
¶
-
-frtti
,
-fno-rtti
¶
-
-frwpi
,
-fno-rwpi
¶
-
-fsave-optimization-record
,
-fno-save-optimization-record
¶
Generate a YAML optimization record file
-
-fsave-optimization-record
=<format>
¶
Generate an optimization record file in a specific format
-
-fseh-exceptions
¶
Use SEH style exceptions
-
-fshort-enums
,
-fno-short-enums
¶
Allocate to an enum type only as many bytes as it needs for the declared range of possible values
-
-fshort-wchar
,
-fno-short-wchar
¶
Force wchar_t to be a short unsigned int
-
-fshow-column
,
-fno-show-column
¶
-
-fshow-overloads
=<arg>
¶
Which overload candidates to show when overload resolution fails: best|all; defaults to all
-
-fshow-source-location
,
-fno-show-source-location
¶
-
-fsignaling-math
,
-fno-signaling-math
¶
-
-fsigned-bitfields
¶
-
-fsigned-char
,
-fno-signed-char
,
--signed-char
¶
-
-fsigned-zeros
,
-fno-signed-zeros
¶
-
-fsized-deallocation
,
-fno-sized-deallocation
¶
Enable C++14 sized global deallocation functions
-
-fsjlj-exceptions
¶
Use SjLj style exceptions
-
-fslp-vectorize
,
-fno-slp-vectorize
,
-ftree-slp-vectorize
¶
Enable the superword-level parallelism vectorization passes
-
-fspell-checking
,
-fno-spell-checking
¶
-
-fspell-checking-limit
=<arg>
¶
-
-fsplit-dwarf-inlining
,
-fno-split-dwarf-inlining
¶
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
-
-fsplit-lto-unit
,
-fno-split-lto-unit
¶
Enables splitting of the LTO unit.
-
-fsplit-stack
¶
-
-fstack-protector
,
-fno-stack-protector
¶
Enable stack protectors for some functions vulnerable to stack smashing. This uses a loose heuristic which considers functions vulnerable if they contain a char (or 8bit integer) array or constant sized calls to alloca, which are of greater size than ssp-buffer-size (default: 8 bytes). All variable sized calls to alloca are considered vulnerable
-
-fstack-protector-all
¶
Enable stack protectors for all functions
-
-fstack-protector-strong
¶
Enable stack protectors for some functions vulnerable to stack smashing. Compared to -fstack-protector, this uses a stronger heuristic that includes functions containing arrays of any size (and any type), as well as any calls to alloca or the taking of an address from a local variable
-
-fstack-size-section
,
-fno-stack-size-section
¶
Emit section containing metadata on function stack sizes
-
-fstandalone-debug
,
-fno-limit-debug-info
,
-fno-standalone-debug
¶
Emit full debug info for all types used by the program
-
-fstrict-aliasing
,
-fno-strict-aliasing
¶
-
-fstrict-enums
,
-fno-strict-enums
¶
Enable optimizations based on the strict definition of an enum’s value range
-
-fstrict-float-cast-overflow
,
-fno-strict-float-cast-overflow
¶
Assume that overflowing float-to-int casts are undefined (default)
-
-fstrict-overflow
,
-fno-strict-overflow
¶
-
-fstrict-return
,
-fno-strict-return
¶
Always treat control flow paths that fall off the end of a non-void function as unreachable
-
-fstrict-vtable-pointers
,
-fno-strict-vtable-pointers
¶
Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
-
-fstruct-path-tbaa
,
-fno-struct-path-tbaa
¶
-
-fsymbol-partition
=<arg>
¶
-
-ftabstop
=<arg>
¶
-
-ftemplate-backtrace-limit
=<arg>
¶
-
-ftemplate-depth-<arg>
¶
-
-ftemplate-depth
=<arg>
¶
-
-ftest-coverage
¶
-
-fthin-link-bitcode
=<arg>
¶
Write minimized bitcode to <file> for the ThinLTO thin link only
-
-fthinlto-index
=<arg>
¶
Perform ThinLTO importing using provided function summary index
-
-fthreadsafe-statics
,
-fno-threadsafe-statics
¶
-
-ftime-report
¶
-
-ftime-trace
¶
Turn on time profiler. Generates JSON file based on output filename. Results can be analyzed with chrome://tracing or Speedscope App for flamegraph visualization.
-
-ftime-trace-granularity
=<arg>
¶
Minimum time granularity (in microseconds) traced by time profiler
-
-ftls-model
=<arg>
¶
-
-ftrap-function
=<arg>
¶
Issue call to specified function rather than a trap instruction
-
-ftrapping-math
,
-fno-trapping-math
¶
-
-ftrapv
¶
Trap on integer overflow
-
-ftrapv-handler
<arg>
¶
-
-ftrapv-handler
=<function name>
¶
Specify the function to be called on overflow
-
-ftrigraphs
,
-fno-trigraphs
,
-trigraphs
,
--trigraphs
¶
Process trigraph sequences
-
-ftrivial-auto-var-init
=<arg>
¶
Initialize trivial automatic stack variables: uninitialized (default) | pattern
-
-funique-section-names
,
-fno-unique-section-names
¶
Use unique names for text and data sections (ELF Only)
-
-funit-at-a-time
,
-fno-unit-at-a-time
¶
-
-funroll-loops
,
-fno-unroll-loops
¶
Turn on loop unroller
-
-funsafe-math-optimizations
,
-fno-unsafe-math-optimizations
¶
-
-funsigned-bitfields
¶
-
-funsigned-char
,
-fno-unsigned-char
,
--unsigned-char
¶
-
-funwind-tables
,
-fno-unwind-tables
¶
-
-fuse-cxa-atexit
,
-fno-use-cxa-atexit
¶
-
-fuse-init-array
,
-fno-use-init-array
¶
Use .init_array instead of .ctors
-
-fuse-ld
=<arg>
¶
-
-fuse-line-directives
,
-fno-use-line-directives
¶
-
-fvalidate-ast-input-files-content
¶
Compute and store the hash of input files used to build an AST. Files with mismatching mtime’s are considered valid if both contents is identical
-
-fveclib
=<arg>
¶
Use the given vector functions library
-
-fvectorize
,
-fno-vectorize
,
-ftree-vectorize
¶
Enable the loop vectorization passes
-
-fverbose-asm
,
-dA
,
-fno-verbose-asm
¶
-
-fvirtual-function-elimination
¶
Enables dead virtual function elimination optimization. Requires -flto=full
Give global C++ operator new and delete declarations hidden visibility
Give inline C++ member functions hidden visibility by default
-
-fvisibility-ms-compat
¶
Give global types ‘default’ visibility and global functions and variables ‘hidden’ visibility by default
-
-fvisibility
=<arg>
¶
Set the default symbol visibility for all global declarations
-
-fwasm-exceptions
¶
Use WebAssembly style exceptions
-
-fwhole-program-vtables
,
-fno-whole-program-vtables
¶
Enables whole-program vtable optimization. Requires -flto
-
-fwrapv
,
-fno-wrapv
¶
Treat signed integer overflow as two’s complement
-
-fwritable-strings
¶
Store string literals as writable data
-
-fxray-always-emit-customevents
,
-fno-xray-always-emit-customevents
¶
Determine whether to always emit __xray_customevent(…) calls even if the function it appears in is not always instrumented.
-
-fxray-always-emit-typedevents
,
-fno-xray-always-emit-typedevents
¶
Determine whether to always emit __xray_typedevent(…) calls even if the function it appears in is not always instrumented.
-
-fxray-always-instrument
=<arg>
¶
DEPRECATED: Filename defining the whitelist for imbuing the ‘always instrument’ XRay attribute.
-
-fxray-attr-list
=<arg>
¶
Filename defining the list of functions/types for imbuing XRay attributes.
-
-fxray-instruction-threshold<arg>
¶
-
-fxray-instruction-threshold
=<arg>
¶
Sets the minimum function size to instrument with XRay
-
-fxray-instrument
,
-fno-xray-instrument
¶
Generate XRay instrumentation sleds on function entry and exit
-
-fxray-instrumentation-bundle
=<arg>
¶
Select which XRay instrumentation points to emit. Options: all, none, function, custom. Default is ‘all’.
-
-fxray-link-deps
¶
Tells clang to add the link dependencies for XRay.
-
-fxray-modes
=<arg>
¶
List of modes to link in by default into XRay instrumented binaries.
-
-fxray-never-instrument
=<arg>
¶
DEPRECATED: Filename defining the whitelist for imbuing the ‘never instrument’ XRay attribute.
-
-fzero-initialized-in-bss
,
-fno-zero-initialized-in-bss
¶
-
-fzvector
,
-fno-zvector
,
-mzvector
¶
Enable System z vector language extension
-
-pedantic
,
--pedantic
,
-no-pedantic
,
--no-pedantic
¶
-
-pedantic-errors
,
--pedantic-errors
¶
OpenCL flags¶
-
-cl-denorms-are-zero
¶
OpenCL only. Allow denormals to be flushed to zero.
-
-cl-fast-relaxed-math
¶
OpenCL only. Sets -cl-finite-math-only and -cl-unsafe-math-optimizations, and defines __FAST_RELAXED_MATH__.
-
-cl-finite-math-only
¶
OpenCL only. Allow floating-point optimizations that assume arguments and results are not NaNs or +-Inf.
-
-cl-fp32-correctly-rounded-divide-sqrt
¶
OpenCL only. Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded.
-
-cl-kernel-arg-info
¶
OpenCL only. Generate kernel argument metadata.
-
-cl-mad-enable
¶
OpenCL only. Allow use of less precise MAD computations in the generated binary.
-
-cl-no-signed-zeros
¶
OpenCL only. Allow use of less precise no signed zeros computations in the generated binary.
-
-cl-opt-disable
¶
OpenCL only. This option disables all optimizations. By default optimizations are enabled.
-
-cl-single-precision-constant
¶
OpenCL only. Treat double precision floating-point constant as single precision constant.
-
-cl-std
=<arg>
¶
OpenCL language standard to compile for.
-
-cl-strict-aliasing
¶
OpenCL only. This option is added for compatibility with OpenCL 1.0.
-
-cl-uniform-work-group-size
¶
OpenCL only. Defines that the global work-size be a multiple of the work-group size specified to clEnqueueNDRangeKernel
-
-cl-unsafe-math-optimizations
¶
OpenCL only. Allow unsafe floating-point optimizations. Also implies -cl-no-signed-zeros and -cl-mad-enable.
Target-dependent compilation options¶
-
-G<size>
,
-G
=<arg>
,
-msmall-data-threshold
=<arg>
¶
Put objects of at most <size> bytes into small data section (MIPS / Hexagon)
-
-ffixed-x1
¶
Reserve the 1 register (AArch64/RISC-V only)
-
-ffixed-x10
¶
Reserve the 10 register (AArch64/RISC-V only)
-
-ffixed-x11
¶
Reserve the 11 register (AArch64/RISC-V only)
-
-ffixed-x12
¶
Reserve the 12 register (AArch64/RISC-V only)
-
-ffixed-x13
¶
Reserve the 13 register (AArch64/RISC-V only)
-
-ffixed-x14
¶
Reserve the 14 register (AArch64/RISC-V only)
-
-ffixed-x15
¶
Reserve the 15 register (AArch64/RISC-V only)
-
-ffixed-x16
¶
Reserve the 16 register (AArch64/RISC-V only)
-
-ffixed-x17
¶
Reserve the 17 register (AArch64/RISC-V only)
-
-ffixed-x18
¶
Reserve the 18 register (AArch64/RISC-V only)
-
-ffixed-x19
¶
Reserve the 19 register (AArch64/RISC-V only)
-
-ffixed-x2
¶
Reserve the 2 register (AArch64/RISC-V only)
-
-ffixed-x20
¶
Reserve the 20 register (AArch64/RISC-V only)
-
-ffixed-x21
¶
Reserve the 21 register (AArch64/RISC-V only)
-
-ffixed-x22
¶
Reserve the 22 register (AArch64/RISC-V only)
-
-ffixed-x23
¶
Reserve the 23 register (AArch64/RISC-V only)
-
-ffixed-x24
¶
Reserve the 24 register (AArch64/RISC-V only)
-
-ffixed-x25
¶
Reserve the 25 register (AArch64/RISC-V only)
-
-ffixed-x26
¶
Reserve the 26 register (AArch64/RISC-V only)
-
-ffixed-x27
¶
Reserve the 27 register (AArch64/RISC-V only)
-
-ffixed-x28
¶
Reserve the 28 register (AArch64/RISC-V only)
-
-ffixed-x29
¶
Reserve the 29 register (AArch64/RISC-V only)
-
-ffixed-x3
¶
Reserve the 3 register (AArch64/RISC-V only)
-
-ffixed-x30
¶
Reserve the 30 register (AArch64/RISC-V only)
-
-ffixed-x31
¶
Reserve the 31 register (AArch64/RISC-V only)
-
-ffixed-x4
¶
Reserve the 4 register (AArch64/RISC-V only)
-
-ffixed-x5
¶
Reserve the 5 register (AArch64/RISC-V only)
-
-ffixed-x6
¶
Reserve the 6 register (AArch64/RISC-V only)
-
-ffixed-x7
¶
Reserve the 7 register (AArch64/RISC-V only)
-
-ffixed-x8
¶
Reserve the 8 register (AArch64/RISC-V only)
-
-ffixed-x9
¶
Reserve the 9 register (AArch64/RISC-V only)
-
-m16
¶
-
-m32
¶
-
-m64
¶
-
-mabi
=<arg>
¶
-
-malign-branch-boundary
=<arg>
¶
-
-malign-branch-prefix-size
=<arg>
¶
-
-malign-branch
=<arg1>,<arg2>...
¶
-
-malign-double
¶
Align doubles to two words in structs (x86 only)
-
-march
=<arg>
¶
-
-masm
=<arg>
¶
-
-mbackchain
,
-mno-backchain
¶
Link stack frames through backchain on System Z
-
-mbranches-within-32B-boundaries
¶
-
-mcmodel
=<arg>
,
-mcmodel
=medany (equivalent to -mcmodel=medium)
,
-mcmodel
=medlow (equivalent to -mcmodel=small)
¶
-
-mconsole<arg>
¶
-
-mcpu
=<arg>
,
-mv5
(equivalent to -mcpu=hexagonv5)
,
-mv55
(equivalent to -mcpu=hexagonv55)
,
-mv60
(equivalent to -mcpu=hexagonv60)
,
-mv62
(equivalent to -mcpu=hexagonv62)
,
-mv65
(equivalent to -mcpu=hexagonv65)
,
-mv66
(equivalent to -mcpu=hexagonv66)
¶
-
-mcrc
,
-mno-crc
¶
Allow use of CRC instructions (ARM/Mips only)
-
-mdefault-build-attributes<arg>
,
-mno-default-build-attributes<arg>
¶
-
-mdll<arg>
¶
-
-mdynamic-no-pic<arg>
¶
-
-meabi
<arg>
¶
Set EABI type, e.g. 4, 5 or gnu (default depends on triple)
-
-mfentry
¶
Insert calls to fentry at function entry (x86/SystemZ only)
-
-mfloat-abi
=<arg>
¶
-
-mfpmath
=<arg>
¶
-
-mfpu
=<arg>
¶
-
-mglobal-merge
,
-mno-global-merge
¶
Enable merging of globals
-
-mhard-float
¶
-
-mhwdiv
=<arg>
,
--mhwdiv
<arg>
,
--mhwdiv
=<arg>
¶
-
-mhwmult
=<arg>
¶
-
-miamcu
,
-mno-iamcu
¶
Use Intel MCU ABI
-
-mimplicit-float
,
-mno-implicit-float
¶
-
-mimplicit-it
=<arg>
¶
-
-mincremental-linker-compatible
,
-mno-incremental-linker-compatible
¶
(integrated-as) Emit an object file which can be used with an incremental linker
-
-miphoneos-version-min
=<arg>
,
-mios-version-min
=<arg>
¶
-
-mkernel
¶
-
-mlong-calls
,
-mno-long-calls
¶
Generate branches with extended addressability, usually via indirect jumps.
-
-mmacosx-version-min
=<arg>
,
-mmacos-version-min
=<arg>
¶
Set Mac OS X deployment target
-
-mmcu
=<arg>
¶
-
-mms-bitfields
,
-mno-ms-bitfields
¶
Set the default structure layout to be compatible with the Microsoft compiler standard
-
-mnop-mcount
¶
Generate mcount/__fentry__ calls as nops. To activate they need to be patched in.
-
-momit-leaf-frame-pointer
,
-mno-omit-leaf-frame-pointer
¶
Omit frame pointer setup for leaf functions
-
-moslib
=<arg>
¶
-
-mpacked-stack
,
-mno-packed-stack
¶
Use packed stack layout (SystemZ only).
-
-mpie-copy-relocations
,
-mno-pie-copy-relocations
¶
Use copy relocations support for PIE builds
-
-mprefer-vector-width
=<arg>
¶
Specifies preferred vector width for auto-vectorization. Defaults to ‘none’ which allows target specific decisions.
-
-mqdsp6-compat
¶
Enable hexagon-qdsp6 backward compatibility
-
-mrecip
¶
-
-mrecip
=<arg1>,<arg2>...
¶
-
-mrecord-mcount
¶
Generate a __mcount_loc section entry for each __fentry__ call.
-
-mred-zone
,
-mno-red-zone
¶
-
-mregparm
=<arg>
¶
-
-mrelax-all
,
-mno-relax-all
¶
(integrated-as) Relax all machine instructions
-
-mretpoline
,
-mno-retpoline
¶
-
-mrtd
,
-mno-rtd
¶
Make StdCall calling convention the default
-
-msign-return-address
=<arg>
¶
Select return address signing scope
-
-msoft-float
,
-mno-soft-float
¶
Use software floating point
-
-mspeculative-load-hardening
,
-mno-speculative-load-hardening
¶
-
-mstack-alignment
=<arg>
¶
Set the stack alignment
-
-mstack-arg-probe
,
-mno-stack-arg-probe
¶
Enable stack probes
-
-mstack-probe-size
=<arg>
¶
Set the stack probe size
-
-mstackrealign
,
-mno-stackrealign
¶
Force realign the stack at entry to every function
-
-mthread-model
<arg>
¶
The thread model to use, e.g. posix, single (posix by default)
-
-mthreads<arg>
¶
-
-mthumb
,
-mno-thumb
¶
-
-mtls-direct-seg-refs
,
-mno-tls-direct-seg-refs
¶
Enable direct TLS access through segment registers (default)
-
-mtls-size
=<arg>
¶
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)
-
-mtune
=<arg>
¶
-
-mtvos-version-min
=<arg>
,
-mappletvos-version-min
=<arg>
¶
-
-municode<arg>
¶
-
-mvx
,
-mno-vx
¶
-
-mwarn-nonportable-cfstrings
,
-mno-warn-nonportable-cfstrings
¶
-
-mwatchos-version-min
=<arg>
¶
-
-mwavefrontsize64
,
-mno-wavefrontsize64
¶
Wavefront size 64 is used
-
-mwindows<arg>
¶
-
-mx32
¶
AARCH64¶
-
-fcall-saved-x10
¶
Make the x10 register call-saved (AArch64 only)
-
-fcall-saved-x11
¶
Make the x11 register call-saved (AArch64 only)
-
-fcall-saved-x12
¶
Make the x12 register call-saved (AArch64 only)
-
-fcall-saved-x13
¶
Make the x13 register call-saved (AArch64 only)
-
-fcall-saved-x14
¶
Make the x14 register call-saved (AArch64 only)
-
-fcall-saved-x15
¶
Make the x15 register call-saved (AArch64 only)
-
-fcall-saved-x18
¶
Make the x18 register call-saved (AArch64 only)
-
-fcall-saved-x8
¶
Make the x8 register call-saved (AArch64 only)
-
-fcall-saved-x9
¶
Make the x9 register call-saved (AArch64 only)
-
-mfix-cortex-a53-835769
,
-mno-fix-cortex-a53-835769
¶
Workaround Cortex-A53 erratum 835769 (AArch64 only)
-
-mgeneral-regs-only
¶
Generate code which only uses the general purpose registers (AArch64 only)
AMDGPU¶
-
-mcode-object-v3
,
-mno-code-object-v3
¶
Enable code object v3 (AMDGPU only)
-
-mcumode
,
-mno-cumode
¶
CU wavefront execution mode is used (AMDGPU only)
-
-msram-ecc
,
-mno-sram-ecc
¶
Enable SRAM ECC (AMDGPU only)
-
-mxnack
,
-mno-xnack
¶
Enable XNACK (AMDGPU only)
ARM¶
-
-ffixed-r9
¶
Reserve the r9 register (ARM only)
-
-mcmse
¶
Allow use of CMSE (Armv8-M Security Extensions)
-
-mexecute-only
,
-mno-execute-only
,
-mpure-code
¶
Disallow generation of data access to code sections (ARM only)
-
-mno-movt
¶
Disallow use of movt/movw pairs (ARM only)
-
-mno-neg-immediates
¶
Disallow converting instructions with negative immediates to their negation or inversion.
-
-mnocrc
¶
Disallow use of CRC instructions (ARM only)
-
-mrestrict-it
,
-mno-restrict-it
¶
Disallow generation of deprecated IT blocks for ARMv8. It is on by default for ARMv8 Thumb mode.
-
-mtp
=<arg>
¶
Thread pointer access method (AArch32/AArch64 only)
-
-munaligned-access
,
-mno-unaligned-access
¶
Allow memory accesses to be unaligned (AArch32/AArch64 only)
Hexagon¶
-
-mieee-rnd-near
¶
-
-mmemops
,
-mno-memops
¶
Enable generation of memop instructions
-
-mnvj
,
-mno-nvj
¶
Enable generation of new-value jumps
-
-mnvs
,
-mno-nvs
¶
Enable generation of new-value stores
-
-mpackets
,
-mno-packets
¶
Enable generation of instruction packets
Hexagon¶
-
-mhvx
,
-mno-hvx
¶
Enable Hexagon Vector eXtensions
-
-mhvx-length
=<arg>
¶
Set Hexagon Vector Length
-
-mhvx
=<arg>
¶
Enable Hexagon Vector eXtensions
MIPS¶
-
-mabicalls
,
-mno-abicalls
¶
Enable SVR4-style position-independent code (Mips only)
-
-mabs
=<arg>
¶
-
-mcheck-zero-division
,
-mno-check-zero-division
¶
-
-mcompact-branches
=<arg>
¶
-
-mdouble-float
¶
-
-mdsp
,
-mno-dsp
¶
-
-mdspr2
,
-mno-dspr2
¶
-
-membedded-data
,
-mno-embedded-data
¶
Place constants in the .rodata section instead of the .sdata section even if they meet the -G <size> threshold (MIPS)
-
-mextern-sdata
,
-mno-extern-sdata
¶
Assume that externally defined data is in the small data if it meets the -G <size> threshold (MIPS)
-
-mfp32
¶
Use 32-bit floating point registers (MIPS only)
-
-mfp64
¶
Use 64-bit floating point registers (MIPS only)
-
-mginv
,
-mno-ginv
¶
-
-mgpopt
,
-mno-gpopt
¶
Use GP relative accesses for symbols known to be in a small data section (MIPS)
-
-mindirect-jump
=<arg>
¶
Change indirect jump instructions to inhibit speculation
-
-mips16
¶
-
-mldc1-sdc1
,
-mno-ldc1-sdc1
¶
-
-mlocal-sdata
,
-mno-local-sdata
¶
Extend the -G behaviour to object local data (MIPS)
-
-mmadd4
,
-mno-madd4
¶
Enable the generation of 4-operand madd.s, madd.d and related instructions.
-
-mmicromips
,
-mno-micromips
¶
-
-mmsa
,
-mno-msa
¶
Enable MSA ASE (MIPS only)
-
-mmt
,
-mno-mt
¶
Enable MT ASE (MIPS only)
-
-mnan
=<arg>
¶
-
-mno-mips16
¶
-
-msingle-float
¶
-
-mvirt
,
-mno-virt
¶
-
-mxgot
,
-mno-xgot
¶
PowerPC¶
-
-maltivec
,
-mno-altivec
¶
-
-mcmpb
,
-mno-cmpb
¶
-
-mcrbits
,
-mno-crbits
¶
-
-mcrypto
,
-mno-crypto
¶
-
-mdirect-move
,
-mno-direct-move
¶
-
-mfloat128
,
-mno-float128
¶
-
-mfprnd
,
-mno-fprnd
¶
-
-mhtm
,
-mno-htm
¶
-
-minvariant-function-descriptors
,
-mno-invariant-function-descriptors
¶
-
-misel
,
-mno-isel
¶
-
-mlongcall
,
-mno-longcall
¶
-
-mmfocrf
,
-mmfcrf
,
-mno-mfocrf
¶
-
-mpopcntd
,
-mno-popcntd
¶
-
-mpower8-vector
,
-mno-power8-vector
¶
-
-mpower9-vector
,
-mno-power9-vector
¶
-
-mqpx
,
-mno-qpx
¶
-
-msecure-plt
¶
-
-mspe
,
-mno-spe
¶
-
-mvsx
,
-mno-vsx
¶
WebAssembly¶
-
-matomics
,
-mno-atomics
¶
-
-mbulk-memory
,
-mno-bulk-memory
¶
-
-mexception-handling
,
-mno-exception-handling
¶
-
-mmultivalue
,
-mno-multivalue
¶
-
-mmutable-globals
,
-mno-mutable-globals
¶
-
-mnontrapping-fptoint
,
-mno-nontrapping-fptoint
¶
-
-mreference-types
,
-mno-reference-types
¶
-
-msign-ext
,
-mno-sign-ext
¶
-
-msimd128
,
-mno-simd128
¶
-
-mtail-call
,
-mno-tail-call
¶
-
-munimplemented-simd128
,
-mno-unimplemented-simd128
¶
X86¶
-
-m3dnow
,
-mno-3dnow
¶
-
-m3dnowa
,
-mno-3dnowa
¶
-
-madx
,
-mno-adx
¶
-
-maes
,
-mno-aes
¶
-
-mavx
,
-mno-avx
¶
-
-mavx2
,
-mno-avx2
¶
-
-mavx512bf16
,
-mno-avx512bf16
¶
-
-mavx512bitalg
,
-mno-avx512bitalg
¶
-
-mavx512bw
,
-mno-avx512bw
¶
-
-mavx512cd
,
-mno-avx512cd
¶
-
-mavx512dq
,
-mno-avx512dq
¶
-
-mavx512er
,
-mno-avx512er
¶
-
-mavx512f
,
-mno-avx512f
¶
-
-mavx512ifma
,
-mno-avx512ifma
¶
-
-mavx512pf
,
-mno-avx512pf
¶
-
-mavx512vbmi
,
-mno-avx512vbmi
¶
-
-mavx512vbmi2
,
-mno-avx512vbmi2
¶
-
-mavx512vl
,
-mno-avx512vl
¶
-
-mavx512vnni
,
-mno-avx512vnni
¶
-
-mavx512vp2intersect
,
-mno-avx512vp2intersect
¶
-
-mavx512vpopcntdq
,
-mno-avx512vpopcntdq
¶
-
-mbmi
,
-mno-bmi
¶
-
-mbmi2
,
-mno-bmi2
¶
-
-mcldemote
,
-mno-cldemote
¶
-
-mclflushopt
,
-mno-clflushopt
¶
-
-mclwb
,
-mno-clwb
¶
-
-mclzero
,
-mno-clzero
¶
-
-mcx16
,
-mno-cx16
¶
-
-menqcmd
,
-mno-enqcmd
¶
-
-mf16c
,
-mno-f16c
¶
-
-mfma
,
-mno-fma
¶
-
-mfma4
,
-mno-fma4
¶
-
-mfsgsbase
,
-mno-fsgsbase
¶
-
-mfxsr
,
-mno-fxsr
¶
-
-mgfni
,
-mno-gfni
¶
-
-minvpcid
,
-mno-invpcid
¶
-
-mlwp
,
-mno-lwp
¶
-
-mlzcnt
,
-mno-lzcnt
¶
-
-mmmx
,
-mno-mmx
¶
-
-mmovbe
,
-mno-movbe
¶
-
-mmovdir64b
,
-mno-movdir64b
¶
-
-mmovdiri
,
-mno-movdiri
¶
-
-mmwaitx
,
-mno-mwaitx
¶
-
-mpclmul
,
-mno-pclmul
¶
-
-mpconfig
,
-mno-pconfig
¶
-
-mpku
,
-mno-pku
¶
-
-mpopcnt
,
-mno-popcnt
¶
-
-mprefetchwt1
,
-mno-prefetchwt1
¶
-
-mprfchw
,
-mno-prfchw
¶
-
-mptwrite
,
-mno-ptwrite
¶
-
-mrdpid
,
-mno-rdpid
¶
-
-mrdrnd
,
-mno-rdrnd
¶
-
-mrdseed
,
-mno-rdseed
¶
-
-mretpoline-external-thunk
,
-mno-retpoline-external-thunk
¶
-
-mrtm
,
-mno-rtm
¶
-
-msahf
,
-mno-sahf
¶
-
-msgx
,
-mno-sgx
¶
-
-msha
,
-mno-sha
¶
-
-mshstk
,
-mno-shstk
¶
-
-msse
,
-mno-sse
¶
-
-msse2
,
-mno-sse2
¶
-
-msse3
,
-mno-sse3
¶
-
-msse4.1
,
-mno-sse4.1
¶
-
-msse4.2
,
-mno-sse4.2
,
-msse4
¶
-
-msse4a
,
-mno-sse4a
¶
-
-mssse3
,
-mno-ssse3
¶
-
-mtbm
,
-mno-tbm
¶
-
-mvaes
,
-mno-vaes
¶
-
-mvpclmulqdq
,
-mno-vpclmulqdq
¶
-
-mvzeroupper
,
-mno-vzeroupper
¶
-
-mwaitpkg
,
-mno-waitpkg
¶
-
-mwbnoinvd
,
-mno-wbnoinvd
¶
-
-mx87
,
-m80387
,
-mno-x87
¶
-
-mxop
,
-mno-xop
¶
-
-mxsave
,
-mno-xsave
¶
-
-mxsavec
,
-mno-xsavec
¶
-
-mxsaveopt
,
-mno-xsaveopt
¶
-
-mxsaves
,
-mno-xsaves
¶
RISCV¶
-
-mrelax
,
-mno-relax
¶
Enable linker relaxation
-
-msave-restore
,
-mno-save-restore
¶
Enable using library calls for save and restore
Long double flags¶
Selects the long double implementation
-
-mlong-double-128
¶
Force long double to be 128 bits
-
-mlong-double-64
¶
Force long double to be 64 bits
-
-mlong-double-80
¶
Force long double to be 80 bits, padded to 128 bits for storage
Optimization level¶
Flags controlling how much optimization should be performed.
-
-O<arg>
,
-O
(equivalent to -O2)
,
--optimize
,
--optimize
=<arg>
¶
-
-Ofast<arg>
¶
Debug information generation¶
Flags controlling how much and what kind of debug information should be generated.
Kind and level of debug information¶
-
-g
,
--debug
,
--debug
=<arg>
¶
Generate source-level debug information
-
-gdwarf
¶
Generate source-level debug information with the default dwarf version
-
-gdwarf-2
¶
Generate source-level debug information with dwarf version 2
-
-gdwarf-3
¶
Generate source-level debug information with dwarf version 3
-
-gdwarf-4
¶
Generate source-level debug information with dwarf version 4
-
-gdwarf-5
¶
Generate source-level debug information with dwarf version 5
-
-gfull
¶
-
-gused
¶
Debug information flags¶
-
-gcolumn-info
,
-gno-column-info
¶
-
-gdwarf-aranges
¶
-
-gembed-source
,
-gno-embed-source
¶
Embed source text in DWARF debug sections
-
-ggnu-pubnames
,
-gno-gnu-pubnames
¶
-
-gpubnames
,
-gno-pubnames
¶
-
-grecord-command-line
,
-gno-record-command-line
,
-grecord-gcc-switches
¶
-
-gsplit-dwarf
¶
-
-gsplit-dwarf
=<arg>
¶
Set DWARF fission mode to either ‘split’ or ‘single’
-
-gstrict-dwarf
,
-gno-strict-dwarf
¶
-
-gz
¶
DWARF debug sections compression type
-
-gz
=<arg>
¶
DWARF debug sections compression type
Static analyzer flags¶
Flags controlling the behavior of the Clang Static Analyzer.
-
-Xanalyzer
<arg>
¶
Pass <arg> to the static analyzer
Fortran compilation flags¶
Flags that will be passed onto the gfortran
compiler when Clang is given
a Fortran input.
-
-A<arg>
,
--assert
<arg>
,
--assert
=<arg>
¶
-
-A-<arg>
¶
-
-J<arg>
¶
-
-cpp
¶
-
-faggressive-function-elimination
,
-fno-aggressive-function-elimination
¶
-
-falign-commons
,
-fno-align-commons
¶
-
-fall-intrinsics
,
-fno-all-intrinsics
¶
-
-fautomatic
,
-fno-automatic
¶
-
-fbackslash
,
-fno-backslash
¶
-
-fbacktrace
,
-fno-backtrace
¶
-
-fblas-matmul-limit
=<arg>
¶
-
-fbounds-check
,
-fno-bounds-check
¶
-
-fcheck-array-temporaries
,
-fno-check-array-temporaries
¶
-
-fcheck
=<arg>
¶
-
-fcoarray
=<arg>
¶
-
-fconvert
=<arg>
¶
-
-fcray-pointer
,
-fno-cray-pointer
¶
-
-fd-lines-as-code
,
-fno-d-lines-as-code
¶
-
-fd-lines-as-comments
,
-fno-d-lines-as-comments
¶
-
-fdefault-double-8
,
-fno-default-double-8
¶
-
-fdefault-integer-8
,
-fno-default-integer-8
¶
-
-fdefault-real-8
,
-fno-default-real-8
¶
-
-fdollar-ok
,
-fno-dollar-ok
¶
-
-fdump-fortran-optimized
,
-fno-dump-fortran-optimized
¶
-
-fdump-fortran-original
,
-fno-dump-fortran-original
¶
-
-fdump-parse-tree
,
-fno-dump-parse-tree
¶
-
-fexternal-blas
,
-fno-external-blas
¶
-
-ff2c
,
-fno-f2c
¶
-
-ffixed-form
,
-fno-fixed-form
¶
-
-ffixed-line-length-<arg>
¶
-
-ffpe-trap
=<arg>
¶
-
-ffree-form
,
-fno-free-form
¶
-
-ffree-line-length-<arg>
¶
-
-ffrontend-optimize
,
-fno-frontend-optimize
¶
-
-fimplicit-none
,
-fno-implicit-none
¶
-
-finit-character
=<arg>
¶
-
-finit-integer
=<arg>
¶
-
-finit-local-zero
,
-fno-init-local-zero
¶
-
-finit-logical
=<arg>
¶
-
-finit-real
=<arg>
¶
-
-finteger-4-integer-8
,
-fno-integer-4-integer-8
¶
-
-fintrinsic-modules-path
,
-fno-intrinsic-modules-path
¶
-
-fmax-array-constructor
=<arg>
¶
-
-fmax-errors
=<arg>
¶
-
-fmax-identifier-length
,
-fno-max-identifier-length
¶
-
-fmax-stack-var-size
=<arg>
¶
-
-fmax-subrecord-length
=<arg>
¶
-
-fmodule-private
,
-fno-module-private
¶
-
-fpack-derived
,
-fno-pack-derived
¶
-
-fprotect-parens
,
-fno-protect-parens
¶
-
-frange-check
,
-fno-range-check
¶
-
-freal-4-real-10
,
-fno-real-4-real-10
¶
-
-freal-4-real-16
,
-fno-real-4-real-16
¶
-
-freal-4-real-8
,
-fno-real-4-real-8
¶
-
-freal-8-real-10
,
-fno-real-8-real-10
¶
-
-freal-8-real-16
,
-fno-real-8-real-16
¶
-
-freal-8-real-4
,
-fno-real-8-real-4
¶
-
-frealloc-lhs
,
-fno-realloc-lhs
¶
-
-frecord-marker
=<arg>
¶
-
-frecursive
,
-fno-recursive
¶
-
-frepack-arrays
,
-fno-repack-arrays
¶
-
-fsecond-underscore
,
-fno-second-underscore
¶
-
-fsign-zero
,
-fno-sign-zero
¶
-
-fstack-arrays
,
-fno-stack-arrays
¶
-
-funderscoring
,
-fno-underscoring
¶
-
-fwhole-file
,
-fno-whole-file
¶
-
-imultilib
<arg>
¶
-
-nocpp
¶
-
-static-libgfortran
¶
Linker flags¶
Flags that are passed on to the linker
-
-L<dir>
,
--library-directory
<arg>
,
--library-directory
=<arg>
¶
Add directory to library search path
-
-Mach
¶
-
-T<script>
¶
Specify <script> as linker script
-
-Tbss<addr>
¶
Set starting address of BSS to <addr>
-
-Tdata<addr>
¶
Set starting address of DATA to <addr>
-
-Ttext<addr>
¶
Set starting address of TEXT to <addr>
-
-Wl,<arg>,<arg2>...
¶
Pass the comma separated arguments in <arg> to the linker
-
-X
¶
-
-Xlinker
<arg>
,
--for-linker
<arg>
,
--for-linker
=<arg>
¶
Pass <arg> to the linker
-
-Z
¶
-
-e<arg>
,
--entry
¶
-
-filelist
<arg>
¶
-
--hip-device-lib-path
=<arg>
¶
HIP device library path
-
--hip-device-lib
=<arg>
¶
HIP device library
-
-l<arg>
¶
-
-r
¶
-
-rpath
<arg>
¶
-
-s
¶
-
-t
¶
-
-u<arg>
,
--force-link
<arg>
,
--force-link
=<arg>
¶
-
-undef
¶
undef all system defines
-
-undefined<arg>
,
--no-undefined
¶
-
-z
<arg>
¶
Pass -z <arg> to the linker