Packages and Binaries:
clang
Clang project is a C, C++, Objective C and Objective C++ front-end for the LLVM compiler. Its goal is to offer a replacement to the GNU Compiler Collection (GCC).
Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also provides most of the support of C++20.
This is a dependency package providing the default clang compiler.
Installed size: 20 KB
How to install: sudo apt install clang
Dependencies:
- clang-19
asan_symbolize
root@kali:~# asan_symbolize -h
usage: asan_symbolize [-h] [-d] [-c CROSS_COMPILE] [-l LOGFILE]
[--force-system-symbolizer] [--log-dest LOG_DEST]
[--log-level {debug,info,warning,error,critical}]
[-p PLUGINS [PLUGINS ...]] [--module-map MODULE_MAP]
[--skip-uuid-validation] [-s SYSROOT]
[path_to_cut ...]
ASan symbolization script
positional arguments:
path_to_cut pattern to be cut from the result file path
options:
-h, --help show this help message and exit
-d, --demangle demangle function names
-c CROSS_COMPILE set prefix for binutils
-l, --logfile LOGFILE
set log file name to parse, default is stdin
--force-system-symbolizer
don't use llvm-symbolizer
--log-dest LOG_DEST Destination path for script logging (default stderr).
--log-level {debug,info,warning,error,critical}
Log level for script (default: info).
-p, --plugins PLUGINS [PLUGINS ...]
Load plug-in
--module-map MODULE_MAP
Path to text file containing module mapoutput. See
print_module_map ASan option.
--skip-uuid-validation
Skips validating UUID of modules using otool.
-s SYSROOT set path to sysroot for sanitized binaries
Example of use:
asan_symbolize.py -c "$HOME/opt/cross/bin/arm-linux-gnueabi-" -s "$HOME/SymbolFiles" < asan.log
PLUGINS
This script provides a way for external plug-ins to hook into the behaviour of
various parts of this script (see `--plugins`). This is useful for situations
where it is necessary to handle site-specific quirks (e.g. binaries with debug
symbols only accessible via a remote service) without having to modify the
script itself.
clang
The Clang C, C++, and Objective-C compiler
root@kali:~# clang --help
OVERVIEW: clang LLVM compiler
USAGE: clang [options] file...
OPTIONS:
-### Print (but do not run) the commands to run for this compilation
--amdgpu-arch-tool=<value>
Tool used for detecting AMD GPU arch in the system.
--analyzer-output <value>
Static analyzer report output format (html|plist|plist-multi-file|plist-html|sarif|sarif-html|text).
--analyze Run the static analyzer
-arcmt-migrate-emit-errors
Emit ARC errors even if the migrator can fix them
-arcmt-migrate-report-output <value>
Output path for the plist report
-B <prefix> Search $prefix$file for executables, libraries, and data files. If $prefix is a directory, search $prefix/$file
-b <arg> Pass -b <arg> to the linker on AIX
-CC Include comments from within macros in preprocessed output
-cl-denorms-are-zero OpenCL only. Allow denormals to be flushed to zero.
-cl-ext=<value> OpenCL only. Enable or disable OpenCL extensions/optional features. The argument is a comma-separated sequence of one or more extension names, each prefixed by '+' or '-'.
-cl-fast-relaxed-math OpenCL only. Sets -cl-finite-math-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-no-stdinc OpenCL only. Disables all standard includes containing non-native compiler types and functions.
-cl-opt-disable OpenCL only. This option disables all optimizations. By default optimizations are enabled.
-cl-single-precision-constant
OpenCL only. Treat double precision floating-point constant as single precision constant.
-cl-std=<value> 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.
--config=<file> Specify configuration file
--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-feature=<value> Manually specify the CUDA feature to use
--cuda-host-only Compile CUDA code for host only. Has no effect on non-CUDA compilations.
--cuda-include-ptx=<value>
Include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.
--cuda-noopt-device-debug
Enable device-side debug info generation. Disables ptxas optimizations.
--cuda-path-ignore-env Ignore environment variables to detect CUDA installation
--cuda-path=<value> CUDA installation path
-cuid=<value> An ID for compilation unit, which should be the same for the same compilation unit but different for different compilation units. It is used to externalize device-side static variables for single source offloading languages CUDA and HIP so that they can be accessed by the host code of the same compilation unit.
-cxx-isystem <directory>
Add directory to the C++ SYSTEM include search path
-C Include comments in preprocessed output
-c Only run preprocess, compile, and assemble steps
-darwin-target-variant-triple <value>
Specify the darwin target variant triple
-darwin-target-variant <value>
Generate code for an additional runtime variant of the deployment target
-dD Print macro definitions in -E mode in addition to normal output
-dependency-dot <value> Filename to write DOT-formatted header dependencies to
-dependency-file <value>
Filename (or -) to write dependency output to
-dI Print include directives in -E mode in addition to normal output
-dM Print macro definitions in -E mode instead of normal output
-dsym-dir <dir> Directory to output dSYM's (if any) to
-dumpdir <dumppfx> Use <dumpfpx> as a prefix to form auxiliary and dump file names
-dumpmachine Display the compiler's target processor
-dumpversion Display the version of the compiler
-D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
--embed-dir=<dir> Add directory to embed search path
-emit-ast Emit Clang AST files for source inputs
--emit-extension-symbol-graphs
Generate additional symbol graphs for extended modules.
-emit-interface-stubs Generate Interface Stub Files.
-emit-llvm Use the LLVM representation for assembler and object files
-emit-merged-ifs Generate Interface Stub Files, emit merged text not binary.
--emit-static-lib Enable linker job to emit a static library.
-emit-symbol-graph Generate Extract API information as a side effect of compilation.
--end-no-unused-arguments
Start emitting warnings for unused driver arguments
--extract-api-ignores=<value>
Comma separated list of files containing a new line separated list of API symbols to ignore when extracting API information.
-extract-api Extract API information
-E Only run the preprocessor
-faapcs-bitfield-load Follows the AAPCS standard that all volatile bit-field write generates at least one load. (ARM only).
-faapcs-bitfield-width Follow the AAPCS standard requirement stating that volatile bit-field width is dictated by the field container type. (ARM only).
-faddrsig Emit an address-significance table
-falign-loops=<N> N must be a power of two. Align loops to the boundary
-faligned-allocation Enable C++17 aligned allocation functions
-fallow-editor-placeholders
Treat editor placeholders as valid source code
-faltivec-src-compat=<value>
Source-level compatibility for Altivec vectors (for PowerPC targets). This includes results of vector comparison (scalar for 'xl', vector for 'gcc') as well as behavior when initializing with a scalar (splatting for 'xl', element zero only for 'gcc'). For 'mixed', the compatibility is as 'gcc' for 'vector bool/vector pixel' and as 'xl' for other types. Current default is 'mixed'.
-fansi-escape-codes Use ANSI escape codes for diagnostics
-fapinotes-modules Enable module-based external API notes support
-fapinotes-swift-version=<version>
Specify the Swift version to use when filtering API notes
-fapinotes Enable external API notes support
-fapple-kext Use Apple's kernel extensions ABI
-fapple-link-rtlib Force linking the clang builtins runtime library
-fapple-pragma-pack Enable Apple gcc-compatible #pragma pack handling
-fapplication-extension Restrict code to those available for App Extensions
-fapprox-func Allow certain math function calls to be replaced with an approximately equivalent calculation
-fassume-nothrow-exception-dtor
Assume that exception objects' destructors are non-throwing
-fasync-exceptions Enable EH Asynchronous exceptions
-fauto-import MinGW specific. Enable code generation support for automatic dllimport, and enable support for it in the linker. Enabled by default.
-fbasic-block-address-map
Emit the basic block address map section.
-fbasic-block-sections=<value>
Place each function's basic blocks in unique sections (ELF Only)
-fbinutils-version=<major.minor>
Produced object files can use all ELF features supported by this binutils version and newer. If -fno-integrated-as is specified, the generated assembly will consider GNU as support. 'none' means that all ELF features can be used, regardless of binutils support. Defaults to 2.26.
-fblocks Enable the 'blocks' language feature
-fborland-extensions Accept non-standard constructs supported by the Borland compiler
-fbuild-session-file=<file>
Use the last modification time of <file> as the build session timestamp
-fbuild-session-timestamp=<time since Epoch in seconds>
Time when the current build session started
-fbuiltin-module-map Load the clang builtins module map file.
-fc++-abi=<value> C++ ABI to use. This will override the target C++ ABI.
-fcall-saved-x10 Make the x10 register call-saved (AArch64 only)
-fcall-saved-x11 Make the x11 register call-saved (AArch64 only)
-fcall-saved-x12 Make the x12 register call-saved (AArch64 only)
-fcall-saved-x13 Make the x13 register call-saved (AArch64 only)
-fcall-saved-x14 Make the x14 register call-saved (AArch64 only)
-fcall-saved-x15 Make the x15 register call-saved (AArch64 only)
-fcall-saved-x18 Make the x18 register call-saved (AArch64 only)
-fcall-saved-x8 Make the x8 register call-saved (AArch64 only)
-fcall-saved-x9 Make the x9 register call-saved (AArch64 only)
-fcaret-diagnostics-max-lines=<value>
Set the maximum number of source lines to show in a caret diagnostic (0 = no limit).
-fcf-protection=<value> Instrument control-flow architecture protection
-fcf-protection Enable cf-protection in 'full' mode
-fchar8_t Enable C++ builtin type char8_t
-fcheck-new Do not assume C++ operator new may not return NULL
-fclang-abi-compat=<version>
Attempt to match the ABI of Clang <version>
-fclangir Use the ClangIR pipeline to compile
-fcolor-diagnostics Enable colors in diagnostics
-fcomment-block-commands=<arg>
Treat each comma separated argument in <arg> as a documentation comment block command
-fcommon Place uninitialized global variables in a common block
-fcomplete-member-pointers
Require member pointer base types to be complete if they would be significant under the Microsoft ABI
-fconstexpr-backtrace-limit=<value>
Set the maximum number of entries to print in a constexpr evaluation backtrace (0 = no limit)
-fconstexpr-depth=<value>
Set the maximum depth of recursive constexpr function calls
-fconstexpr-steps=<value>
Set the maximum number of steps in constexpr function evaluation
-fcoro-aligned-allocation
Prefer aligned allocation for C++ Coroutines
-fcoroutines Enable support for the C++ Coroutines
-fcoverage-compilation-dir=<value>
The compilation directory to embed in the coverage mapping.
-fcoverage-mapping Generate coverage mapping to enable code coverage analysis
-fcoverage-mcdc Enable MC/DC criteria when generating code coverage
-fcoverage-prefix-map=<old>=<new>
remap file source paths <old> to <new> in coverage mapping. If there are multiple options, prefix replacement is applied in reverse order starting from the last one
-fcrash-diagnostics-dir=<dir>
Put crash-report files in <dir>
-fcrash-diagnostics=<value>
Set level of crash diagnostic reporting, (option: off, compiler, all)
-fcrash-diagnostics Enable crash diagnostic reporting (default)
-fcs-profile-generate=<directory>
Generate instrumented code to collect context sensitive execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)
-fcs-profile-generate Generate instrumented code to collect context sensitive execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)
-fcuda-short-ptr Use 32-bit pointers for accessing const/local/shared address spaces
-fcx-fortran-rules Range reduction is enabled for complex arithmetic operations.
-fcx-limited-range Basic algebraic expansions of complex arithmetic operations involving are enabled.
-fcxx-exceptions Enable C++ exceptions
-fcxx-modules Enable modules for C++
-fdata-sections Place each data in its own section
-fdebug-compilation-dir=<value>
The compilation directory to embed in the debug info
-fdebug-default-version=<value>
Default DWARF version to use, if a -g option caused DWARF debug info to be produced
-fdebug-info-for-profiling
Emit extra debug info to make sample profile more accurate
-fdebug-macro Emit macro debug information
-fdebug-prefix-map=<old>=<new>
For paths in debug info, remap directory <old> to <new>. If multiple options match a path, the last option wins
-fdebug-ranges-base-address
Use DWARF base address selection entries in .debug_ranges
-fdebug-types-section Place debug types in their own section (ELF Only)
-fdeclspec Allow __declspec as a keyword
-fdefine-target-os-macros
Enable predefined target OS macros
-fdelayed-template-parsing
Parse templated function definitions at the end of the translation unit
-fdelete-null-pointer-checks
Treat usage of null pointers as undefined behavior (default)
-fdiagnostics-absolute-paths
Print absolute paths in diagnostics
-fdiagnostics-hotness-threshold=<value>
Prevent optimization remarks from being output if they do not have at least this profile count. Use 'auto' to apply the threshold from profile summary
-fdiagnostics-misexpect-tolerance=<value>
Prevent misexpect diagnostics from being output if the profile counts are within N% of the expected.
-fdiagnostics-parseable-fixits
Print fix-its in machine parseable form
-fdiagnostics-print-source-range-info
Print source range spans in numeric form
-fdiagnostics-show-hotness
Enable profile hotness information in diagnostic line
-fdiagnostics-show-note-include-stack
Display include stacks for diagnostic notes
-fdiagnostics-show-option
Print option name with mappable diagnostics
-fdiagnostics-show-template-tree
Print a template comparison tree for differing templates
-fdigraphs Enable alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:' (default)
-fdirect-access-external-data
Don't use GOT indirection to reference external data symbols
-fdisable-block-signature-string
Disable block signature string)
-fdiscard-value-names Discard value names in LLVM IR
-fdollars-in-identifiers
Allow '$' in identifiers
-fdriver-only Only run the driver.
-fdwarf-exceptions Use DWARF style exceptions
-feliminate-unused-debug-types
Do not emit debug info for defined but unused types
-fembed-bitcode-marker Embed placeholder LLVM IR data as a marker
-fembed-bitcode=<option>
Embed LLVM bitcode
-fembed-bitcode Embed LLVM IR bitcode as data
-fembed-offload-object=<value>
Embed Offloading device-side binary into host object file as a section.
-femit-all-decls Emit all declarations, even if unused
-femit-compact-unwind-non-canonical
Try emitting Compact-Unwind for non-canonical entries. Maybe overriden by other constraints
-femit-dwarf-unwind=<value>
When to emit DWARF unwind (EH frame) info
-femulated-tls Use emutls functions to access thread_local variables
-fenable-matrix Enable matrix data type and related builtin functions
-fexceptions Enable support for exception handling
-fexcess-precision=<value>
Allows control over excess precision on targets where native support for the precision types is not available. By default, excess precision is used to calculate intermediate results following the rules specified in ISO C99.
-fexperimental-late-parse-attributes
Enable experimental late parsing of attributes
-fexperimental-library Control whether unstable and experimental library features are enabled. This option enables various library features that are either experimental (also known as TSes), or have been but are not stable yet in the selected Standard Library implementation. It is not recommended to use this option in production code, since neither ABI nor API stability are guaranteed. This is intended to provide a preview of features that will ship in the future for experimentation purposes
-fexperimental-modules-reduced-bmi
Generate the reduced BMI
-fexperimental-new-constant-interpreter
Enable the experimental new constant interpreter
-fexperimental-openacc-macro-override <value>
Overrides the _OPENACC macro value for experimental testing during OpenACC support development
-fexperimental-relative-c++-abi-vtables
Use the experimental C++ class ABI for classes with virtual tables
-fexperimental-sanitize-metadata-ignorelist=<value>
Disable sanitizer metadata for modules and functions that match the provided special case list
-fexperimental-sanitize-metadata=<value>
Specify the type of metadata to emit for binary analysis sanitizers
-fexperimental-strict-floating-point
Enables the use of non-default rounding modes and non-default exception handling on targets that are not currently ready.
-fextend-arguments=<value>
Controls how scalar integer arguments are extended in calls to unprototyped and varargs functions
-ffast-math Allow aggressive, lossy floating-point optimizations
-ffat-lto-objects Enable fat LTO object support
-ffile-compilation-dir=<value>
The compilation directory to embed in the debug info and coverage mapping.
-ffile-prefix-map=<value>
remap file source paths in debug info, predefined preprocessor macros and __builtin_FILE(). Implies -ffile-reproducible.
-ffile-reproducible Use the target's platform-specific path separator character when expanding the __FILE__ macro
-ffine-grained-bitfield-accesses
Use separate accesses for consecutive bitfield runs with legal widths and alignments.
-ffinite-loops Assume all non-trivial loops are finite.
-ffinite-math-only Allow floating-point optimizations that assume arguments and results are not NaNs or +-inf. This defines the \_\_FINITE\_MATH\_ONLY\_\_ preprocessor macro.
-ffixed-a0 Reserve the a0 register (M68k only)
-ffixed-a1 Reserve the a1 register (M68k only)
-ffixed-a2 Reserve the a2 register (M68k only)
-ffixed-a3 Reserve the a3 register (M68k only)
-ffixed-a4 Reserve the a4 register (M68k only)
-ffixed-a5 Reserve the a5 register (M68k only)
-ffixed-a6 Reserve the a6 register (M68k only)
-ffixed-d0 Reserve the d0 register (M68k only)
-ffixed-d1 Reserve the d1 register (M68k only)
-ffixed-d2 Reserve the d2 register (M68k only)
-ffixed-d3 Reserve the d3 register (M68k only)
-ffixed-d4 Reserve the d4 register (M68k only)
-ffixed-d5 Reserve the d5 register (M68k only)
-ffixed-d6 Reserve the d6 register (M68k only)
-ffixed-d7 Reserve the d7 register (M68k only)
-ffixed-g1 Reserve the G1 register (SPARC only)
-ffixed-g2 Reserve the G2 register (SPARC only)
-ffixed-g3 Reserve the G3 register (SPARC only)
-ffixed-g4 Reserve the G4 register (SPARC only)
-ffixed-g5 Reserve the G5 register (SPARC only)
-ffixed-g6 Reserve the G6 register (SPARC only)
-ffixed-g7 Reserve the G7 register (SPARC only)
-ffixed-i0 Reserve the I0 register (SPARC only)
-ffixed-i1 Reserve the I1 register (SPARC only)
-ffixed-i2 Reserve the I2 register (SPARC only)
-ffixed-i3 Reserve the I3 register (SPARC only)
-ffixed-i4 Reserve the I4 register (SPARC only)
-ffixed-i5 Reserve the I5 register (SPARC only)
-ffixed-l0 Reserve the L0 register (SPARC only)
-ffixed-l1 Reserve the L1 register (SPARC only)
-ffixed-l2 Reserve the L2 register (SPARC only)
-ffixed-l3 Reserve the L3 register (SPARC only)
-ffixed-l4 Reserve the L4 register (SPARC only)
-ffixed-l5 Reserve the L5 register (SPARC only)
-ffixed-l6 Reserve the L6 register (SPARC only)
-ffixed-l7 Reserve the L7 register (SPARC only)
-ffixed-o0 Reserve the O0 register (SPARC only)
-ffixed-o1 Reserve the O1 register (SPARC only)
-ffixed-o2 Reserve the O2 register (SPARC only)
-ffixed-o3 Reserve the O3 register (SPARC only)
-ffixed-o4 Reserve the O4 register (SPARC only)
-ffixed-o5 Reserve the O5 register (SPARC only)
-ffixed-point Enable fixed point types
-ffixed-r19 Reserve register r19 (Hexagon only)
-ffixed-r9 Reserve the r9 register (ARM only)
-ffixed-x10 Reserve the x10 register (AArch64/RISC-V only)
-ffixed-x11 Reserve the x11 register (AArch64/RISC-V only)
-ffixed-x12 Reserve the x12 register (AArch64/RISC-V only)
-ffixed-x13 Reserve the x13 register (AArch64/RISC-V only)
-ffixed-x14 Reserve the x14 register (AArch64/RISC-V only)
-ffixed-x15 Reserve the x15 register (AArch64/RISC-V only)
-ffixed-x16 Reserve the x16 register (AArch64/RISC-V only)
-ffixed-x17 Reserve the x17 register (AArch64/RISC-V only)
-ffixed-x18 Reserve the x18 register (AArch64/RISC-V only)
-ffixed-x19 Reserve the x19 register (AArch64/RISC-V only)
-ffixed-x1 Reserve the x1 register (AArch64/RISC-V only)
-ffixed-x20 Reserve the x20 register (AArch64/RISC-V only)
-ffixed-x21 Reserve the x21 register (AArch64/RISC-V only)
-ffixed-x22 Reserve the x22 register (AArch64/RISC-V only)
-ffixed-x23 Reserve the x23 register (AArch64/RISC-V only)
-ffixed-x24 Reserve the x24 register (AArch64/RISC-V only)
-ffixed-x25 Reserve the x25 register (AArch64/RISC-V only)
-ffixed-x26 Reserve the x26 register (AArch64/RISC-V only)
-ffixed-x27 Reserve the x27 register (AArch64/RISC-V only)
-ffixed-x28 Reserve the x28 register (AArch64/RISC-V only)
-ffixed-x29 Reserve the x29 register (AArch64/RISC-V only)
-ffixed-x2 Reserve the x2 register (AArch64/RISC-V only)
-ffixed-x30 Reserve the x30 register (AArch64/RISC-V only)
-ffixed-x31 Reserve the x31 register (AArch64/RISC-V only)
-ffixed-x3 Reserve the x3 register (AArch64/RISC-V only)
-ffixed-x4 Reserve the x4 register (AArch64/RISC-V only)
-ffixed-x5 Reserve the x5 register (AArch64/RISC-V only)
-ffixed-x6 Reserve the x6 register (AArch64/RISC-V only)
-ffixed-x7 Reserve the x7 register (AArch64/RISC-V only)
-ffixed-x8 Reserve the x8 register (AArch64/RISC-V only)
-ffixed-x9 Reserve the x9 register (AArch64/RISC-V only)
-fforce-check-cxx20-modules-input-files
Check the input source files from C++20 modules explicitly
-fforce-dwarf-frame Always emit a debug frame section
-fforce-emit-vtables Emits more virtual tables to improve devirtualization
-fforce-enable-int128 Enable support for int128_t type
-ffp-contract=<value> Form fused FP ops (e.g. FMAs)
-ffp-eval-method=<value>
Specifies the evaluation method to use for floating-point arithmetic.
-ffp-exception-behavior=<value>
Specifies the exception behavior of floating-point operations.
-ffp-model=<value> Controls the semantics of floating-point calculations.
-ffreestanding Assert that the compilation takes place in a freestanding environment
-ffuchsia-api-level=<value>
Set Fuchsia API level
-ffunction-sections Place each function in its own section
-fglobal-isel Enables the global instruction selector
-fgnu-keywords Allow GNU-extension keywords regardless of language standard
-fgnu-runtime Generate output compatible with the standard GNU Objective-C runtime
-fgnu89-inline Use the gnu89 inline semantics
-fgnuc-version=<value> Sets various macros to claim compatibility with the given GCC version (default is 4.2.1)
-fgpu-allow-device-init Allow device side init function in HIP (experimental)
-fgpu-approx-transcendentals
Use approximate transcendental functions
-fgpu-default-stream=<value>
Specify default stream. The default value is 'legacy'. (CUDA/HIP only)
-fgpu-defer-diag Defer host/device related diagnostic messages for CUDA/HIP
-fgpu-flush-denormals-to-zero
Flush denormal floating point values to zero in CUDA/HIP device mode.
-fgpu-rdc Generate relocatable device code, also known as separate compilation mode
-fgpu-sanitize Enable sanitizer for supported offloading devices
-fhip-emit-relocatable Compile HIP source to relocatable
-fhip-fp32-correctly-rounded-divide-sqrt
Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded (HIP device compilation only)
-fhip-kernel-arg-name Specify that kernel argument names are preserved (HIP only)
-fhip-new-launch-api Use new kernel launching API for HIP
-fhlsl-strict-availability
Enables strict availability diagnostic mode for HLSL built-in functions.
-fhonor-infinities Specify that floating-point optimizations are not allowed that assume arguments and results are not +-inf.
-fhonor-nans Specify that floating-point optimizations are not allowed that assume arguments and results are not NANs.
-fignore-exceptions Enable support for ignoring exception handling constructs
-fimplicit-module-maps Implicitly search the file system for module map files.
-fincremental-extensions
Enable incremental processing extensions such as processingstatements on the global scope.
-finline-functions Inline suitable functions
-finline-hint-functions Inline functions which are (explicitly or implicitly) marked inline
-finline-max-stacksize=<value>
Suppress inlining of functions whose stack size exceeds the given value
-finput-charset=<value> Specify the default character set for source files
-finstrument-function-entry-bare
Instrument function entry only, after inlining, without arguments to the instrumentation call
-finstrument-functions-after-inlining
Like -finstrument-functions, but insert the calls after inlining
-finstrument-functions Generate calls to instrument function entry and exit
-fintegrated-as Enable the integrated assembler
-fintegrated-cc1 Run cc1 in-process
-fintegrated-objemitter Use internal machine object code emitter.
-fjmc Enable just-my-code debugging
-fjump-tables Use jump tables for lowering switches
-fkeep-persistent-storage-variables
Enable keeping all variables that have a persistent storage duration, including global, static and thread-local variables, to guarantee that they can be directly addressed
-fkeep-static-consts Keep static const variables even if unused
-fkeep-system-includes Instead of expanding system headers when emitting preprocessor output, preserve the #include directive. Useful when producing preprocessed output for test case reduction. May produce incorrect output if preprocessor symbols that control the included content (e.g. _XOPEN_SOURCE) are defined in the including source file. The portability of the resulting source to other compilation environments is not guaranteed.
Only valid with -E.
-flax-vector-conversions=<value>
Enable implicit vector bit-casts
-flto-jobs=<value> 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=auto Enable LTO in 'full' mode
-flto=jobserver Enable LTO in 'full' mode
-flto=<value> Set LTO mode
-flto Enable LTO in 'full' mode
-fmacro-backtrace-limit=<value>
Set the maximum number of entries to print in a macro expansion backtrace (0 = no limit)
-fmacro-prefix-map=<value>
remap file source paths in predefined preprocessor macros and __builtin_FILE(). Implies -ffile-reproducible.
-fmath-errno Require math functions to indicate errors by setting errno
-fmax-tokens=<value> Max total number of preprocessed tokens for -Wmax-tokens.
-fmax-type-align=<value>
Specify the maximum alignment to enforce on pointers lacking an explicit alignment
-fmemory-profile-use=<pathname>
Use memory profile for profile-guided memory optimization
-fmemory-profile=<directory>
Enable heap memory profiling and dump results into <directory>
-fmemory-profile Enable heap memory profiling
-fmerge-all-constants Allow merging of constants
-fmessage-length=<value>
Format message diagnostics so that they fit within N columns
-fminimize-whitespace Ignore the whitespace from the input file when emitting preprocessor output. It will only contain whitespace when necessary, e.g. to keep two minus signs from merging into to an increment operator. Useful with the -P option to normalize whitespace such that two files with only formatting changes are equal.
Only valid with -E on C-like inputs and incompatible with -traditional-cpp.
-fmodule-file=[<name>=]<file>
Specify the mapping of module name to precompiled module file, or load a module file if name is omitted.
-fmodule-header=<kind> Build a C++20 Header Unit from a header that should be found in the user (fmodule-header=user) or system (fmodule-header=system) search path.
-fmodule-header Build a C++20 Header Unit from a header
-fmodule-map-file=<file>
Load this module map file
-fmodule-name=<name> Specify the name of the module to build
-fmodule-output=<value> Save intermediate module file results when compiling a standard C++ module unit.
-fmodule-output Save intermediate module file results when compiling a standard C++ module unit.
-fmodules-cache-path=<directory>
Specify the module cache path
-fmodules-decluse Require declaration of modules used within a module
-fmodules-disable-diagnostic-validation
Disable validation of the diagnostic options when loading the module
-fmodules-ignore-macro=<value>
Ignore the definition of the given macro when building and loading modules
-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-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-user-build-path <directory>
Specify the module user build path
-fmodules-validate-input-files-content
Validate PCM input files based on content if mtime differs
-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
Validate the system headers that a module depends on when loading the module
-fmodules Enable the 'modules' language feature
-fms-compatibility-version=<value>
Dot-separated value representing the Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))
-fms-compatibility Enable full Microsoft Visual C++ compatibility
-fms-define-stdc Define '__STDC__' to '1' in MSVC Compatibility mode
-fms-extensions Accept some non-standard constructs supported by the Microsoft compiler
-fms-hotpatch Ensure that all functions can be hotpatched at runtime
-fms-runtime-lib=<value>
Select Windows run-time library
-fms-volatile Volatile loads and stores have acquire and release semantics
-fmsc-version=<value> Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))
-fnew-alignment=<align> Specifies the largest alignment guaranteed by '::operator new(size_t)'
-fnew-infallible Enable treating throwing global C++ operator new as always returning valid memory (annotates with __attribute__((returns_nonnull)) and throw()). This is detectable in source.
-fno-aapcs-bitfield-width
Do not follow the AAPCS standard requirement stating that volatile bit-field width is dictated by the field container type. (ARM only).
-fno-access-control Disable C++ access control
-fno-addrsig Don't emit an address-significance table
-fno-apinotes-modules Disable module-based external API notes support
-fno-apinotes Disable external API notes support
-fno-assume-sane-operator-new
Don't assume that C++'s global operator new can't alias any pointer
-fno-assume-unique-vtables
Disable optimizations based on vtable pointer identity
-fno-assumptions Disable codegen and compile-time checks for C++23's [[assume]] attribute
-fno-auto-import MinGW specific. Disable support for automatic dllimport in code generation and linking
-fno-autolink Disable generation of linker directives for automatic library linking
-fno-builtin-<value> Disable implicit builtin knowledge of a specific function
-fno-builtin Disable implicit builtin knowledge of functions
-fno-c++-static-destructors
Disable C++ static destructor registration
-fno-char8_t Disable C++ builtin type char8_t
-fno-clangir Use the AST -> LLVM pipeline to compile
-fno-color-diagnostics Disable colors in diagnostics
-fno-common Compile common globals like normal definitions
-fno-complete-member-pointers
Do not require member pointer base types to be complete if they would be significant under the Microsoft ABI
-fno-constant-cfstrings Disable creation of CodeFoundation-type constant strings
-fno-convergent-functions
Assume all functions may be convergent.
-fno-coverage-mapping Disable code coverage analysis
-fno-coverage-mcdc Disable MC/DC coverage criteria
-fno-crash-diagnostics Disable auto-generation of preprocessed source files and a script for reproduction during a clang crash
-fno-cx-fortran-rules Range reduction is disabled for complex arithmetic operations
-fno-cx-limited-range Basic algebraic expansions of complex arithmetic operations involving are disabled.
-fno-cxx-modules Disable modules for C++
-fno-debug-macro Do not emit macro debug information
-fno-declspec Disallow __declspec as a keyword
-fno-define-target-os-macros
Disable predefined target OS macros
-fno-delayed-template-parsing
Disable delayed template parsing
-fno-delete-null-pointer-checks
Do not treat usage of null pointers as undefined behavior
-fno-diagnostics-fixit-info
Do not include fixit information in diagnostics
-fno-diagnostics-show-line-numbers
Show line numbers in diagnostic code snippets
-fno-digraphs Disallow alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:'
-fno-direct-access-external-data
Use GOT indirection to reference external data symbols
-fno-disable-block-signature-string
Don't disable block signature string)
-fno-discard-value-names
Do not discard value names in LLVM IR
-fno-dollars-in-identifiers
Disallow '$' in identifiers
-fno-elide-constructors Disable C++ copy constructor elision
-fno-elide-type Do not elide types when printing diagnostics
-fno-eliminate-unused-debug-types
Emit debug info for defined but unused types
-fno-exceptions Disable support for exception handling
-fno-experimental-late-parse-attributes
Disable experimental late parsing of attributes
-fno-experimental-relative-c++-abi-vtables
Do not use the experimental C++ class ABI for classes with virtual tables
-fno-experimental-sanitize-metadata=<value>
Disable emitting metadata for binary analysis sanitizers
-fno-fat-lto-objects Disable fat LTO object support
-fno-file-reproducible Use the host's platform-specific path separator character when expanding the __FILE__ macro
-fno-fine-grained-bitfield-accesses
Use large-integer access for consecutive bitfield runs.
-fno-finite-loops Do not assume that any loop is finite.
-fno-fixed-point Disable fixed point types
-fno-force-enable-int128
Disable support for int128_t type
-fno-global-isel Disables the global instruction selector
-fno-gnu-inline-asm Disable GNU style inline asm
-fno-gpu-allow-device-init
Don't allow device side init function in HIP (experimental)
-fno-gpu-approx-transcendentals
Don't use approximate transcendental functions
-fno-gpu-defer-diag Don't defer host/device related diagnostic messages for CUDA/HIP
-fno-hip-emit-relocatable
Do not override toolchain to compile HIP source to relocatable
-fno-hip-fp32-correctly-rounded-divide-sqrt
Don't specify that single precision floating-point divide and sqrt used in the program source are correctly rounded (HIP device compilation only)
-fno-hip-kernel-arg-name
Don't specify that kernel argument names are preserved (HIP only)
-fno-hip-new-launch-api Don't use new kernel launching API for HIP
-fno-integrated-as Disable the integrated assembler
-fno-integrated-cc1 Spawn a separate process for each cc1
-fno-integrated-objemitter
Use external machine object code emitter.
-fno-jump-tables Do not use jump tables for lowering switches
-fno-keep-persistent-storage-variables
Disable keeping all variables that have a persistent storage duration, including global, static and thread-local variables, to guarantee that they can be directly addressed
-fno-keep-static-consts Don't keep static const variables even if unused
-fno-knr-functions Disable support for K&R C function declarations
-fno-lto Disable LTO mode (default)
-fno-memory-profile Disable heap memory profiling
-fno-merge-all-constants
Disallow merging of constants
-fno-modules-check-relocated<value>
Skip checks for relocated modules when loading PCM files
-fno-modules-validate-textual-header-includes
Do not enforce -fmodules-decluse and private header restrictions for textual headers. This flag will be removed in a future Clang release.
-fno-new-infallible Disable treating throwing global C++ operator new as always returning valid memory (annotates with __attribute__((returns_nonnull)) and throw()). This is detectable in source.
-fno-objc-avoid-heapify-local-blocks
Don't try to avoid heapifying local blocks
-fno-objc-infer-related-result-type
do not infer Objective-C related result type based on method family
-fno-offload-lto Disable LTO mode (default) for offload compilation
-fno-offload-uniform-block
Don't assume that kernels are launched with uniform block sizes (default true for CUDA/HIP and false otherwise)
-fno-openmp-extensions Disable all Clang extensions for OpenMP directives and clauses
-fno-operator-names Do not treat C++ operator name keywords as synonyms for operators
-fno-optimize-sibling-calls
Disable tail call optimization, keeping the call stack accurate
-fno-pch-codegen Do not generate code for uses of this PCH that assumes an explicit object file will be built for the PCH
-fno-pch-debuginfo Do not generate debug info for types in an object file built from this PCH and do not generate them elsewhere
-fno-plt Use GOT indirection instead of PLT to make external function calls (x86 only)
-fno-preserve-as-comments
Do not preserve comments in inline assembly
-fno-profile-generate Disable generation of profile instrumentation.
-fno-profile-instr-generate
Disable generation of profile instrumentation.
-fno-profile-instr-use Disable using instrumentation data for profile-guided optimization
-fno-pseudo-probe-for-profiling
Do not emit pseudo probes for sample profiling
-fno-raw-string-literals
Disable raw string literals
-fno-register-global-dtors-with-atexit
Don't use atexit or __cxa_atexit to register global destructors
-fno-relaxed-template-template-args
Disable C++17 relaxed template template argument matching
-fno-rtlib-add-rpath Do not add -rpath with architecture-specific resource directory to the linker flags. When --hip-link is specified, do not add -rpath with HIP runtime library directory to the linker flags
-fno-rtlib-defaultlib On Windows, do not emit /defaultlib: directives to link compiler-rt libraries
-fno-rtti-data Disable generation of RTTI data
-fno-rtti Disable generation of rtti information
-fno-sanitize-address-globals-dead-stripping
Disable linker dead stripping of globals in AddressSanitizer
-fno-sanitize-address-outline-instrumentation
Use default code inlining logic for the address sanitizer
-fno-sanitize-address-poison-custom-array-cookie
Disable poisoning array cookies when using custom operator new[] in AddressSanitizer
-fno-sanitize-address-use-after-scope
Disable use-after-scope detection in AddressSanitizer
-fno-sanitize-address-use-odr-indicator
Disable ODR indicator globals
-fno-sanitize-cfi-canonical-jump-tables
Do not make the jump table addresses canonical in the symbol table
-fno-sanitize-cfi-cross-dso
Disable control flow integrity (CFI) checks for cross-DSO calls.
-fno-sanitize-coverage=<value>
Disable features of coverage instrumentation for Sanitizers
-fno-sanitize-hwaddress-experimental-aliasing
Disable aliasing mode in HWAddressSanitizer
-fno-sanitize-ignorelist
Don't use ignorelist file for sanitizers
-fno-sanitize-memory-param-retval
Disable detection of uninitialized parameters and return values
-fno-sanitize-memory-track-origins
Disable origins tracking in MemorySanitizer
-fno-sanitize-memory-use-after-dtor
Disable use-after-destroy detection in MemorySanitizer
-fno-sanitize-recover=<value>
Disable recovery for specified sanitizers
-fno-sanitize-stable-abi
Conventional ABI instrumentation for sanitizer runtime. Default: Conventional
-fno-sanitize-stats Disable sanitizer statistics gathering.
-fno-sanitize-thread-atomics
Disable atomic operations instrumentation in ThreadSanitizer
-fno-sanitize-thread-func-entry-exit
Disable function entry/exit instrumentation in ThreadSanitizer
-fno-sanitize-thread-memory-access
Disable memory access instrumentation in ThreadSanitizer
-fno-sanitize-trap=<value>
Disable trapping for specified sanitizers
-fno-sanitize-trap Disable trapping for all sanitizers
-fno-short-wchar Force wchar_t to be an unsigned int
-fno-show-column Do not include column number on diagnostics
-fno-show-source-location
Do not include source location information with diagnostics
-fno-signed-char char is unsigned
-fno-signed-zeros Allow optimizations that ignore the sign of floating point zeros
-fno-skip-odr-check-in-gmf
Perform ODR checks for decls in the global module fragment.
-fno-spell-checking Disable spell-checking
-fno-split-machine-functions
Disable late function splitting using profile information (x86 ELF)
-fno-split-stack Wouldn't use segmented stack
-fno-stack-clash-protection
Disable stack clash protection
-fno-stack-protector Disable the use of stack protectors
-fno-standalone-debug Limit debug information produced to reduce size of debug binary
-fno-strict-aliasing Disable optimizations based on strict aliasing rules
-fno-strict-float-cast-overflow
Relax language rules and try to match the behavior of the target's native float-to-int conversion instructions
-fno-strict-return Don't treat control flow paths that fall off the end of a non-void function as unreachable
-fno-sycl Disables SYCL kernels compilation for device
-fno-temp-file Directly create compilation output files. This may lead to incorrect incremental builds if the compiler crashes
-fno-threadsafe-statics Do not emit code to make initialization of local statics thread safe
-fno-trigraphs Do not process trigraph sequences
-fno-unified-lto Use distinct LTO pipelines
-fno-unique-section-names
Don't use unique names for text and data sections
-fno-unroll-loops Turn off loop unroller
-fno-use-cxa-atexit Don't use __cxa_atexit for calling destructors
-fno-use-init-array Use .ctors/.dtors instead of .init_array/.fini_array
-fno-verify-intermediate-code
Disable verification of LLVM IR
-fno-visibility-inlines-hidden-static-local-var
Disables -fvisibility-inlines-hidden-static-local-var (this is the default on non-darwin targets)
-fno-xray-function-index
Omit function index section at the expense of single-function patching performance
-fno-zero-initialized-in-bss
Don't place zero initialized data in BSS
-fobjc-arc-exceptions Use EH-safe code when synthesizing retains and releases in -fobjc-arc
-fobjc-arc Synthesize retain and release calls for Objective-C pointers
-fobjc-avoid-heapify-local-blocks
Try to avoid heapifying local blocks
-fobjc-disable-direct-methods-for-testing
Ignore attribute objc_direct so that direct methods can be tested
-fobjc-encode-cxx-class-template-spec
Fully encode c++ class template specialization
-fobjc-exceptions Enable Objective-C exceptions
-fobjc-runtime=<value> Specify the target Objective-C runtime kind and version
-fobjc-weak Enable ARC-style weak references in Objective-C
-foffload-implicit-host-device-templates
Template functions or specializations without host, device and global attributes have implicit host device attributes (CUDA/HIP only)
-foffload-lto=<value> Set LTO mode for offload compilation
-foffload-lto Enable LTO in 'full' mode for offload compilation
-foffload-uniform-block Assume that kernels are launched with uniform block sizes (default true for CUDA/HIP and false otherwise)
-fomit-frame-pointer Omit the frame pointer from functions that don't need it. Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. On many targets, -O1 and higher omit the frame pointer by default. -m[no-]omit-leaf-frame-pointer takes precedence for leaf functions
-fopenacc Enable OpenACC
-fopenmp-extensions Enable all Clang extensions for OpenMP directives and clauses
-fopenmp-force-usm Force behvaior as if the user specified pragma omp requires unified_shared_memory.
-fopenmp-offload-mandatory
Do not create a host fallback if offloading to the device fails.
-fopenmp-simd Emit OpenMP code only for SIMD-based constructs.
-fopenmp-target-debug Enable debugging in the OpenMP offloading device RTL
-fopenmp-target-jit Emit code that can be JIT compiled for OpenMP offloading. Implies -foffload-lto=full
-fopenmp-targets=<value>
Specify comma-separated list of triples OpenMP offloading targets to be supported
-fopenmp-version=<value>
Set OpenMP version (e.g. 45 for OpenMP 4.5, 51 for OpenMP 5.1). Default value is 51 for Clang
-fopenmp Parse OpenMP pragmas and generate parallel code.
-foperator-arrow-depth=<value>
Maximum number of 'operator->'s to call for a member access
-foptimization-record-file=<file>
Specify the output name of the file containing the optimization remarks. Implies -fsave-optimization-record. On Darwin platforms, this cannot be used with multiple -arch <arch> options.
-foptimization-record-passes=<regex>
Only include passes which match a specified regular expression in the generated optimization record (by default, include all passes)
-forder-file-instrumentation
Generate instrumented code to collect order file into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)
-fpack-struct=<value> Specify the default maximum struct packing alignment
-fpascal-strings Recognize and construct Pascal-style string literals
-fpass-plugin=<dsopath> Load pass plugin from a dynamic shared object file (only with new pass manager).
-fpatchable-function-entry=<N,M>
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-codegen Generate code for uses of this PCH that assumes an explicit object file will be built for the PCH
-fpch-debuginfo Generate debug info for types in an object file built from this PCH and do not generate them elsewhere
-fpch-instantiate-templates
Instantiate templates already while building a PCH
-fpch-validate-input-files-content
Validate PCH input files based on content if mtime differs
-fplugin-arg-<name>-<arg>
Pass <arg> to plugin <name>
-fplugin=<dsopath> Load the named plugin (dynamic shared object)
-fprebuilt-implicit-modules
Look up implicit modules in the prebuilt module path
-fprebuilt-module-path=<directory>
Specify the prebuilt module path
-fproc-stat-report=<value>
Save subprocess statistics to the given file
-fproc-stat-report<value>
Print subprocess statistics
-fprofile-arcs Instrument code to produce gcov data files (*.gcda)
-fprofile-exclude-files=<value>
Instrument only functions from files where names don't match all the regexes separated by a semi-colon
-fprofile-filter-files=<value>
Instrument only functions from files where names match any regex separated by a semi-colon
-fprofile-function-groups=<N>
Partition functions into N groups and select only functions in group i to be instrumented using -fprofile-selected-function-group
-fprofile-generate=<directory>
Generate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)
-fprofile-generate Generate instrumented code to collect execution counts into default.profraw (overridden by 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-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-use=<value>
Use instrumentation data for profile-guided optimization
-fprofile-list=<value> Filename defining the list of functions/files to instrument. The file uses the sanitizer special case list format.
-fprofile-remapping-file=<file>
Use the remappings described in <file> to match the profile data against names in the program
-fprofile-sample-accurate
Specifies that the sample profile is accurate
-fprofile-sample-use=<value>
Enable sample-based profile guided optimizations
-fprofile-selected-function-group=<i>
Partition functions into N groups using -fprofile-function-groups and select only functions in group i to be instrumented. The valid range is 0 to N-1 inclusive
-fprofile-update=<method>
Set update method of profile counters
-fprofile-use=<pathname>
Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from <pathname>/default.profdata. Otherwise, it reads from file <pathname>.
-fprotect-parens Determines whether the optimizer honors parentheses when floating-point expressions are evaluated
-fpseudo-probe-for-profiling
Emit pseudo probes for sample profiling
-fptrauth-auth-traps Enable traps on authentication failures
-fptrauth-calls Enable signing and authentication of all indirect calls
-fptrauth-function-pointer-type-discrimination
Enable type discrimination on C function pointers
-fptrauth-indirect-gotos
Enable signing and authentication of indirect goto targets
-fptrauth-init-fini Enable signing of function pointers in init/fini arrays
-fptrauth-intrinsics Enable pointer authentication intrinsics
-fptrauth-returns Enable signing and authentication of return addresses
-fptrauth-type-info-vtable-pointer-discrimination
Enable type and address discrimination of vtable pointer of std::type_info
-fptrauth-vtable-pointer-address-discrimination
Enable address discrimination of vtable pointers
-fptrauth-vtable-pointer-type-discrimination
Enable type discrimination of vtable pointers
-frandomize-layout-seed-file=<file>
File holding the seed used by the randomize structure layout feature
-frandomize-layout-seed=<seed>
The seed used by the randomize structure layout feature
-fraw-string-literals Enable raw string literals
-freciprocal-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
Use atexit or __cxa_atexit to register global destructors
-frelaxed-template-template-args
Enable C++17 relaxed template template argument matching
-fropi Generate read-only position independent code (ARM only)
-frtlib-add-rpath Add -rpath with architecture-specific resource directory to the linker flags. When --hip-link is specified, also add -rpath with HIP runtime library directory to the linker flags
-frtlib-defaultlib On Windows, emit /defaultlib: directives to link compiler-rt libraries (default)
-frwpi Generate read-write position independent code (ARM only)
-fsafe-buffer-usage-suggestions
Display suggestions to update code associated with -Wunsafe-buffer-usage warnings
-fsample-profile-use-profi
Use profi to infer block and edge counts
-fsanitize-address-destructor=<value>
Set the kind of module destructors emitted by AddressSanitizer instrumentation. These destructors are emitted to unregister instrumented global variables when code is unloaded (e.g. via `dlclose()`).
-fsanitize-address-field-padding=<value>
Level of field padding for AddressSanitizer
-fsanitize-address-globals-dead-stripping
Enable linker dead stripping of globals in AddressSanitizer
-fsanitize-address-outline-instrumentation
Always generate function calls for address sanitizer instrumentation
-fsanitize-address-poison-custom-array-cookie
Enable poisoning array cookies when using custom operator new[] in AddressSanitizer
-fsanitize-address-use-after-return=<mode>
Select the mode of detecting stack use-after-return in AddressSanitizer
-fsanitize-address-use-after-scope
Enable use-after-scope detection in AddressSanitizer
-fsanitize-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-cfi-canonical-jump-tables
Make the jump table addresses canonical in the symbol table
-fsanitize-cfi-cross-dso
Enable control flow integrity (CFI) checks for cross-DSO calls.
-fsanitize-cfi-icall-experimental-normalize-integers
Normalize integers in CFI indirect call type signature checks
-fsanitize-cfi-icall-generalize-pointers
Generalize pointers in CFI indirect call type signature checks
-fsanitize-coverage-allowlist=<value>
Restrict sanitizer coverage instrumentation exclusively to modules and functions that match the provided special case list, except the blocked ones
-fsanitize-coverage-ignorelist=<value>
Disable sanitizer coverage instrumentation for modules and functions that match the provided special case list, even the allowed ones
-fsanitize-coverage=<value>
Specify the type of coverage instrumentation for Sanitizers
-fsanitize-hwaddress-abi=<value>
Select the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor). This option is currently unused.
-fsanitize-hwaddress-experimental-aliasing
Enable aliasing mode in HWAddressSanitizer
-fsanitize-ignorelist=<value>
Path to ignorelist file for sanitizers
-fsanitize-memory-param-retval
Enable detection of uninitialized parameters and return values
-fsanitize-memory-track-origins=<value>
Enable origins tracking in MemorySanitizer
-fsanitize-memory-track-origins
Enable origins tracking in MemorySanitizer
-fsanitize-memory-use-after-dtor
Enable use-after-destroy detection in MemorySanitizer
-fsanitize-memtag-mode=<value>
Set default MTE mode to 'sync' (default) or 'async'
-fsanitize-recover=<value>
Enable recovery for specified sanitizers
-fsanitize-stable-abi Stable ABI instrumentation for sanitizer runtime. Default: Conventional
-fsanitize-stats Enable sanitizer statistics gathering.
-fsanitize-system-ignorelist=<value>
Path to system ignorelist file for sanitizers
-fsanitize-thread-atomics
Enable atomic operations instrumentation in ThreadSanitizer (default)
-fsanitize-thread-func-entry-exit
Enable function entry/exit instrumentation in ThreadSanitizer (default)
-fsanitize-thread-memory-access
Enable memory access instrumentation in ThreadSanitizer (default)
-fsanitize-trap=<value> Enable trapping for specified sanitizers
-fsanitize-trap Enable trapping for all sanitizers
-fsanitize-undefined-strip-path-components=<number>
Strip (or keep only, if negative) a given number of path components when emitting check metadata.
-fsanitize=<check> Turn on runtime checks for various forms of undefined or suspicious behavior. See user manual for available checks
-fsave-optimization-record=<format>
Generate an optimization record file in a specific format
-fsave-optimization-record
Generate a YAML optimization record file
-fseh-exceptions Use SEH style exceptions
-fseparate-named-sections
Use separate unique sections for named sections (ELF Only)
-fshort-enums Allocate to an enum type only as many bytes as it needs for the declared range of possible values
-fshort-wchar Force wchar_t to be a short unsigned int
-fshow-overloads=<value>
Which overload candidates to show when overload resolution fails. Defaults to 'all'
-fshow-skipped-includes Show skipped includes in -H output.
-fsigned-char char is signed
-fsized-deallocation Enable C++14 sized global deallocation functions
-fsjlj-exceptions Use SjLj style exceptions
-fskip-odr-check-in-gmf Skip ODR checks for decls in the global module fragment.
-fslp-vectorize Enable the superword-level parallelism vectorization passes
-fspell-checking-limit=<value>
Set the maximum number of times to perform spell checking on unrecognized identifiers (0 = no limit)
-fsplit-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 Enables splitting of the LTO unit
-fsplit-machine-functions
Enable late function splitting using profile information (x86 ELF)
-fsplit-stack Use segmented stack
-fstack-clash-protection
Enable stack clash protection
-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-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. A function with a stack protector has a guard value added to the stack frame that is checked on function exit. The guard value must be positioned in the stack frame such that a buffer overflow from a vulnerable variable will overwrite the guard value before overwriting the function's return address. The reference stack guard value is stored in a global variable.
-fstack-size-section Emit section containing metadata on function stack sizes
-fstack-usage Emit .su file containing information on function stack sizes
-fstandalone-debug Emit full debug info for all types used by the program
-fstrict-aliasing Enable optimizations based on strict aliasing rules
-fstrict-enums Enable optimizations based on the strict definition of an enum's value range
-fstrict-flex-arrays=<n>
Enable optimizations based on the strict definition of flexible arrays
-fstrict-float-cast-overflow
Assume that overflowing float-to-int casts are undefined (default)
-fstrict-vtable-pointers
Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
-fswift-async-fp=<option>
Control emission of Swift async extended frame info
-fsycl Enables SYCL kernels compilation for device
-fsyntax-only Run the preprocessor, parser and semantic analysis stages
-fsystem-module Build this module as a system module. Only used with -emit-module
-ftemplate-backtrace-limit=<value>
Set the maximum number of entries to print in a template instantiation backtrace (0 = no limit)
-ftemplate-depth=<value>
Set the maximum depth of recursive template instantiation
-ftest-coverage Produce gcov notes files (*.gcno)
-fthin-link-bitcode=<value>
Write minimized bitcode to <file> for the ThinLTO thin link only
-fthinlto-index=<value> Perform ThinLTO importing using provided function summary index
-ftime-report=<value> (For new pass manager) 'per-pass': one report for each pass; 'per-pass-run': one report for each pass invocation
-ftime-trace-granularity=<value>
Minimum time granularity (in microseconds) traced by time profiler
-ftime-trace-verbose<value>
Make time trace capture verbose event details (e.g. source filenames). This can increase the size of the output by 2-3 times
-ftime-trace=<value> Similar to -ftime-trace. Specify the JSON file or a directory which will contain the JSON file
-ftime-trace Turn on time profiler. Generates JSON file based on output filename.
-ftrap-function=<value> Issue call to specified function rather than a trap instruction
-ftrapv-handler=<function name>
Specify the function to be called on overflow
-ftrapv Trap on integer overflow
-ftrigraphs Process trigraph sequences
-ftrivial-auto-var-init-max-size=<value>
Stop initializing trivial automatic stack variables if var size exceeds the specified number of instances (in bytes)
-ftrivial-auto-var-init-stop-after=<value>
Stop initializing trivial automatic stack variables after the specified number of instances
-ftrivial-auto-var-init=<value>
Initialize trivial automatic stack variables. Defaults to 'uninitialized'
-funified-lto Use the unified LTO pipeline
-funique-basic-block-section-names
Use unique names for basic block sections (ELF Only)
-funique-internal-linkage-names
Uniqueify Internal Linkage Symbol Names by appending the MD5 hash of the module path
-funroll-loops Turn on loop unroller
-funsafe-math-optimizations
Allow unsafe floating-point math optimizations which may decrease precision
-fuse-cuid=<value> Method to generate ID's for compilation units for single source offloading languages CUDA and HIP: 'hash' (ID's generated by hashing file path and command line options) | 'random' (ID's generated as random numbers) | 'none' (disabled). Default is 'hash'. This option will be overridden by option '-cuid=[ID]' if it is specified.
-fuse-line-directives Use #line in preprocessed output
-fvalidate-ast-input-files-content
Compute and store the hash of input files used to build an AST. Files with mismatching mtime's are considered valid if both contents is identical
-fveclib=<value> Use the given vector functions library
-fvectorize Enable the loop vectorization passes
-fverbose-asm Generate verbose assembly output
-fverify-intermediate-code
Enable verification of LLVM IR
-fvirtual-function-elimination
Enables dead virtual function elimination optimization. Requires -flto=full
-fvisibility-dllexport=<value>
The visibility for dllexport definitions. If Keep is specified the visibility is not adjusted [-fvisibility-from-dllstorageclass]
-fvisibility-externs-dllimport=<value>
The visibility for dllimport external declarations. If Keep is specified the visibility is not adjusted [-fvisibility-from-dllstorageclass]
-fvisibility-externs-nodllstorageclass=<value>
The visibility for external declarations without an explicit DLL storage class. If Keep is specified the visibility is not adjusted [-fvisibility-from-dllstorageclass]
-fvisibility-from-dllstorageclass
Override the visibility of globals based on their final DLL storage class.
-fvisibility-global-new-delete-hidden
Give global C++ operator new and delete declarations hidden visibility
-fvisibility-global-new-delete=<value>
The visibility for global C++ operator new and delete declarations. If 'source' is specified the visibility is not adjusted
-fvisibility-inlines-hidden-static-local-var
When -fvisibility-inlines-hidden is enabled, static variables in inline C++ member functions will also be given hidden visibility by default
-fvisibility-inlines-hidden
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-nodllstorageclass=<value>
The visibility for definitions without an explicit DLL storage class. If Keep is specified the visibility is not adjusted [-fvisibility-from-dllstorageclass]
-fvisibility=<value> Set the default symbol visibility for all global definitions
-fwasm-exceptions Use WebAssembly style exceptions
-fwhole-program-vtables Enables whole-program vtable optimization. Requires -flto
-fwrapv Treat signed integer overflow as two's complement
-fwritable-strings Store string literals as writable data
-fxl-pragma-pack Enable IBM XL #pragma pack handling
-fxray-always-emit-customevents
Always emit __xray_customevent(...) calls even if the containing function is not always instrumented
-fxray-always-emit-typedevents
Always emit __xray_typedevent(...) calls even if the containing function is not always instrumented
-fxray-always-instrument=<value>
DEPRECATED: Filename defining the whitelist for imbuing the 'always instrument' XRay attribute.
-fxray-attr-list=<value>
Filename defining the list of functions/types for imbuing XRay attributes.
-fxray-function-groups=<value>
Only instrument 1 of N groups
-fxray-ignore-loops Don't instrument functions with loops unless they also meet the minimum function size
-fxray-instruction-threshold=<value>
Sets the minimum function size to instrument with XRay
-fxray-instrumentation-bundle=<value>
Select which XRay instrumentation points to emit. Options: all, none, function-entry, function-exit, function, custom. Default is 'all'. 'function' includes both 'function-entry' and 'function-exit'.
-fxray-instrument Generate XRay instrumentation sleds on function entry and exit
-fxray-link-deps Link XRay runtime library when -fxray-instrument is specified (default)
-fxray-modes=<value> List of modes to link in by default into XRay instrumented binaries.
-fxray-never-instrument=<value>
DEPRECATED: Filename defining the whitelist for imbuing the 'never instrument' XRay attribute.
-fxray-selected-function-group=<value>
When using -fxray-function-groups, select which group of functions to instrument. Valid range is 0 to fxray-function-groups - 1
-fzero-call-used-regs=<value>
Clear call-used registers upon function return (AArch64/x86 only)
-fzvector Enable System z vector language extension
-F <value> Add directory to framework include search path
--gcc-install-dir=<value>
Use GCC installation in the specified directory. The directory ends with path components like 'lib{,32,64}/gcc{,-cross}/$triple/$version'. Note: executables (e.g. ld) used by the compiler are not overridden by the selected GCC installation
--gcc-toolchain=<value> Specify a directory where Clang can find 'include' and 'lib{,32,64}/gcc{,-cross}/$triple/$version'. Clang will use the GCC installation with the largest version
--gcc-triple=<value> Search for the GCC installation with the specified triple.
-gcodeview-command-line Emit compiler path and command line into CodeView debug information
-gcodeview-ghash Emit type record hashes in a .debug$H section
-gcodeview Generate CodeView debug information
-gdwarf-2 Generate source-level debug information with dwarf version 2
-gdwarf-3 Generate source-level debug information with dwarf version 3
-gdwarf-4 Generate source-level debug information with dwarf version 4
-gdwarf-5 Generate source-level debug information with dwarf version 5
-gdwarf32 Enables DWARF32 format for ELF binaries, if debug information emission is enabled.
-gdwarf64 Enables DWARF64 format for ELF binaries, if debug information emission is enabled.
-gdwarf Generate source-level debug information with the default dwarf version
-gembed-source Embed source text in DWARF debug sections
-gen-reproducer=<value> Emit reproducer on (option: off, crash (default), error, always)
-gline-directives-only Emit debug line info directives only
-gline-tables-only Emit debug line number tables only
-gmodules Generate debug info with external references to clang modules or precompiled headers
-gno-codeview-command-line
Don't emit compiler path and command line into CodeView debug information
-gno-embed-source Restore the default behavior of not embedding source text in DWARF debug sections
-gno-inline-line-tables Don't emit inline line tables.
--gpu-bundle-output Bundle output files of HIP device compilation
--gpu-instrument-lib=<value>
Instrument device library for HIP, which is a LLVM bitcode containing __cyg_profile_func_enter and __cyg_profile_func_exit
--gpu-max-threads-per-block=<value>
Default max threads per block for kernel launch bounds for HIP
-gpulibc Link the LLVM C Library for GPUs
-gsplit-dwarf=<value> Set DWARF fission mode
-gstrict-dwarf Restrict DWARF features to those defined in the specified version, avoiding features from later versions.
-gz=<value> DWARF debug sections compression type
-G <size> Put objects of at most <size> bytes into small data section (MIPS / Hexagon)
-g Generate source-level debug information
--help-hidden Display help for hidden options
-help Display available options
--hip-device-lib=<value>
HIP device library
--hip-link Link clang-offload-bundler bundles for HIP
--hip-path=<value> HIP runtime installation path, used for finding HIP version and adding HIP include path.
--hip-version=<value> HIP version in the format of major.minor.patch
--hipspv-pass-plugin=<dsopath>
path to a pass plugin for HIP to SPIR-V passes.
--hipstdpar-interpose-alloc
Replace all memory allocation / deallocation calls with hipManagedMalloc / hipFree equivalents
--hipstdpar-path=<value>
HIP Standard Parallel Algorithm Acceleration library path, used for finding and implicitly including the library header
--hipstdpar-prim-path=<value>
rocPrim path, required by the HIP Standard Parallel Algorithm Acceleration library, used to implicitly include the rocPrim library
--hipstdpar-thrust-path=<value>
rocThrust path, required by the HIP Standard Parallel Algorithm Acceleration library, used to implicitly include the rocThrust library
--hipstdpar Enable HIP acceleration for standard parallel algorithms
-H Show header includes and nesting depth
-I- Restrict all prior -I flags to double-quoted inclusion and remove current directory from include path
-iapinotes-modules <directory>
Add directory to the API notes search path referenced by module name
-ibuiltininc Enable builtin #include directories even when -nostdinc is used before or after -ibuiltininc. Using -nobuiltininc after the option disables it
-idirafter <value> Add directory to AFTER include search path
-iframeworkwithsysroot <directory>
Add directory to SYSTEM framework search path, absolute paths are relative to -isysroot
-iframework <value> Add directory to SYSTEM framework search path
-imacros <file> Include macros from file before parsing
-include-pch <file> Include precompiled header file
-include <file> Include file before parsing
-index-header-map Make the next included directory (-I or -F) an indexer header map
-iprefix <dir> Set the -iwithprefix/-iwithprefixbefore prefix
-iquote <directory> Add directory to QUOTE include search path
-isysroot <dir> Set the system root directory (usually /)
-isystem-after <directory>
Add directory to end of the SYSTEM include search path
-isystem <directory> Add directory to SYSTEM include search path
-ivfsoverlay <value> Overlay the virtual filesystem described by file over the real file system
-iwithprefixbefore <dir>
Set directory to include search path with prefix
-iwithprefix <dir> Set directory to SYSTEM include search path with prefix
-iwithsysroot <directory>
Add directory to SYSTEM include search path, absolute paths are relative to -isysroot
-I <dir> Add directory to the end of the list of include search paths
--libomptarget-amdgcn-bc-path=<value>
Path to libomptarget-amdgcn bitcode library
--libomptarget-amdgpu-bc-path=<value>
Path to libomptarget-amdgcn bitcode library
--libomptarget-nvptx-bc-path=<value>
Path to libomptarget-nvptx bitcode library
-L <dir> Add directory to library search path
-mabi=quadword-atomics Enable quadword atomics ABI on AIX (AIX PPC64 only). Uses lqarx/stqcx. instructions.
-mabicalls Enable SVR4-style position-independent code (Mips only)
-maix-shared-lib-tls-model-opt
For shared library loaded with the main program, change local-dynamic access(es) to initial-exec access(es) at the function level (AIX 64-bit only).
-maix-small-local-dynamic-tls
Produce a faster access sequence for local-dynamic TLS variables where the offset from the TLS base is encoded as an immediate operand (AIX 64-bit only). This access sequence is not used for variables larger than 32KB.
-maix-small-local-exec-tls
Produce a faster access sequence for local-exec TLS variables where the offset from the TLS base is encoded as an immediate operand (AIX 64-bit only). This access sequence is not used for variables larger than 32KB.
-maix-struct-return Return all structs in memory (PPC32 only)
-malign-branch-boundary=<value>
Specify the boundary's size to align branches
-malign-branch=<value> Specify types of branches to align
-malign-double Align doubles to two words in structs (x86 only)
-maltivec Enable AltiVec vector initializer syntax
-mamdgpu-ieee Sets the IEEE bit in the expected default floating point mode register. Floating point opcodes that support exception flag gathering quiet and propagate signaling NaN inputs per IEEE 754-2008. This option changes the ABI. (AMDGPU only)
-mamdgpu-precise-memory-op
Enable precise memory mode (AMDGPU only)
-mapx-features=<value> Enable features of APX
-mapx-inline-asm-use-gpr32
Enable use of GPR32 in inline assembly for APX
-march=<value> For a list of available architectures for the target use '-mcpu=help'
-marm64x<value> Link as a hybrid ARM64X image
-mbackchain Link stack frames through backchain on System Z
-mbranch-protection=<value>
Enforce targets of indirect branches and function returns
-mbranches-within-32B-boundaries
Align selected branches (fused, jcc, jmp) within 32-byte boundary
-mcabac Enable CABAC instructions
-mcmse Allow use of CMSE (Armv8-M Security Extensions)
-mcode-object-version=<value>
Specify code object ABI version. Defaults to 5. (AMDGPU only)
-mconstructor-aliases Enable emitting complete constructors and destructors as aliases when possible
-mcpu=<value> For a list of available CPUs for the target use '-mcpu=help'
-mcrbits Control the CR-bit tracking feature on PowerPC. ``-mcrbits`` (the enablement of CR-bit tracking support) is the default for POWER8 and above, as well as for all other CPUs when optimization is applied (-O2 and above).
-mcrc Allow use of CRC instructions (ARM/Mips only)
-mcumode Specify CU wavefront execution mode (AMDGPU only)
-mdaz-ftz Globally set the denormals-are-zero (DAZ) and flush-to-zero (FTZ) bits in the floating-point control register on program startup
-mdefault-visibility-export-mapping=<value>
Mapping between default visibility and export
-mdouble=<n Force double to be <n> bits
-MD Write a depfile containing user and system headers
-meabi <value> Set EABI type. Default depends on triple)
-membedded-data Place constants in the .rodata section instead of the .sdata section even if they meet the -G <size> threshold (MIPS)
-menable-experimental-extensions
Enable use of experimental RISC-V extensions.
-mexec-model=<value> Execution model (WebAssembly only)
-mexecute-only Disallow generation of data access to code sections (ARM only)
-mextern-sdata Assume that externally defined data is in the small data if it meets the -G <size> threshold (MIPS)
-mfentry Insert calls to fentry at function entry (x86/SystemZ only)
-mfix-cmse-cve-2021-35465
Work around VLLDM erratum CVE-2021-35465 (ARM only)
-mfix-cortex-a53-835769 Workaround Cortex-A53 erratum 835769 (AArch64 only)
-mfix-cortex-a57-aes-1742098
Work around Cortex-A57 Erratum 1742098 (ARM only)
-mfix-cortex-a72-aes-1655431
Work around Cortex-A72 Erratum 1655431 (ARM only)
-mforced-sw-shadow-stack
Force using software shadow stack when shadow-stack enabled
-mfp32 Use 32-bit floating point registers (MIPS only)
-mfp64 Use 64-bit floating point registers (MIPS only)
-mframe-chain=<value> Select the frame chain model used to emit frame records (Arm only).
-mfunction-return=<value>
Replace returns with jumps to ``__x86_return_thunk`` (x86 only, error otherwise)
-MF <file> Write depfile output from -MMD, -MD, -MM, or -M to <file>
-mgeneral-regs-only Generate code which only uses the general purpose registers (AArch64/x86 only)
-mglobal-merge Enable merging of globals
-mgpopt Use GP relative accesses for symbols known to be in a small data section (MIPS)
-mguard=<value> Enable or disable Control Flow Guard checks and guard tables emission
-MG Add missing headers to depfile
-mharden-sls=<value> Select straight-line speculation hardening scope (ARM/AArch64/X86 only). <arg> must be: all, none, retbr(ARM/AArch64), blr(ARM/AArch64), comdat(ARM/AArch64), nocomdat(ARM/AArch64), return(X86), indirect-jmp(X86)
-mhvx-ieee-fp Enable Hexagon HVX IEEE floating-point
-mhvx-length=<value> Set Hexagon Vector Length
-mhvx-qfloat Enable Hexagon HVX QFloat instructions
-mhvx=<value> Enable Hexagon Vector eXtensions
-mhvx Enable Hexagon Vector eXtensions
-miamcu Use Intel MCU ABI
-mignore-xcoff-visibility
Not emit the visibility attribute for asm in AIX OS or give all symbols 'unspecified' visibility in XCOFF object file
--migrate Run the migrator
-mincremental-linker-compatible
(integrated-as) Emit an object file which can be used with an incremental linker
-mindirect-branch-cs-prefix
Add cs prefix to call and jmp to indirect thunk
-mindirect-jump=<value> Change indirect jump instructions to inhibit speculation
-mios-version-min=<value>
Set iOS deployment target
-MJ <value> Write a compilation database entry per input
-mlasx Enable Loongson Advanced SIMD Extension (LASX).
-mlink-builtin-bitcode-postopt
Link builtin bitcodes after the optimization pipeline
-mllvm=<arg> Alias for -mllvm
-mllvm <value> Additional arguments to forward to LLVM's option processing
-mlocal-sdata Extend the -G behaviour to object local data (MIPS)
-mlong-calls Generate branches with extended addressability, usually via indirect jumps.
-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
-mlr-for-calls-only Do not allocate the LR register for general purpose usage, only for calls. (AArch64 only)
-mlsx Enable Loongson SIMD Extension (LSX).
-mlvi-cfi Enable only control-flow mitigations for Load Value Injection (LVI)
-mlvi-hardening Enable all mitigations for Load Value Injection (LVI)
-mmacos-version-min=<value>
Set macOS deployment target
-mmadd4 Enable the generation of 4-operand madd.s, madd.d and related instructions.
-mmark-bti-property Add .note.gnu.property with BTI to assembly files (AArch64 only)
-MMD Write a depfile containing user headers
-mmemops Enable generation of memop instructions
-mmlir <value> Additional arguments to forward to MLIR's option processing
-mms-bitfields Set the default structure layout to be compatible with the Microsoft compiler standard
-mmsa Enable MSA ASE (MIPS only)
-mmt Enable MT ASE (MIPS only)
-MM Like -MMD, but also implies -E and writes to stdout by default
-mno-abicalls Disable SVR4-style position-independent code (Mips only)
-mno-amdgpu-precise-memory-op
Disable precise memory mode (AMDGPU only)
-mno-apx-features=<value>
Disable features of APX
-mno-bti-at-return-twice
Do not add a BTI instruction after a setjmp or other return-twice construct (Arm/AArch64 only)
-mno-constructor-aliases
Disable emitting complete constructors and destructors as aliases when possible
-mno-crc Disallow use of CRC instructions (Mips only)
-mno-cumode Specify WGP wavefront execution mode (AMDGPU only)
-mno-daz-ftz Do not globally set the denormals-are-zero (DAZ) and flush-to-zero (FTZ) bits in the floating-point control register on program startup
-mno-embedded-data Do not place constants in the .rodata section instead of the .sdata if they meet the -G <size> threshold (MIPS)
-mno-execute-only Allow generation of data access to code sections (ARM only)
-mno-extern-sdata Do not assume that externally defined data is in the small data if it meets the -G <size> threshold (MIPS)
-mno-fix-cmse-cve-2021-35465
Don't work around VLLDM erratum CVE-2021-35465 (ARM only)
-mno-fix-cortex-a53-835769
Don't workaround Cortex-A53 erratum 835769 (AArch64 only)
-mno-fix-cortex-a57-aes-1742098
Don't work around Cortex-A57 Erratum 1742098 (ARM only)
-mno-fix-cortex-a72-aes-1655431
Don't work around Cortex-A72 Erratum 1655431 (ARM only)
-mno-fmv Disable function multiversioning
-mno-forced-sw-shadow-stack
Not force using software shadow stack when shadow-stack enabled
-mno-gather Disable generation of gather instructions in auto-vectorization(x86 only)
-mno-global-merge Disable merging of globals
-mno-gpopt Do not use GP relative accesses for symbols known to be in a small data section (MIPS)
-mno-hvx-ieee-fp Disable Hexagon HVX IEEE floating-point
-mno-hvx-qfloat Disable Hexagon HVX QFloat instructions
-mno-hvx Disable Hexagon Vector eXtensions
-mno-implicit-float Don't generate implicit floating point or vector instructions
-mno-incremental-linker-compatible
(integrated-as) Emit an object file which cannot be used with an incremental linker
-mno-lasx Disable Loongson Advanced SIMD Extension (LASX).
-mno-local-sdata Do not extend the -G behaviour to object local data (MIPS)
-mno-long-calls Restore the default behaviour of not generating long calls
-mno-lsx Disable Loongson SIMD Extension (LSX).
-mno-lvi-cfi Disable control-flow mitigations for Load Value Injection (LVI)
-mno-lvi-hardening Disable mitigations for Load Value Injection (LVI)
-mno-madd4 Disable the generation of 4-operand madd.s, madd.d and related instructions.
-mno-memops Disable generation of memop instructions
-mno-movt Disallow use of movt/movw pairs (ARM only)
-mno-ms-bitfields Do not set the default structure layout to be compatible with the Microsoft compiler standard
-mno-msa Disable MSA ASE (MIPS only)
-mno-mt Disable MT ASE (MIPS only)
-mno-neg-immediates Disallow converting instructions with negative immediates to their negation or inversion.
-mno-nvj Disable generation of new-value jumps
-mno-nvs Disable generation of new-value stores
-mno-outline-atomics Don't generate local calls to out-of-line atomic operations
-mno-outline Disable function outlining (AArch64 only)
-mno-packets Disable generation of instruction packets
-mno-pic-data-is-text-relative
Don't assume data segments are relative to text segment
-mno-regnames Use only register numbers when writing assembly output
-mno-relax Disable linker relaxation
-mno-restrict-it Allow generation of complex IT blocks.
-mno-save-restore Disable using library calls for save and restore
-mno-scalar-strict-align
Allow scalar memory accesses to be unaligned (RISC-V only)
-mno-scatter Disable generation of scatter instructions in auto-vectorization(x86 only)
-mno-seses Disable speculative execution side effect suppression (SESES)
-mno-stack-arg-probe Disable stack probes which are enabled by default
-mno-strict-align Allow memory accesses to be unaligned (AArch64/LoongArch/RISC-V only)
-mno-tgsplit Disable threadgroup split execution mode (AMDGPU only)
-mno-tls-direct-seg-refs
Disable direct TLS access through segment registers
-mno-tocdata=<value> Specifies a list of variables to be exempt from the TOC datatransformation.
-mno-tocdata This is the default. TOC data transformation is not applied to anyvariables. Only variables specified explicitly in -mtocdata= willhave the TOC data transformation.
-mno-unaligned-access Force all memory accesses to be aligned (AArch32/MIPSr6 only)
-mno-unaligned-symbols Expect external char-aligned symbols to be without ABI alignment (SystemZ only)
-mno-vector-strict-align
Allow vector memory accesses to be unaligned (RISC-V only)
-mno-wavefrontsize64 Specify wavefront size 32 mode (AMDGPU only)
-mnocrc Disallow use of CRC instructions (ARM only)
-mnop-mcount Generate mcount/__fentry__ calls as nops. To activate they need to be patched in.
-mnvj Enable generation of new-value jumps
-mnvs Enable generation of new-value stores
-module-dependency-dir <value>
Directory to dump module dependencies to
-module-file-info Provide information about a particular module file
-momit-leaf-frame-pointer
Omit frame pointer setup for leaf functions
-moutline-atomics Generate local calls to out-of-line atomic operations
-moutline Enable function outlining (AArch64 only)
-mpacked-stack Use packed stack layout (SystemZ only).
-mpackets Enable generation of instruction packets
-mpad-max-prefix-size=<value>
Specify maximum number of prefixes to use for padding
-mpic-data-is-text-relative
Assume data segments are relative to text segment
-mprefer-vector-width=<value>
Specifies preferred vector width for auto-vectorization. Defaults to 'none' which allows target specific decisions.
-mprintf-kind=<value> Specify the printf lowering scheme (AMDGPU only), allowed values are "hostcall"(printing happens during kernel execution, this scheme relies on hostcalls which require system to support pcie atomics) and "buffered"(printing happens after all kernel threads exit, this uses a printf buffer and does not rely on pcie atomic support)
-MP Create phony target for each dependency (other than main file)
-mqdsp6-compat Enable hexagon-qdsp6 backward compatibility
-MQ <value> Specify name of main file output to quote in depfile
-mrecip=<value> Control use of approximate reciprocal and reciprocal square root instructions followed by <n> iterations of Newton-Raphson refinement. <value> = ( ['!'] ['vec-'] ('rcp'|'sqrt') [('h'|'s'|'d')] [':'<n>] ) | 'all' | 'default' | 'none'
-mrecip Equivalent to '-mrecip=all'
-mrecord-mcount Generate a __mcount_loc section entry for each __fentry__ call.
-mregnames Use full register names when writing assembly output
-mrelax-all (integrated-as) Relax all machine instructions
-mrelax Enable linker relaxation
-mrestrict-it Disallow generation of complex IT blocks. It is off by default.
-mrtd Make StdCall calling convention the default
-mrvv-vector-bits=<value>
Specify the size in bits of an RVV vector register
-msave-restore Enable using library calls for save and restore
-mscalar-strict-align Force all scalar memory accesses to be aligned (RISC-V only)
-mseses Enable speculative execution side effect suppression (SESES). Includes LVI control flow integrity mitigations
-msign-return-address=<value>
Select return address signing scope
-msimd=<value> Select the SIMD extension(s) to be enabled in LoongArch either 'none', 'lsx', 'lasx'.
-mskip-rax-setup Skip setting up RAX register when passing variable arguments (x86 only)
-msmall-data-limit=<value>
Put global and static data smaller than the limit into a special section
-msoft-float Use software floating point
-msse2avx Specify that the assembler should encode SSE instructions with VEX prefix
-mstack-alignment=<value>
Set the stack alignment
-mstack-arg-probe Enable stack probes
-mstack-probe-size=<value>
Set the stack probe size
-mstack-protector-guard-offset=<value>
Use the given offset for addressing the stack-protector guard
-mstack-protector-guard-reg=<value>
Use the given reg for addressing the stack-protector guard
-mstack-protector-guard-symbol=<value>
Use the given symbol for addressing the stack-protector guard
-mstack-protector-guard=<value>
Use the given guard (global, tls) for addressing the stack-protector guard
-mstackrealign Force realign the stack at entry to every function
-mstrict-align Force all memory accesses to be aligned (AArch64/LoongArch/RISC-V only)
-msve-vector-bits=<value>
Specify the size in bits of an SVE vector register. Defaults to the vector length agnostic value of "scalable". (AArch64 only)
-msvr4-struct-return Return small structs in registers (PPC32 only)
-mtargetos=<value> Set the deployment target to be the specified OS and OS version
-mtgsplit Enable threadgroup split execution mode (AMDGPU only)
-mthread-model <value> The thread model to use. Defaults to 'posix')
-mtls-dialect=<value> Which thread-local storage dialect to use for dynamic accesses of TLS variables
-mtls-direct-seg-refs Enable direct TLS access through segment registers (default)
-mtls-size=<value> Specify bit size of immediate TLS offsets (AArch64 ELF only): 12 (for 4KB) | 24 (for 16MB, default) | 32 (for 4GB) | 48 (for 256TB, needs -mcmodel=large)
-mtocdata=<value> Specifies a list of variables to which the TOC data transformationwill be applied.
-mtocdata All suitable variables will have the TOC data transformation applied
-mtp=<value> Thread pointer access method. For AArch32: 'soft' uses a function call, or 'tpidrurw', 'tpidruro' or 'tpidrprw' use the three CP15 registers. 'cp15' is an alias for 'tpidruro'. For AArch64: 'tpidr_el0', 'tpidr_el1', 'tpidr_el2', 'tpidr_el3' or 'tpidrro_el0' use the five system registers. 'elN' is an alias for 'tpidr_elN'.
-mtune=<value> Only supported on AArch64, PowerPC, RISC-V, SPARC, SystemZ, and X86
-MT <value> Specify name of main file output in depfile
-munaligned-access Allow memory accesses to be unaligned (AArch32/MIPSr6 only)
-munaligned-symbols Expect external char-aligned symbols to be without ABI alignment (SystemZ only)
-munsafe-fp-atomics Enable generation of unsafe floating point atomic instructions. May generate more efficient code, but may not respect rounding and denormal modes, and may give incorrect results for certain memory destinations. (AMDGPU only)
-mvector-strict-align Force all vector memory accesses to be aligned (RISC-V only)
-mvevpu Emit VPU instructions for VE
-MV Use NMake/Jom format for the depfile
-mwavefrontsize64 Specify wavefront size 64 mode (AMDGPU only)
-mxcoff-build-id=<0xHEXSTRING>
On AIX, request creation of a build-id string, "0xHEXSTRING", in the string table of the loader section inside the linked binary
-mxcoff-roptr Place constant objects with relocatable address values in the RO data section and add -bforceimprw to the linker flags (AIX only)
-mzos-hlq-clang=<ClangHLQ>
High level qualifier for z/OS C++RT side deck datasets
-mzos-hlq-csslib=<CsslibHLQ>
High level qualifier for z/OS CSSLIB dataset
-mzos-hlq-le=<LeHLQ> High level qualifier for z/OS Language Environment datasets
-mzos-sys-include=<SysInclude>
Path to system headers on z/OS
-M Like -MD, but also implies -E and writes to stdout by default
--no-cuda-include-ptx=<value>
Do not include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.
--no-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-default-config Disable loading default configuration files
--no-gpu-bundle-output Do not bundle output files of HIP device compilation
-no-hip-rt Do not link against HIP runtime libraries
--no-offload-arch=<value>
Remove CUDA/HIP offloading device architecture (e.g. sm_35, gfx906) from the list of devices to compile for. 'all' resets the list to its default value.
--no-offload-new-driver Don't Use the new driver for offloading compilation.
--no-system-header-prefix=<prefix>
Treat all #include paths starting with <prefix> as not including a system header.
--no-wasm-opt Disable the wasm-opt optimizer
-nobuiltininc Disable builtin #include directories
-nogpuinc Do not add include paths for CUDA/HIP and do not include the default CUDA/HIP wrapper headers
-nogpulib Do not link device library for CUDA/HIP device compilation
-nohipwrapperinc Do not include the default HIP wrapper headers and include paths
-nostdinc++ Disable standard #include directories for the C++ standard library
--nvptx-arch-tool=<value>
Tool used for detecting NVIDIA GPU arch in the system.
-ObjC++ Treat source input files as Objective-C++ inputs
-objcmt-allowlist-dir-path=<value>
Only modify files with a filename contained in the provided directory path
-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-dot-syntax
Enable migration of setter/getter messages to property-dot syntax
-objcmt-migrate-property
Enable migration to modern ObjC property
-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=<value>
Alias for -objcmt-allowlist-dir-path
-ObjC Treat source input files as Objective-C inputs
-object-file-name=<file>
Set the output <file> for debug infos
-Ofast<value> Deprecated; use '-O3 -ffast-math' for the same behavior, or '-O3' to enable only conforming optimizations
--offload-arch=<value> Specify an offloading device architecture for CUDA, HIP, or OpenMP. (e.g. sm_35). If 'native' is used the compiler will detect locally installed architectures. For HIP offloading, the device architecture can be followed by target ID features delimited by a colon (e.g. gfx908:xnack+:sramecc-). May be specified more than once.
--offload-compress Compress offload device binaries (HIP only)
--offload-device-only Only compile for the offloading device.
--offload-host-device Compile for both the offloading host and device (default).
--offload-host-only Only compile for the offloading host.
--offload-link Use the new offloading linker to perform the link job.
--offload-new-driver Use the new driver for offloading compilation.
--offload=<value> Specify comma-separated list of offloading target triples (CUDA and HIP only)
-o <file> Write output to <file>
-pedantic Warn on language extensions
-pg Enable mcount instrumentation
-pipe Use pipes between commands, when possible
--precompile Only precompile the input
--pretty-sgf Emit pretty printed symbol graphs
-print-diagnostic-options
Print all of Clang's warning options
-print-effective-triple Print the effective target triple
-print-enabled-extensions
Print the extensions enabled by the given target and -march/-mcpu options. (AArch64 and RISC-V only)
-print-file-name=<file> Print the full library path of <file>
-print-ivar-layout Enable Objective-C Ivar layout bitmap print trace
-print-libgcc-file-name Print the library path for the currently used compiler runtime library ("libgcc.a" or "libclang_rt.builtins.*.a")
-print-library-module-manifest-path
Print the path for the C++ Standard library module manifest
-print-multi-flags-experimental
Print the flags used for selecting multilibs (experimental)
-print-prog-name=<name> Print the full program path of <name>
-print-resource-dir Print the resource directory pathname
-print-rocm-search-dirs Print the paths used for finding ROCm installation
-print-runtime-dir Print the directory pathname containing Clang's runtime libraries
-print-search-dirs Print the paths used for finding libraries and programs
-print-supported-cpus Print supported cpu models for the given target (if target is not specified, it will print the supported cpus for the default target)
-print-supported-extensions
Print supported -march extensions (RISC-V, AArch64 and ARM only)
-print-target-triple Print the normalized target triple
-print-targets Print the registered targets
-pthread Support POSIX threads in generated code
--ptxas-path=<value> Path to ptxas (used for compiling CUDA code)
-P Disable linemarker output in -E mode
-p Enable mcount instrumentation with prof
-Qn Do not emit metadata containing compiler name and version
-Qunused-arguments Don't emit warning for unused driver arguments
-Qy Emit metadata containing compiler name and version
-regcall4 Set __regcall4 as a default calling convention to respect __regcall ABI v.4
-relocatable-pch Whether to build a relocatable precompiled header
-rewrite-legacy-objc Rewrite Legacy Objective-C source to C++
-rewrite-objc Rewrite Objective-C source to C++
--rocm-device-lib-path=<value>
ROCm device library path. Alternative to rocm-path.
--rocm-path=<value> ROCm installation path, used for finding and automatically linking required bitcode libraries.
-Rpass-analysis=<value> Report transformation analysis from optimization passes whose name matches the given POSIX regular expression
-Rpass-missed=<value> Report missed transformations by optimization passes whose name matches the given POSIX regular expression
-Rpass=<value> Report transformations performed by optimization passes whose name matches the given POSIX regular expression
-rtlib=<value> Compiler runtime library to use
-R<remark> Enable the specified remark
-save-stats=<value> Save llvm statistics.
-save-stats Save llvm statistics.
-save-temps=<value> Save intermediate compilation results. <arg> can be set to 'cwd' for current working directory, or 'obj' which will save temporary files in the same directory as the final output file
-save-temps Alias for --save-temps=cwd
-serialize-diagnostics <value>
Serialize compiler diagnostics to a file
-shared-libsan Dynamically link the sanitizer runtime
--start-no-unused-arguments
Don't emit warnings about unused arguments for the following arguments
-static-libsan Statically link the sanitizer runtime (Not supported for ASan, TSan or UBSan on darwin)
-static-openmp Use the static host OpenMP runtime while linking.
-std=<value> Language standard to compile for
-stdlib++-isystem <directory>
Use directory as the C++ standard library include path
-stdlib=<value> C++ standard library to use
-sycl-std=<value> SYCL language standard to compile for.
--symbol-graph-dir=<value>
Directory in which to emit symbol graphs.
--system-header-prefix=<prefix>
Treat all #include paths starting with <prefix> as including a system header.
-S Only run preprocess and compilation steps
--target=<value> Generate code for the given target
-time Time individual commands
-traditional-cpp Enable some traditional CPP emulation
-trigraphs Process trigraph sequences
-T <script> Specify <script> as linker script
-undef undef all system defines
-unwindlib=<value> Unwind library to use
-U <macro> Undefine macro <macro>
--verify-debug-info Verify the binary representation of debug output
-verify-pch Load and verify that a pre-compiled header file is not stale
--version Print version information
-vfsoverlay <value> Overlay the virtual filesystem described by file over the real file system. Additionally, pass this overlay file to the linker if it supports it
-v Show commands to run and use verbose output
-Wa,<arg> Pass the comma separated arguments in <arg> to the assembler
--wasm-opt Enable the wasm-opt optimizer (default)
-Wdeprecated Enable warnings for deprecated constructs and define __DEPRECATED
-Winvalid-constexpr Enable checking of constexpr function bodies for validity within a constant expression context
-Wl,<arg> Pass the comma separated arguments in <arg> to the linker
-Wno-invalid-constexpr Disable checking of constexpr function bodies for validity within a constant expression context
-working-directory <value>
Resolve file paths relative to the specified directory
-Wp,<arg> Pass the comma separated arguments in <arg> to the preprocessor
-W<warning> Enable the specified warning
-w Suppress all warnings
-Xanalyzer <arg> Pass <arg> to the static analyzer
-Xarch_device <arg> Pass <arg> to the CUDA/HIP device compilation
-Xarch_host <arg> Pass <arg> to the CUDA/HIP host compilation
-Xassembler <arg> Pass <arg> to the assembler
-Xclang=<arg> Alias for -Xclang
-Xclang <arg> Pass <arg> to clang -cc1
-Xcuda-fatbinary <arg> Pass <arg> to fatbinary invocation
-Xcuda-ptxas <arg> Pass <arg> to the ptxas assembler
-Xlinker <arg> Pass <arg> to the linker
-Xoffload-linker<triple> <arg>
Pass <arg> to the offload linkers or the ones idenfied by -<triple>
-Xopenmp-target=<triple> <arg>
Pass <arg> to the target offloading toolchain identified by <triple>.
-Xopenmp-target <arg> Pass <arg> to the target offloading toolchain.
-Xpreprocessor <arg> Pass <arg> to the preprocessor
-x <language> Treat subsequent input files as having type <language>
-z <arg> Pass -z <arg> to the linker
dxc compatibility options.:
--dxv-path=<value> DXIL validator installation path
-fspv-target-env=<value>
Specify the target environment
-hlsl-entry <value> Entry point name for hlsl
clang++
root@kali:~# clang++ --help
OVERVIEW: clang LLVM compiler
USAGE: clang [options] file...
OPTIONS:
-### Print (but do not run) the commands to run for this compilation
--amdgpu-arch-tool=<value>
Tool used for detecting AMD GPU arch in the system.
--analyzer-output <value>
Static analyzer report output format (html|plist|plist-multi-file|plist-html|sarif|sarif-html|text).
--analyze Run the static analyzer
-arcmt-migrate-emit-errors
Emit ARC errors even if the migrator can fix them
-arcmt-migrate-report-output <value>
Output path for the plist report
-B <prefix> Search $prefix$file for executables, libraries, and data files. If $prefix is a directory, search $prefix/$file
-b <arg> Pass -b <arg> to the linker on AIX
-CC Include comments from within macros in preprocessed output
-cl-denorms-are-zero OpenCL only. Allow denormals to be flushed to zero.
-cl-ext=<value> OpenCL only. Enable or disable OpenCL extensions/optional features. The argument is a comma-separated sequence of one or more extension names, each prefixed by '+' or '-'.
-cl-fast-relaxed-math OpenCL only. Sets -cl-finite-math-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-no-stdinc OpenCL only. Disables all standard includes containing non-native compiler types and functions.
-cl-opt-disable OpenCL only. This option disables all optimizations. By default optimizations are enabled.
-cl-single-precision-constant
OpenCL only. Treat double precision floating-point constant as single precision constant.
-cl-std=<value> 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.
--config=<file> Specify configuration file
--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-feature=<value> Manually specify the CUDA feature to use
--cuda-host-only Compile CUDA code for host only. Has no effect on non-CUDA compilations.
--cuda-include-ptx=<value>
Include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.
--cuda-noopt-device-debug
Enable device-side debug info generation. Disables ptxas optimizations.
--cuda-path-ignore-env Ignore environment variables to detect CUDA installation
--cuda-path=<value> CUDA installation path
-cuid=<value> An ID for compilation unit, which should be the same for the same compilation unit but different for different compilation units. It is used to externalize device-side static variables for single source offloading languages CUDA and HIP so that they can be accessed by the host code of the same compilation unit.
-cxx-isystem <directory>
Add directory to the C++ SYSTEM include search path
-C Include comments in preprocessed output
-c Only run preprocess, compile, and assemble steps
-darwin-target-variant-triple <value>
Specify the darwin target variant triple
-darwin-target-variant <value>
Generate code for an additional runtime variant of the deployment target
-dD Print macro definitions in -E mode in addition to normal output
-dependency-dot <value> Filename to write DOT-formatted header dependencies to
-dependency-file <value>
Filename (or -) to write dependency output to
-dI Print include directives in -E mode in addition to normal output
-dM Print macro definitions in -E mode instead of normal output
-dsym-dir <dir> Directory to output dSYM's (if any) to
-dumpdir <dumppfx> Use <dumpfpx> as a prefix to form auxiliary and dump file names
-dumpmachine Display the compiler's target processor
-dumpversion Display the version of the compiler
-D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
--embed-dir=<dir> Add directory to embed search path
-emit-ast Emit Clang AST files for source inputs
--emit-extension-symbol-graphs
Generate additional symbol graphs for extended modules.
-emit-interface-stubs Generate Interface Stub Files.
-emit-llvm Use the LLVM representation for assembler and object files
-emit-merged-ifs Generate Interface Stub Files, emit merged text not binary.
--emit-static-lib Enable linker job to emit a static library.
-emit-symbol-graph Generate Extract API information as a side effect of compilation.
--end-no-unused-arguments
Start emitting warnings for unused driver arguments
--extract-api-ignores=<value>
Comma separated list of files containing a new line separated list of API symbols to ignore when extracting API information.
-extract-api Extract API information
-E Only run the preprocessor
-faapcs-bitfield-load Follows the AAPCS standard that all volatile bit-field write generates at least one load. (ARM only).
-faapcs-bitfield-width Follow the AAPCS standard requirement stating that volatile bit-field width is dictated by the field container type. (ARM only).
-faddrsig Emit an address-significance table
-falign-loops=<N> N must be a power of two. Align loops to the boundary
-faligned-allocation Enable C++17 aligned allocation functions
-fallow-editor-placeholders
Treat editor placeholders as valid source code
-faltivec-src-compat=<value>
Source-level compatibility for Altivec vectors (for PowerPC targets). This includes results of vector comparison (scalar for 'xl', vector for 'gcc') as well as behavior when initializing with a scalar (splatting for 'xl', element zero only for 'gcc'). For 'mixed', the compatibility is as 'gcc' for 'vector bool/vector pixel' and as 'xl' for other types. Current default is 'mixed'.
-fansi-escape-codes Use ANSI escape codes for diagnostics
-fapinotes-modules Enable module-based external API notes support
-fapinotes-swift-version=<version>
Specify the Swift version to use when filtering API notes
-fapinotes Enable external API notes support
-fapple-kext Use Apple's kernel extensions ABI
-fapple-link-rtlib Force linking the clang builtins runtime library
-fapple-pragma-pack Enable Apple gcc-compatible #pragma pack handling
-fapplication-extension Restrict code to those available for App Extensions
-fapprox-func Allow certain math function calls to be replaced with an approximately equivalent calculation
-fassume-nothrow-exception-dtor
Assume that exception objects' destructors are non-throwing
-fasync-exceptions Enable EH Asynchronous exceptions
-fauto-import MinGW specific. Enable code generation support for automatic dllimport, and enable support for it in the linker. Enabled by default.
-fbasic-block-address-map
Emit the basic block address map section.
-fbasic-block-sections=<value>
Place each function's basic blocks in unique sections (ELF Only)
-fbinutils-version=<major.minor>
Produced object files can use all ELF features supported by this binutils version and newer. If -fno-integrated-as is specified, the generated assembly will consider GNU as support. 'none' means that all ELF features can be used, regardless of binutils support. Defaults to 2.26.
-fblocks Enable the 'blocks' language feature
-fborland-extensions Accept non-standard constructs supported by the Borland compiler
-fbuild-session-file=<file>
Use the last modification time of <file> as the build session timestamp
-fbuild-session-timestamp=<time since Epoch in seconds>
Time when the current build session started
-fbuiltin-module-map Load the clang builtins module map file.
-fc++-abi=<value> C++ ABI to use. This will override the target C++ ABI.
-fcall-saved-x10 Make the x10 register call-saved (AArch64 only)
-fcall-saved-x11 Make the x11 register call-saved (AArch64 only)
-fcall-saved-x12 Make the x12 register call-saved (AArch64 only)
-fcall-saved-x13 Make the x13 register call-saved (AArch64 only)
-fcall-saved-x14 Make the x14 register call-saved (AArch64 only)
-fcall-saved-x15 Make the x15 register call-saved (AArch64 only)
-fcall-saved-x18 Make the x18 register call-saved (AArch64 only)
-fcall-saved-x8 Make the x8 register call-saved (AArch64 only)
-fcall-saved-x9 Make the x9 register call-saved (AArch64 only)
-fcaret-diagnostics-max-lines=<value>
Set the maximum number of source lines to show in a caret diagnostic (0 = no limit).
-fcf-protection=<value> Instrument control-flow architecture protection
-fcf-protection Enable cf-protection in 'full' mode
-fchar8_t Enable C++ builtin type char8_t
-fcheck-new Do not assume C++ operator new may not return NULL
-fclang-abi-compat=<version>
Attempt to match the ABI of Clang <version>
-fclangir Use the ClangIR pipeline to compile
-fcolor-diagnostics Enable colors in diagnostics
-fcomment-block-commands=<arg>
Treat each comma separated argument in <arg> as a documentation comment block command
-fcommon Place uninitialized global variables in a common block
-fcomplete-member-pointers
Require member pointer base types to be complete if they would be significant under the Microsoft ABI
-fconstexpr-backtrace-limit=<value>
Set the maximum number of entries to print in a constexpr evaluation backtrace (0 = no limit)
-fconstexpr-depth=<value>
Set the maximum depth of recursive constexpr function calls
-fconstexpr-steps=<value>
Set the maximum number of steps in constexpr function evaluation
-fcoro-aligned-allocation
Prefer aligned allocation for C++ Coroutines
-fcoroutines Enable support for the C++ Coroutines
-fcoverage-compilation-dir=<value>
The compilation directory to embed in the coverage mapping.
-fcoverage-mapping Generate coverage mapping to enable code coverage analysis
-fcoverage-mcdc Enable MC/DC criteria when generating code coverage
-fcoverage-prefix-map=<old>=<new>
remap file source paths <old> to <new> in coverage mapping. If there are multiple options, prefix replacement is applied in reverse order starting from the last one
-fcrash-diagnostics-dir=<dir>
Put crash-report files in <dir>
-fcrash-diagnostics=<value>
Set level of crash diagnostic reporting, (option: off, compiler, all)
-fcrash-diagnostics Enable crash diagnostic reporting (default)
-fcs-profile-generate=<directory>
Generate instrumented code to collect context sensitive execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)
-fcs-profile-generate Generate instrumented code to collect context sensitive execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)
-fcuda-short-ptr Use 32-bit pointers for accessing const/local/shared address spaces
-fcx-fortran-rules Range reduction is enabled for complex arithmetic operations.
-fcx-limited-range Basic algebraic expansions of complex arithmetic operations involving are enabled.
-fcxx-exceptions Enable C++ exceptions
-fcxx-modules Enable modules for C++
-fdata-sections Place each data in its own section
-fdebug-compilation-dir=<value>
The compilation directory to embed in the debug info
-fdebug-default-version=<value>
Default DWARF version to use, if a -g option caused DWARF debug info to be produced
-fdebug-info-for-profiling
Emit extra debug info to make sample profile more accurate
-fdebug-macro Emit macro debug information
-fdebug-prefix-map=<old>=<new>
For paths in debug info, remap directory <old> to <new>. If multiple options match a path, the last option wins
-fdebug-ranges-base-address
Use DWARF base address selection entries in .debug_ranges
-fdebug-types-section Place debug types in their own section (ELF Only)
-fdeclspec Allow __declspec as a keyword
-fdefine-target-os-macros
Enable predefined target OS macros
-fdelayed-template-parsing
Parse templated function definitions at the end of the translation unit
-fdelete-null-pointer-checks
Treat usage of null pointers as undefined behavior (default)
-fdiagnostics-absolute-paths
Print absolute paths in diagnostics
-fdiagnostics-hotness-threshold=<value>
Prevent optimization remarks from being output if they do not have at least this profile count. Use 'auto' to apply the threshold from profile summary
-fdiagnostics-misexpect-tolerance=<value>
Prevent misexpect diagnostics from being output if the profile counts are within N% of the expected.
-fdiagnostics-parseable-fixits
Print fix-its in machine parseable form
-fdiagnostics-print-source-range-info
Print source range spans in numeric form
-fdiagnostics-show-hotness
Enable profile hotness information in diagnostic line
-fdiagnostics-show-note-include-stack
Display include stacks for diagnostic notes
-fdiagnostics-show-option
Print option name with mappable diagnostics
-fdiagnostics-show-template-tree
Print a template comparison tree for differing templates
-fdigraphs Enable alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:' (default)
-fdirect-access-external-data
Don't use GOT indirection to reference external data symbols
-fdisable-block-signature-string
Disable block signature string)
-fdiscard-value-names Discard value names in LLVM IR
-fdollars-in-identifiers
Allow '$' in identifiers
-fdriver-only Only run the driver.
-fdwarf-exceptions Use DWARF style exceptions
-feliminate-unused-debug-types
Do not emit debug info for defined but unused types
-fembed-bitcode-marker Embed placeholder LLVM IR data as a marker
-fembed-bitcode=<option>
Embed LLVM bitcode
-fembed-bitcode Embed LLVM IR bitcode as data
-fembed-offload-object=<value>
Embed Offloading device-side binary into host object file as a section.
-femit-all-decls Emit all declarations, even if unused
-femit-compact-unwind-non-canonical
Try emitting Compact-Unwind for non-canonical entries. Maybe overriden by other constraints
-femit-dwarf-unwind=<value>
When to emit DWARF unwind (EH frame) info
-femulated-tls Use emutls functions to access thread_local variables
-fenable-matrix Enable matrix data type and related builtin functions
-fexceptions Enable support for exception handling
-fexcess-precision=<value>
Allows control over excess precision on targets where native support for the precision types is not available. By default, excess precision is used to calculate intermediate results following the rules specified in ISO C99.
-fexperimental-late-parse-attributes
Enable experimental late parsing of attributes
-fexperimental-library Control whether unstable and experimental library features are enabled. This option enables various library features that are either experimental (also known as TSes), or have been but are not stable yet in the selected Standard Library implementation. It is not recommended to use this option in production code, since neither ABI nor API stability are guaranteed. This is intended to provide a preview of features that will ship in the future for experimentation purposes
-fexperimental-modules-reduced-bmi
Generate the reduced BMI
-fexperimental-new-constant-interpreter
Enable the experimental new constant interpreter
-fexperimental-openacc-macro-override <value>
Overrides the _OPENACC macro value for experimental testing during OpenACC support development
-fexperimental-relative-c++-abi-vtables
Use the experimental C++ class ABI for classes with virtual tables
-fexperimental-sanitize-metadata-ignorelist=<value>
Disable sanitizer metadata for modules and functions that match the provided special case list
-fexperimental-sanitize-metadata=<value>
Specify the type of metadata to emit for binary analysis sanitizers
-fexperimental-strict-floating-point
Enables the use of non-default rounding modes and non-default exception handling on targets that are not currently ready.
-fextend-arguments=<value>
Controls how scalar integer arguments are extended in calls to unprototyped and varargs functions
-ffast-math Allow aggressive, lossy floating-point optimizations
-ffat-lto-objects Enable fat LTO object support
-ffile-compilation-dir=<value>
The compilation directory to embed in the debug info and coverage mapping.
-ffile-prefix-map=<value>
remap file source paths in debug info, predefined preprocessor macros and __builtin_FILE(). Implies -ffile-reproducible.
-ffile-reproducible Use the target's platform-specific path separator character when expanding the __FILE__ macro
-ffine-grained-bitfield-accesses
Use separate accesses for consecutive bitfield runs with legal widths and alignments.
-ffinite-loops Assume all non-trivial loops are finite.
-ffinite-math-only Allow floating-point optimizations that assume arguments and results are not NaNs or +-inf. This defines the \_\_FINITE\_MATH\_ONLY\_\_ preprocessor macro.
-ffixed-a0 Reserve the a0 register (M68k only)
-ffixed-a1 Reserve the a1 register (M68k only)
-ffixed-a2 Reserve the a2 register (M68k only)
-ffixed-a3 Reserve the a3 register (M68k only)
-ffixed-a4 Reserve the a4 register (M68k only)
-ffixed-a5 Reserve the a5 register (M68k only)
-ffixed-a6 Reserve the a6 register (M68k only)
-ffixed-d0 Reserve the d0 register (M68k only)
-ffixed-d1 Reserve the d1 register (M68k only)
-ffixed-d2 Reserve the d2 register (M68k only)
-ffixed-d3 Reserve the d3 register (M68k only)
-ffixed-d4 Reserve the d4 register (M68k only)
-ffixed-d5 Reserve the d5 register (M68k only)
-ffixed-d6 Reserve the d6 register (M68k only)
-ffixed-d7 Reserve the d7 register (M68k only)
-ffixed-g1 Reserve the G1 register (SPARC only)
-ffixed-g2 Reserve the G2 register (SPARC only)
-ffixed-g3 Reserve the G3 register (SPARC only)
-ffixed-g4 Reserve the G4 register (SPARC only)
-ffixed-g5 Reserve the G5 register (SPARC only)
-ffixed-g6 Reserve the G6 register (SPARC only)
-ffixed-g7 Reserve the G7 register (SPARC only)
-ffixed-i0 Reserve the I0 register (SPARC only)
-ffixed-i1 Reserve the I1 register (SPARC only)
-ffixed-i2 Reserve the I2 register (SPARC only)
-ffixed-i3 Reserve the I3 register (SPARC only)
-ffixed-i4 Reserve the I4 register (SPARC only)
-ffixed-i5 Reserve the I5 register (SPARC only)
-ffixed-l0 Reserve the L0 register (SPARC only)
-ffixed-l1 Reserve the L1 register (SPARC only)
-ffixed-l2 Reserve the L2 register (SPARC only)
-ffixed-l3 Reserve the L3 register (SPARC only)
-ffixed-l4 Reserve the L4 register (SPARC only)
-ffixed-l5 Reserve the L5 register (SPARC only)
-ffixed-l6 Reserve the L6 register (SPARC only)
-ffixed-l7 Reserve the L7 register (SPARC only)
-ffixed-o0 Reserve the O0 register (SPARC only)
-ffixed-o1 Reserve the O1 register (SPARC only)
-ffixed-o2 Reserve the O2 register (SPARC only)
-ffixed-o3 Reserve the O3 register (SPARC only)
-ffixed-o4 Reserve the O4 register (SPARC only)
-ffixed-o5 Reserve the O5 register (SPARC only)
-ffixed-point Enable fixed point types
-ffixed-r19 Reserve register r19 (Hexagon only)
-ffixed-r9 Reserve the r9 register (ARM only)
-ffixed-x10 Reserve the x10 register (AArch64/RISC-V only)
-ffixed-x11 Reserve the x11 register (AArch64/RISC-V only)
-ffixed-x12 Reserve the x12 register (AArch64/RISC-V only)
-ffixed-x13 Reserve the x13 register (AArch64/RISC-V only)
-ffixed-x14 Reserve the x14 register (AArch64/RISC-V only)
-ffixed-x15 Reserve the x15 register (AArch64/RISC-V only)
-ffixed-x16 Reserve the x16 register (AArch64/RISC-V only)
-ffixed-x17 Reserve the x17 register (AArch64/RISC-V only)
-ffixed-x18 Reserve the x18 register (AArch64/RISC-V only)
-ffixed-x19 Reserve the x19 register (AArch64/RISC-V only)
-ffixed-x1 Reserve the x1 register (AArch64/RISC-V only)
-ffixed-x20 Reserve the x20 register (AArch64/RISC-V only)
-ffixed-x21 Reserve the x21 register (AArch64/RISC-V only)
-ffixed-x22 Reserve the x22 register (AArch64/RISC-V only)
-ffixed-x23 Reserve the x23 register (AArch64/RISC-V only)
-ffixed-x24 Reserve the x24 register (AArch64/RISC-V only)
-ffixed-x25 Reserve the x25 register (AArch64/RISC-V only)
-ffixed-x26 Reserve the x26 register (AArch64/RISC-V only)
-ffixed-x27 Reserve the x27 register (AArch64/RISC-V only)
-ffixed-x28 Reserve the x28 register (AArch64/RISC-V only)
-ffixed-x29 Reserve the x29 register (AArch64/RISC-V only)
-ffixed-x2 Reserve the x2 register (AArch64/RISC-V only)
-ffixed-x30 Reserve the x30 register (AArch64/RISC-V only)
-ffixed-x31 Reserve the x31 register (AArch64/RISC-V only)
-ffixed-x3 Reserve the x3 register (AArch64/RISC-V only)
-ffixed-x4 Reserve the x4 register (AArch64/RISC-V only)
-ffixed-x5 Reserve the x5 register (AArch64/RISC-V only)
-ffixed-x6 Reserve the x6 register (AArch64/RISC-V only)
-ffixed-x7 Reserve the x7 register (AArch64/RISC-V only)
-ffixed-x8 Reserve the x8 register (AArch64/RISC-V only)
-ffixed-x9 Reserve the x9 register (AArch64/RISC-V only)
-fforce-check-cxx20-modules-input-files
Check the input source files from C++20 modules explicitly
-fforce-dwarf-frame Always emit a debug frame section
-fforce-emit-vtables Emits more virtual tables to improve devirtualization
-fforce-enable-int128 Enable support for int128_t type
-ffp-contract=<value> Form fused FP ops (e.g. FMAs)
-ffp-eval-method=<value>
Specifies the evaluation method to use for floating-point arithmetic.
-ffp-exception-behavior=<value>
Specifies the exception behavior of floating-point operations.
-ffp-model=<value> Controls the semantics of floating-point calculations.
-ffreestanding Assert that the compilation takes place in a freestanding environment
-ffuchsia-api-level=<value>
Set Fuchsia API level
-ffunction-sections Place each function in its own section
-fglobal-isel Enables the global instruction selector
-fgnu-keywords Allow GNU-extension keywords regardless of language standard
-fgnu-runtime Generate output compatible with the standard GNU Objective-C runtime
-fgnu89-inline Use the gnu89 inline semantics
-fgnuc-version=<value> Sets various macros to claim compatibility with the given GCC version (default is 4.2.1)
-fgpu-allow-device-init Allow device side init function in HIP (experimental)
-fgpu-approx-transcendentals
Use approximate transcendental functions
-fgpu-default-stream=<value>
Specify default stream. The default value is 'legacy'. (CUDA/HIP only)
-fgpu-defer-diag Defer host/device related diagnostic messages for CUDA/HIP
-fgpu-flush-denormals-to-zero
Flush denormal floating point values to zero in CUDA/HIP device mode.
-fgpu-rdc Generate relocatable device code, also known as separate compilation mode
-fgpu-sanitize Enable sanitizer for supported offloading devices
-fhip-emit-relocatable Compile HIP source to relocatable
-fhip-fp32-correctly-rounded-divide-sqrt
Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded (HIP device compilation only)
-fhip-kernel-arg-name Specify that kernel argument names are preserved (HIP only)
-fhip-new-launch-api Use new kernel launching API for HIP
-fhlsl-strict-availability
Enables strict availability diagnostic mode for HLSL built-in functions.
-fhonor-infinities Specify that floating-point optimizations are not allowed that assume arguments and results are not +-inf.
-fhonor-nans Specify that floating-point optimizations are not allowed that assume arguments and results are not NANs.
-fignore-exceptions Enable support for ignoring exception handling constructs
-fimplicit-module-maps Implicitly search the file system for module map files.
-fincremental-extensions
Enable incremental processing extensions such as processingstatements on the global scope.
-finline-functions Inline suitable functions
-finline-hint-functions Inline functions which are (explicitly or implicitly) marked inline
-finline-max-stacksize=<value>
Suppress inlining of functions whose stack size exceeds the given value
-finput-charset=<value> Specify the default character set for source files
-finstrument-function-entry-bare
Instrument function entry only, after inlining, without arguments to the instrumentation call
-finstrument-functions-after-inlining
Like -finstrument-functions, but insert the calls after inlining
-finstrument-functions Generate calls to instrument function entry and exit
-fintegrated-as Enable the integrated assembler
-fintegrated-cc1 Run cc1 in-process
-fintegrated-objemitter Use internal machine object code emitter.
-fjmc Enable just-my-code debugging
-fjump-tables Use jump tables for lowering switches
-fkeep-persistent-storage-variables
Enable keeping all variables that have a persistent storage duration, including global, static and thread-local variables, to guarantee that they can be directly addressed
-fkeep-static-consts Keep static const variables even if unused
-fkeep-system-includes Instead of expanding system headers when emitting preprocessor output, preserve the #include directive. Useful when producing preprocessed output for test case reduction. May produce incorrect output if preprocessor symbols that control the included content (e.g. _XOPEN_SOURCE) are defined in the including source file. The portability of the resulting source to other compilation environments is not guaranteed.
Only valid with -E.
-flax-vector-conversions=<value>
Enable implicit vector bit-casts
-flto-jobs=<value> 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=auto Enable LTO in 'full' mode
-flto=jobserver Enable LTO in 'full' mode
-flto=<value> Set LTO mode
-flto Enable LTO in 'full' mode
-fmacro-backtrace-limit=<value>
Set the maximum number of entries to print in a macro expansion backtrace (0 = no limit)
-fmacro-prefix-map=<value>
remap file source paths in predefined preprocessor macros and __builtin_FILE(). Implies -ffile-reproducible.
-fmath-errno Require math functions to indicate errors by setting errno
-fmax-tokens=<value> Max total number of preprocessed tokens for -Wmax-tokens.
-fmax-type-align=<value>
Specify the maximum alignment to enforce on pointers lacking an explicit alignment
-fmemory-profile-use=<pathname>
Use memory profile for profile-guided memory optimization
-fmemory-profile=<directory>
Enable heap memory profiling and dump results into <directory>
-fmemory-profile Enable heap memory profiling
-fmerge-all-constants Allow merging of constants
-fmessage-length=<value>
Format message diagnostics so that they fit within N columns
-fminimize-whitespace Ignore the whitespace from the input file when emitting preprocessor output. It will only contain whitespace when necessary, e.g. to keep two minus signs from merging into to an increment operator. Useful with the -P option to normalize whitespace such that two files with only formatting changes are equal.
Only valid with -E on C-like inputs and incompatible with -traditional-cpp.
-fmodule-file=[<name>=]<file>
Specify the mapping of module name to precompiled module file, or load a module file if name is omitted.
-fmodule-header=<kind> Build a C++20 Header Unit from a header that should be found in the user (fmodule-header=user) or system (fmodule-header=system) search path.
-fmodule-header Build a C++20 Header Unit from a header
-fmodule-map-file=<file>
Load this module map file
-fmodule-name=<name> Specify the name of the module to build
-fmodule-output=<value> Save intermediate module file results when compiling a standard C++ module unit.
-fmodule-output Save intermediate module file results when compiling a standard C++ module unit.
-fmodules-cache-path=<directory>
Specify the module cache path
-fmodules-decluse Require declaration of modules used within a module
-fmodules-disable-diagnostic-validation
Disable validation of the diagnostic options when loading the module
-fmodules-ignore-macro=<value>
Ignore the definition of the given macro when building and loading modules
-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-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-user-build-path <directory>
Specify the module user build path
-fmodules-validate-input-files-content
Validate PCM input files based on content if mtime differs
-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
Validate the system headers that a module depends on when loading the module
-fmodules Enable the 'modules' language feature
-fms-compatibility-version=<value>
Dot-separated value representing the Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))
-fms-compatibility Enable full Microsoft Visual C++ compatibility
-fms-define-stdc Define '__STDC__' to '1' in MSVC Compatibility mode
-fms-extensions Accept some non-standard constructs supported by the Microsoft compiler
-fms-hotpatch Ensure that all functions can be hotpatched at runtime
-fms-runtime-lib=<value>
Select Windows run-time library
-fms-volatile Volatile loads and stores have acquire and release semantics
-fmsc-version=<value> Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))
-fnew-alignment=<align> Specifies the largest alignment guaranteed by '::operator new(size_t)'
-fnew-infallible Enable treating throwing global C++ operator new as always returning valid memory (annotates with __attribute__((returns_nonnull)) and throw()). This is detectable in source.
-fno-aapcs-bitfield-width
Do not follow the AAPCS standard requirement stating that volatile bit-field width is dictated by the field container type. (ARM only).
-fno-access-control Disable C++ access control
-fno-addrsig Don't emit an address-significance table
-fno-apinotes-modules Disable module-based external API notes support
-fno-apinotes Disable external API notes support
-fno-assume-sane-operator-new
Don't assume that C++'s global operator new can't alias any pointer
-fno-assume-unique-vtables
Disable optimizations based on vtable pointer identity
-fno-assumptions Disable codegen and compile-time checks for C++23's [[assume]] attribute
-fno-auto-import MinGW specific. Disable support for automatic dllimport in code generation and linking
-fno-autolink Disable generation of linker directives for automatic library linking
-fno-builtin-<value> Disable implicit builtin knowledge of a specific function
-fno-builtin Disable implicit builtin knowledge of functions
-fno-c++-static-destructors
Disable C++ static destructor registration
-fno-char8_t Disable C++ builtin type char8_t
-fno-clangir Use the AST -> LLVM pipeline to compile
-fno-color-diagnostics Disable colors in diagnostics
-fno-common Compile common globals like normal definitions
-fno-complete-member-pointers
Do not require member pointer base types to be complete if they would be significant under the Microsoft ABI
-fno-constant-cfstrings Disable creation of CodeFoundation-type constant strings
-fno-convergent-functions
Assume all functions may be convergent.
-fno-coverage-mapping Disable code coverage analysis
-fno-coverage-mcdc Disable MC/DC coverage criteria
-fno-crash-diagnostics Disable auto-generation of preprocessed source files and a script for reproduction during a clang crash
-fno-cx-fortran-rules Range reduction is disabled for complex arithmetic operations
-fno-cx-limited-range Basic algebraic expansions of complex arithmetic operations involving are disabled.
-fno-cxx-modules Disable modules for C++
-fno-debug-macro Do not emit macro debug information
-fno-declspec Disallow __declspec as a keyword
-fno-define-target-os-macros
Disable predefined target OS macros
-fno-delayed-template-parsing
Disable delayed template parsing
-fno-delete-null-pointer-checks
Do not treat usage of null pointers as undefined behavior
-fno-diagnostics-fixit-info
Do not include fixit information in diagnostics
-fno-diagnostics-show-line-numbers
Show line numbers in diagnostic code snippets
-fno-digraphs Disallow alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:'
-fno-direct-access-external-data
Use GOT indirection to reference external data symbols
-fno-disable-block-signature-string
Don't disable block signature string)
-fno-discard-value-names
Do not discard value names in LLVM IR
-fno-dollars-in-identifiers
Disallow '$' in identifiers
-fno-elide-constructors Disable C++ copy constructor elision
-fno-elide-type Do not elide types when printing diagnostics
-fno-eliminate-unused-debug-types
Emit debug info for defined but unused types
-fno-exceptions Disable support for exception handling
-fno-experimental-late-parse-attributes
Disable experimental late parsing of attributes
-fno-experimental-relative-c++-abi-vtables
Do not use the experimental C++ class ABI for classes with virtual tables
-fno-experimental-sanitize-metadata=<value>
Disable emitting metadata for binary analysis sanitizers
-fno-fat-lto-objects Disable fat LTO object support
-fno-file-reproducible Use the host's platform-specific path separator character when expanding the __FILE__ macro
-fno-fine-grained-bitfield-accesses
Use large-integer access for consecutive bitfield runs.
-fno-finite-loops Do not assume that any loop is finite.
-fno-fixed-point Disable fixed point types
-fno-force-enable-int128
Disable support for int128_t type
-fno-global-isel Disables the global instruction selector
-fno-gnu-inline-asm Disable GNU style inline asm
-fno-gpu-allow-device-init
Don't allow device side init function in HIP (experimental)
-fno-gpu-approx-transcendentals
Don't use approximate transcendental functions
-fno-gpu-defer-diag Don't defer host/device related diagnostic messages for CUDA/HIP
-fno-hip-emit-relocatable
Do not override toolchain to compile HIP source to relocatable
-fno-hip-fp32-correctly-rounded-divide-sqrt
Don't specify that single precision floating-point divide and sqrt used in the program source are correctly rounded (HIP device compilation only)
-fno-hip-kernel-arg-name
Don't specify that kernel argument names are preserved (HIP only)
-fno-hip-new-launch-api Don't use new kernel launching API for HIP
-fno-integrated-as Disable the integrated assembler
-fno-integrated-cc1 Spawn a separate process for each cc1
-fno-integrated-objemitter
Use external machine object code emitter.
-fno-jump-tables Do not use jump tables for lowering switches
-fno-keep-persistent-storage-variables
Disable keeping all variables that have a persistent storage duration, including global, static and thread-local variables, to guarantee that they can be directly addressed
-fno-keep-static-consts Don't keep static const variables even if unused
-fno-knr-functions Disable support for K&R C function declarations
-fno-lto Disable LTO mode (default)
-fno-memory-profile Disable heap memory profiling
-fno-merge-all-constants
Disallow merging of constants
-fno-modules-check-relocated<value>
Skip checks for relocated modules when loading PCM files
-fno-modules-validate-textual-header-includes
Do not enforce -fmodules-decluse and private header restrictions for textual headers. This flag will be removed in a future Clang release.
-fno-new-infallible Disable treating throwing global C++ operator new as always returning valid memory (annotates with __attribute__((returns_nonnull)) and throw()). This is detectable in source.
-fno-objc-avoid-heapify-local-blocks
Don't try to avoid heapifying local blocks
-fno-objc-infer-related-result-type
do not infer Objective-C related result type based on method family
-fno-offload-lto Disable LTO mode (default) for offload compilation
-fno-offload-uniform-block
Don't assume that kernels are launched with uniform block sizes (default true for CUDA/HIP and false otherwise)
-fno-openmp-extensions Disable all Clang extensions for OpenMP directives and clauses
-fno-operator-names Do not treat C++ operator name keywords as synonyms for operators
-fno-optimize-sibling-calls
Disable tail call optimization, keeping the call stack accurate
-fno-pch-codegen Do not generate code for uses of this PCH that assumes an explicit object file will be built for the PCH
-fno-pch-debuginfo Do not generate debug info for types in an object file built from this PCH and do not generate them elsewhere
-fno-plt Use GOT indirection instead of PLT to make external function calls (x86 only)
-fno-preserve-as-comments
Do not preserve comments in inline assembly
-fno-profile-generate Disable generation of profile instrumentation.
-fno-profile-instr-generate
Disable generation of profile instrumentation.
-fno-profile-instr-use Disable using instrumentation data for profile-guided optimization
-fno-pseudo-probe-for-profiling
Do not emit pseudo probes for sample profiling
-fno-raw-string-literals
Disable raw string literals
-fno-register-global-dtors-with-atexit
Don't use atexit or __cxa_atexit to register global destructors
-fno-relaxed-template-template-args
Disable C++17 relaxed template template argument matching
-fno-rtlib-add-rpath Do not add -rpath with architecture-specific resource directory to the linker flags. When --hip-link is specified, do not add -rpath with HIP runtime library directory to the linker flags
-fno-rtlib-defaultlib On Windows, do not emit /defaultlib: directives to link compiler-rt libraries
-fno-rtti-data Disable generation of RTTI data
-fno-rtti Disable generation of rtti information
-fno-sanitize-address-globals-dead-stripping
Disable linker dead stripping of globals in AddressSanitizer
-fno-sanitize-address-outline-instrumentation
Use default code inlining logic for the address sanitizer
-fno-sanitize-address-poison-custom-array-cookie
Disable poisoning array cookies when using custom operator new[] in AddressSanitizer
-fno-sanitize-address-use-after-scope
Disable use-after-scope detection in AddressSanitizer
-fno-sanitize-address-use-odr-indicator
Disable ODR indicator globals
-fno-sanitize-cfi-canonical-jump-tables
Do not make the jump table addresses canonical in the symbol table
-fno-sanitize-cfi-cross-dso
Disable control flow integrity (CFI) checks for cross-DSO calls.
-fno-sanitize-coverage=<value>
Disable features of coverage instrumentation for Sanitizers
-fno-sanitize-hwaddress-experimental-aliasing
Disable aliasing mode in HWAddressSanitizer
-fno-sanitize-ignorelist
Don't use ignorelist file for sanitizers
-fno-sanitize-memory-param-retval
Disable detection of uninitialized parameters and return values
-fno-sanitize-memory-track-origins
Disable origins tracking in MemorySanitizer
-fno-sanitize-memory-use-after-dtor
Disable use-after-destroy detection in MemorySanitizer
-fno-sanitize-recover=<value>
Disable recovery for specified sanitizers
-fno-sanitize-stable-abi
Conventional ABI instrumentation for sanitizer runtime. Default: Conventional
-fno-sanitize-stats Disable sanitizer statistics gathering.
-fno-sanitize-thread-atomics
Disable atomic operations instrumentation in ThreadSanitizer
-fno-sanitize-thread-func-entry-exit
Disable function entry/exit instrumentation in ThreadSanitizer
-fno-sanitize-thread-memory-access
Disable memory access instrumentation in ThreadSanitizer
-fno-sanitize-trap=<value>
Disable trapping for specified sanitizers
-fno-sanitize-trap Disable trapping for all sanitizers
-fno-short-wchar Force wchar_t to be an unsigned int
-fno-show-column Do not include column number on diagnostics
-fno-show-source-location
Do not include source location information with diagnostics
-fno-signed-char char is unsigned
-fno-signed-zeros Allow optimizations that ignore the sign of floating point zeros
-fno-skip-odr-check-in-gmf
Perform ODR checks for decls in the global module fragment.
-fno-spell-checking Disable spell-checking
-fno-split-machine-functions
Disable late function splitting using profile information (x86 ELF)
-fno-split-stack Wouldn't use segmented stack
-fno-stack-clash-protection
Disable stack clash protection
-fno-stack-protector Disable the use of stack protectors
-fno-standalone-debug Limit debug information produced to reduce size of debug binary
-fno-strict-aliasing Disable optimizations based on strict aliasing rules
-fno-strict-float-cast-overflow
Relax language rules and try to match the behavior of the target's native float-to-int conversion instructions
-fno-strict-return Don't treat control flow paths that fall off the end of a non-void function as unreachable
-fno-sycl Disables SYCL kernels compilation for device
-fno-temp-file Directly create compilation output files. This may lead to incorrect incremental builds if the compiler crashes
-fno-threadsafe-statics Do not emit code to make initialization of local statics thread safe
-fno-trigraphs Do not process trigraph sequences
-fno-unified-lto Use distinct LTO pipelines
-fno-unique-section-names
Don't use unique names for text and data sections
-fno-unroll-loops Turn off loop unroller
-fno-use-cxa-atexit Don't use __cxa_atexit for calling destructors
-fno-use-init-array Use .ctors/.dtors instead of .init_array/.fini_array
-fno-verify-intermediate-code
Disable verification of LLVM IR
-fno-visibility-inlines-hidden-static-local-var
Disables -fvisibility-inlines-hidden-static-local-var (this is the default on non-darwin targets)
-fno-xray-function-index
Omit function index section at the expense of single-function patching performance
-fno-zero-initialized-in-bss
Don't place zero initialized data in BSS
-fobjc-arc-exceptions Use EH-safe code when synthesizing retains and releases in -fobjc-arc
-fobjc-arc Synthesize retain and release calls for Objective-C pointers
-fobjc-avoid-heapify-local-blocks
Try to avoid heapifying local blocks
-fobjc-disable-direct-methods-for-testing
Ignore attribute objc_direct so that direct methods can be tested
-fobjc-encode-cxx-class-template-spec
Fully encode c++ class template specialization
-fobjc-exceptions Enable Objective-C exceptions
-fobjc-runtime=<value> Specify the target Objective-C runtime kind and version
-fobjc-weak Enable ARC-style weak references in Objective-C
-foffload-implicit-host-device-templates
Template functions or specializations without host, device and global attributes have implicit host device attributes (CUDA/HIP only)
-foffload-lto=<value> Set LTO mode for offload compilation
-foffload-lto Enable LTO in 'full' mode for offload compilation
-foffload-uniform-block Assume that kernels are launched with uniform block sizes (default true for CUDA/HIP and false otherwise)
-fomit-frame-pointer Omit the frame pointer from functions that don't need it. Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. On many targets, -O1 and higher omit the frame pointer by default. -m[no-]omit-leaf-frame-pointer takes precedence for leaf functions
-fopenacc Enable OpenACC
-fopenmp-extensions Enable all Clang extensions for OpenMP directives and clauses
-fopenmp-force-usm Force behvaior as if the user specified pragma omp requires unified_shared_memory.
-fopenmp-offload-mandatory
Do not create a host fallback if offloading to the device fails.
-fopenmp-simd Emit OpenMP code only for SIMD-based constructs.
-fopenmp-target-debug Enable debugging in the OpenMP offloading device RTL
-fopenmp-target-jit Emit code that can be JIT compiled for OpenMP offloading. Implies -foffload-lto=full
-fopenmp-targets=<value>
Specify comma-separated list of triples OpenMP offloading targets to be supported
-fopenmp-version=<value>
Set OpenMP version (e.g. 45 for OpenMP 4.5, 51 for OpenMP 5.1). Default value is 51 for Clang
-fopenmp Parse OpenMP pragmas and generate parallel code.
-foperator-arrow-depth=<value>
Maximum number of 'operator->'s to call for a member access
-foptimization-record-file=<file>
Specify the output name of the file containing the optimization remarks. Implies -fsave-optimization-record. On Darwin platforms, this cannot be used with multiple -arch <arch> options.
-foptimization-record-passes=<regex>
Only include passes which match a specified regular expression in the generated optimization record (by default, include all passes)
-forder-file-instrumentation
Generate instrumented code to collect order file into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)
-fpack-struct=<value> Specify the default maximum struct packing alignment
-fpascal-strings Recognize and construct Pascal-style string literals
-fpass-plugin=<dsopath> Load pass plugin from a dynamic shared object file (only with new pass manager).
-fpatchable-function-entry=<N,M>
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-codegen Generate code for uses of this PCH that assumes an explicit object file will be built for the PCH
-fpch-debuginfo Generate debug info for types in an object file built from this PCH and do not generate them elsewhere
-fpch-instantiate-templates
Instantiate templates already while building a PCH
-fpch-validate-input-files-content
Validate PCH input files based on content if mtime differs
-fplugin-arg-<name>-<arg>
Pass <arg> to plugin <name>
-fplugin=<dsopath> Load the named plugin (dynamic shared object)
-fprebuilt-implicit-modules
Look up implicit modules in the prebuilt module path
-fprebuilt-module-path=<directory>
Specify the prebuilt module path
-fproc-stat-report=<value>
Save subprocess statistics to the given file
-fproc-stat-report<value>
Print subprocess statistics
-fprofile-arcs Instrument code to produce gcov data files (*.gcda)
-fprofile-exclude-files=<value>
Instrument only functions from files where names don't match all the regexes separated by a semi-colon
-fprofile-filter-files=<value>
Instrument only functions from files where names match any regex separated by a semi-colon
-fprofile-function-groups=<N>
Partition functions into N groups and select only functions in group i to be instrumented using -fprofile-selected-function-group
-fprofile-generate=<directory>
Generate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)
-fprofile-generate Generate instrumented code to collect execution counts into default.profraw (overridden by 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-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-use=<value>
Use instrumentation data for profile-guided optimization
-fprofile-list=<value> Filename defining the list of functions/files to instrument. The file uses the sanitizer special case list format.
-fprofile-remapping-file=<file>
Use the remappings described in <file> to match the profile data against names in the program
-fprofile-sample-accurate
Specifies that the sample profile is accurate
-fprofile-sample-use=<value>
Enable sample-based profile guided optimizations
-fprofile-selected-function-group=<i>
Partition functions into N groups using -fprofile-function-groups and select only functions in group i to be instrumented. The valid range is 0 to N-1 inclusive
-fprofile-update=<method>
Set update method of profile counters
-fprofile-use=<pathname>
Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from <pathname>/default.profdata. Otherwise, it reads from file <pathname>.
-fprotect-parens Determines whether the optimizer honors parentheses when floating-point expressions are evaluated
-fpseudo-probe-for-profiling
Emit pseudo probes for sample profiling
-fptrauth-auth-traps Enable traps on authentication failures
-fptrauth-calls Enable signing and authentication of all indirect calls
-fptrauth-function-pointer-type-discrimination
Enable type discrimination on C function pointers
-fptrauth-indirect-gotos
Enable signing and authentication of indirect goto targets
-fptrauth-init-fini Enable signing of function pointers in init/fini arrays
-fptrauth-intrinsics Enable pointer authentication intrinsics
-fptrauth-returns Enable signing and authentication of return addresses
-fptrauth-type-info-vtable-pointer-discrimination
Enable type and address discrimination of vtable pointer of std::type_info
-fptrauth-vtable-pointer-address-discrimination
Enable address discrimination of vtable pointers
-fptrauth-vtable-pointer-type-discrimination
Enable type discrimination of vtable pointers
-frandomize-layout-seed-file=<file>
File holding the seed used by the randomize structure layout feature
-frandomize-layout-seed=<seed>
The seed used by the randomize structure layout feature
-fraw-string-literals Enable raw string literals
-freciprocal-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
Use atexit or __cxa_atexit to register global destructors
-frelaxed-template-template-args
Enable C++17 relaxed template template argument matching
-fropi Generate read-only position independent code (ARM only)
-frtlib-add-rpath Add -rpath with architecture-specific resource directory to the linker flags. When --hip-link is specified, also add -rpath with HIP runtime library directory to the linker flags
-frtlib-defaultlib On Windows, emit /defaultlib: directives to link compiler-rt libraries (default)
-frwpi Generate read-write position independent code (ARM only)
-fsafe-buffer-usage-suggestions
Display suggestions to update code associated with -Wunsafe-buffer-usage warnings
-fsample-profile-use-profi
Use profi to infer block and edge counts
-fsanitize-address-destructor=<value>
Set the kind of module destructors emitted by AddressSanitizer instrumentation. These destructors are emitted to unregister instrumented global variables when code is unloaded (e.g. via `dlclose()`).
-fsanitize-address-field-padding=<value>
Level of field padding for AddressSanitizer
-fsanitize-address-globals-dead-stripping
Enable linker dead stripping of globals in AddressSanitizer
-fsanitize-address-outline-instrumentation
Always generate function calls for address sanitizer instrumentation
-fsanitize-address-poison-custom-array-cookie
Enable poisoning array cookies when using custom operator new[] in AddressSanitizer
-fsanitize-address-use-after-return=<mode>
Select the mode of detecting stack use-after-return in AddressSanitizer
-fsanitize-address-use-after-scope
Enable use-after-scope detection in AddressSanitizer
-fsanitize-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-cfi-canonical-jump-tables
Make the jump table addresses canonical in the symbol table
-fsanitize-cfi-cross-dso
Enable control flow integrity (CFI) checks for cross-DSO calls.
-fsanitize-cfi-icall-experimental-normalize-integers
Normalize integers in CFI indirect call type signature checks
-fsanitize-cfi-icall-generalize-pointers
Generalize pointers in CFI indirect call type signature checks
-fsanitize-coverage-allowlist=<value>
Restrict sanitizer coverage instrumentation exclusively to modules and functions that match the provided special case list, except the blocked ones
-fsanitize-coverage-ignorelist=<value>
Disable sanitizer coverage instrumentation for modules and functions that match the provided special case list, even the allowed ones
-fsanitize-coverage=<value>
Specify the type of coverage instrumentation for Sanitizers
-fsanitize-hwaddress-abi=<value>
Select the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor). This option is currently unused.
-fsanitize-hwaddress-experimental-aliasing
Enable aliasing mode in HWAddressSanitizer
-fsanitize-ignorelist=<value>
Path to ignorelist file for sanitizers
-fsanitize-memory-param-retval
Enable detection of uninitialized parameters and return values
-fsanitize-memory-track-origins=<value>
Enable origins tracking in MemorySanitizer
-fsanitize-memory-track-origins
Enable origins tracking in MemorySanitizer
-fsanitize-memory-use-after-dtor
Enable use-after-destroy detection in MemorySanitizer
-fsanitize-memtag-mode=<value>
Set default MTE mode to 'sync' (default) or 'async'
-fsanitize-recover=<value>
Enable recovery for specified sanitizers
-fsanitize-stable-abi Stable ABI instrumentation for sanitizer runtime. Default: Conventional
-fsanitize-stats Enable sanitizer statistics gathering.
-fsanitize-system-ignorelist=<value>
Path to system ignorelist file for sanitizers
-fsanitize-thread-atomics
Enable atomic operations instrumentation in ThreadSanitizer (default)
-fsanitize-thread-func-entry-exit
Enable function entry/exit instrumentation in ThreadSanitizer (default)
-fsanitize-thread-memory-access
Enable memory access instrumentation in ThreadSanitizer (default)
-fsanitize-trap=<value> Enable trapping for specified sanitizers
-fsanitize-trap Enable trapping for all sanitizers
-fsanitize-undefined-strip-path-components=<number>
Strip (or keep only, if negative) a given number of path components when emitting check metadata.
-fsanitize=<check> Turn on runtime checks for various forms of undefined or suspicious behavior. See user manual for available checks
-fsave-optimization-record=<format>
Generate an optimization record file in a specific format
-fsave-optimization-record
Generate a YAML optimization record file
-fseh-exceptions Use SEH style exceptions
-fseparate-named-sections
Use separate unique sections for named sections (ELF Only)
-fshort-enums Allocate to an enum type only as many bytes as it needs for the declared range of possible values
-fshort-wchar Force wchar_t to be a short unsigned int
-fshow-overloads=<value>
Which overload candidates to show when overload resolution fails. Defaults to 'all'
-fshow-skipped-includes Show skipped includes in -H output.
-fsigned-char char is signed
-fsized-deallocation Enable C++14 sized global deallocation functions
-fsjlj-exceptions Use SjLj style exceptions
-fskip-odr-check-in-gmf Skip ODR checks for decls in the global module fragment.
-fslp-vectorize Enable the superword-level parallelism vectorization passes
-fspell-checking-limit=<value>
Set the maximum number of times to perform spell checking on unrecognized identifiers (0 = no limit)
-fsplit-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 Enables splitting of the LTO unit
-fsplit-machine-functions
Enable late function splitting using profile information (x86 ELF)
-fsplit-stack Use segmented stack
-fstack-clash-protection
Enable stack clash protection
-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-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. A function with a stack protector has a guard value added to the stack frame that is checked on function exit. The guard value must be positioned in the stack frame such that a buffer overflow from a vulnerable variable will overwrite the guard value before overwriting the function's return address. The reference stack guard value is stored in a global variable.
-fstack-size-section Emit section containing metadata on function stack sizes
-fstack-usage Emit .su file containing information on function stack sizes
-fstandalone-debug Emit full debug info for all types used by the program
-fstrict-aliasing Enable optimizations based on strict aliasing rules
-fstrict-enums Enable optimizations based on the strict definition of an enum's value range
-fstrict-flex-arrays=<n>
Enable optimizations based on the strict definition of flexible arrays
-fstrict-float-cast-overflow
Assume that overflowing float-to-int casts are undefined (default)
-fstrict-vtable-pointers
Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
-fswift-async-fp=<option>
Control emission of Swift async extended frame info
-fsycl Enables SYCL kernels compilation for device
-fsyntax-only Run the preprocessor, parser and semantic analysis stages
-fsystem-module Build this module as a system module. Only used with -emit-module
-ftemplate-backtrace-limit=<value>
Set the maximum number of entries to print in a template instantiation backtrace (0 = no limit)
-ftemplate-depth=<value>
Set the maximum depth of recursive template instantiation
-ftest-coverage Produce gcov notes files (*.gcno)
-fthin-link-bitcode=<value>
Write minimized bitcode to <file> for the ThinLTO thin link only
-fthinlto-index=<value> Perform ThinLTO importing using provided function summary index
-ftime-report=<value> (For new pass manager) 'per-pass': one report for each pass; 'per-pass-run': one report for each pass invocation
-ftime-trace-granularity=<value>
Minimum time granularity (in microseconds) traced by time profiler
-ftime-trace-verbose<value>
Make time trace capture verbose event details (e.g. source filenames). This can increase the size of the output by 2-3 times
-ftime-trace=<value> Similar to -ftime-trace. Specify the JSON file or a directory which will contain the JSON file
-ftime-trace Turn on time profiler. Generates JSON file based on output filename.
-ftrap-function=<value> Issue call to specified function rather than a trap instruction
-ftrapv-handler=<function name>
Specify the function to be called on overflow
-ftrapv Trap on integer overflow
-ftrigraphs Process trigraph sequences
-ftrivial-auto-var-init-max-size=<value>
Stop initializing trivial automatic stack variables if var size exceeds the specified number of instances (in bytes)
-ftrivial-auto-var-init-stop-after=<value>
Stop initializing trivial automatic stack variables after the specified number of instances
-ftrivial-auto-var-init=<value>
Initialize trivial automatic stack variables. Defaults to 'uninitialized'
-funified-lto Use the unified LTO pipeline
-funique-basic-block-section-names
Use unique names for basic block sections (ELF Only)
-funique-internal-linkage-names
Uniqueify Internal Linkage Symbol Names by appending the MD5 hash of the module path
-funroll-loops Turn on loop unroller
-funsafe-math-optimizations
Allow unsafe floating-point math optimizations which may decrease precision
-fuse-cuid=<value> Method to generate ID's for compilation units for single source offloading languages CUDA and HIP: 'hash' (ID's generated by hashing file path and command line options) | 'random' (ID's generated as random numbers) | 'none' (disabled). Default is 'hash'. This option will be overridden by option '-cuid=[ID]' if it is specified.
-fuse-line-directives Use #line in preprocessed output
-fvalidate-ast-input-files-content
Compute and store the hash of input files used to build an AST. Files with mismatching mtime's are considered valid if both contents is identical
-fveclib=<value> Use the given vector functions library
-fvectorize Enable the loop vectorization passes
-fverbose-asm Generate verbose assembly output
-fverify-intermediate-code
Enable verification of LLVM IR
-fvirtual-function-elimination
Enables dead virtual function elimination optimization. Requires -flto=full
-fvisibility-dllexport=<value>
The visibility for dllexport definitions. If Keep is specified the visibility is not adjusted [-fvisibility-from-dllstorageclass]
-fvisibility-externs-dllimport=<value>
The visibility for dllimport external declarations. If Keep is specified the visibility is not adjusted [-fvisibility-from-dllstorageclass]
-fvisibility-externs-nodllstorageclass=<value>
The visibility for external declarations without an explicit DLL storage class. If Keep is specified the visibility is not adjusted [-fvisibility-from-dllstorageclass]
-fvisibility-from-dllstorageclass
Override the visibility of globals based on their final DLL storage class.
-fvisibility-global-new-delete-hidden
Give global C++ operator new and delete declarations hidden visibility
-fvisibility-global-new-delete=<value>
The visibility for global C++ operator new and delete declarations. If 'source' is specified the visibility is not adjusted
-fvisibility-inlines-hidden-static-local-var
When -fvisibility-inlines-hidden is enabled, static variables in inline C++ member functions will also be given hidden visibility by default
-fvisibility-inlines-hidden
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-nodllstorageclass=<value>
The visibility for definitions without an explicit DLL storage class. If Keep is specified the visibility is not adjusted [-fvisibility-from-dllstorageclass]
-fvisibility=<value> Set the default symbol visibility for all global definitions
-fwasm-exceptions Use WebAssembly style exceptions
-fwhole-program-vtables Enables whole-program vtable optimization. Requires -flto
-fwrapv Treat signed integer overflow as two's complement
-fwritable-strings Store string literals as writable data
-fxl-pragma-pack Enable IBM XL #pragma pack handling
-fxray-always-emit-customevents
Always emit __xray_customevent(...) calls even if the containing function is not always instrumented
-fxray-always-emit-typedevents
Always emit __xray_typedevent(...) calls even if the containing function is not always instrumented
-fxray-always-instrument=<value>
DEPRECATED: Filename defining the whitelist for imbuing the 'always instrument' XRay attribute.
-fxray-attr-list=<value>
Filename defining the list of functions/types for imbuing XRay attributes.
-fxray-function-groups=<value>
Only instrument 1 of N groups
-fxray-ignore-loops Don't instrument functions with loops unless they also meet the minimum function size
-fxray-instruction-threshold=<value>
Sets the minimum function size to instrument with XRay
-fxray-instrumentation-bundle=<value>
Select which XRay instrumentation points to emit. Options: all, none, function-entry, function-exit, function, custom. Default is 'all'. 'function' includes both 'function-entry' and 'function-exit'.
-fxray-instrument Generate XRay instrumentation sleds on function entry and exit
-fxray-link-deps Link XRay runtime library when -fxray-instrument is specified (default)
-fxray-modes=<value> List of modes to link in by default into XRay instrumented binaries.
-fxray-never-instrument=<value>
DEPRECATED: Filename defining the whitelist for imbuing the 'never instrument' XRay attribute.
-fxray-selected-function-group=<value>
When using -fxray-function-groups, select which group of functions to instrument. Valid range is 0 to fxray-function-groups - 1
-fzero-call-used-regs=<value>
Clear call-used registers upon function return (AArch64/x86 only)
-fzvector Enable System z vector language extension
-F <value> Add directory to framework include search path
--gcc-install-dir=<value>
Use GCC installation in the specified directory. The directory ends with path components like 'lib{,32,64}/gcc{,-cross}/$triple/$version'. Note: executables (e.g. ld) used by the compiler are not overridden by the selected GCC installation
--gcc-toolchain=<value> Specify a directory where Clang can find 'include' and 'lib{,32,64}/gcc{,-cross}/$triple/$version'. Clang will use the GCC installation with the largest version
--gcc-triple=<value> Search for the GCC installation with the specified triple.
-gcodeview-command-line Emit compiler path and command line into CodeView debug information
-gcodeview-ghash Emit type record hashes in a .debug$H section
-gcodeview Generate CodeView debug information
-gdwarf-2 Generate source-level debug information with dwarf version 2
-gdwarf-3 Generate source-level debug information with dwarf version 3
-gdwarf-4 Generate source-level debug information with dwarf version 4
-gdwarf-5 Generate source-level debug information with dwarf version 5
-gdwarf32 Enables DWARF32 format for ELF binaries, if debug information emission is enabled.
-gdwarf64 Enables DWARF64 format for ELF binaries, if debug information emission is enabled.
-gdwarf Generate source-level debug information with the default dwarf version
-gembed-source Embed source text in DWARF debug sections
-gen-reproducer=<value> Emit reproducer on (option: off, crash (default), error, always)
-gline-directives-only Emit debug line info directives only
-gline-tables-only Emit debug line number tables only
-gmodules Generate debug info with external references to clang modules or precompiled headers
-gno-codeview-command-line
Don't emit compiler path and command line into CodeView debug information
-gno-embed-source Restore the default behavior of not embedding source text in DWARF debug sections
-gno-inline-line-tables Don't emit inline line tables.
--gpu-bundle-output Bundle output files of HIP device compilation
--gpu-instrument-lib=<value>
Instrument device library for HIP, which is a LLVM bitcode containing __cyg_profile_func_enter and __cyg_profile_func_exit
--gpu-max-threads-per-block=<value>
Default max threads per block for kernel launch bounds for HIP
-gpulibc Link the LLVM C Library for GPUs
-gsplit-dwarf=<value> Set DWARF fission mode
-gstrict-dwarf Restrict DWARF features to those defined in the specified version, avoiding features from later versions.
-gz=<value> DWARF debug sections compression type
-G <size> Put objects of at most <size> bytes into small data section (MIPS / Hexagon)
-g Generate source-level debug information
--help-hidden Display help for hidden options
-help Display available options
--hip-device-lib=<value>
HIP device library
--hip-link Link clang-offload-bundler bundles for HIP
--hip-path=<value> HIP runtime installation path, used for finding HIP version and adding HIP include path.
--hip-version=<value> HIP version in the format of major.minor.patch
--hipspv-pass-plugin=<dsopath>
path to a pass plugin for HIP to SPIR-V passes.
--hipstdpar-interpose-alloc
Replace all memory allocation / deallocation calls with hipManagedMalloc / hipFree equivalents
--hipstdpar-path=<value>
HIP Standard Parallel Algorithm Acceleration library path, used for finding and implicitly including the library header
--hipstdpar-prim-path=<value>
rocPrim path, required by the HIP Standard Parallel Algorithm Acceleration library, used to implicitly include the rocPrim library
--hipstdpar-thrust-path=<value>
rocThrust path, required by the HIP Standard Parallel Algorithm Acceleration library, used to implicitly include the rocThrust library
--hipstdpar Enable HIP acceleration for standard parallel algorithms
-H Show header includes and nesting depth
-I- Restrict all prior -I flags to double-quoted inclusion and remove current directory from include path
-iapinotes-modules <directory>
Add directory to the API notes search path referenced by module name
-ibuiltininc Enable builtin #include directories even when -nostdinc is used before or after -ibuiltininc. Using -nobuiltininc after the option disables it
-idirafter <value> Add directory to AFTER include search path
-iframeworkwithsysroot <directory>
Add directory to SYSTEM framework search path, absolute paths are relative to -isysroot
-iframework <value> Add directory to SYSTEM framework search path
-imacros <file> Include macros from file before parsing
-include-pch <file> Include precompiled header file
-include <file> Include file before parsing
-index-header-map Make the next included directory (-I or -F) an indexer header map
-iprefix <dir> Set the -iwithprefix/-iwithprefixbefore prefix
-iquote <directory> Add directory to QUOTE include search path
-isysroot <dir> Set the system root directory (usually /)
-isystem-after <directory>
Add directory to end of the SYSTEM include search path
-isystem <directory> Add directory to SYSTEM include search path
-ivfsoverlay <value> Overlay the virtual filesystem described by file over the real file system
-iwithprefixbefore <dir>
Set directory to include search path with prefix
-iwithprefix <dir> Set directory to SYSTEM include search path with prefix
-iwithsysroot <directory>
Add directory to SYSTEM include search path, absolute paths are relative to -isysroot
-I <dir> Add directory to the end of the list of include search paths
--libomptarget-amdgcn-bc-path=<value>
Path to libomptarget-amdgcn bitcode library
--libomptarget-amdgpu-bc-path=<value>
Path to libomptarget-amdgcn bitcode library
--libomptarget-nvptx-bc-path=<value>
Path to libomptarget-nvptx bitcode library
-L <dir> Add directory to library search path
-mabi=quadword-atomics Enable quadword atomics ABI on AIX (AIX PPC64 only). Uses lqarx/stqcx. instructions.
-mabicalls Enable SVR4-style position-independent code (Mips only)
-maix-shared-lib-tls-model-opt
For shared library loaded with the main program, change local-dynamic access(es) to initial-exec access(es) at the function level (AIX 64-bit only).
-maix-small-local-dynamic-tls
Produce a faster access sequence for local-dynamic TLS variables where the offset from the TLS base is encoded as an immediate operand (AIX 64-bit only). This access sequence is not used for variables larger than 32KB.
-maix-small-local-exec-tls
Produce a faster access sequence for local-exec TLS variables where the offset from the TLS base is encoded as an immediate operand (AIX 64-bit only). This access sequence is not used for variables larger than 32KB.
-maix-struct-return Return all structs in memory (PPC32 only)
-malign-branch-boundary=<value>
Specify the boundary's size to align branches
-malign-branch=<value> Specify types of branches to align
-malign-double Align doubles to two words in structs (x86 only)
-maltivec Enable AltiVec vector initializer syntax
-mamdgpu-ieee Sets the IEEE bit in the expected default floating point mode register. Floating point opcodes that support exception flag gathering quiet and propagate signaling NaN inputs per IEEE 754-2008. This option changes the ABI. (AMDGPU only)
-mamdgpu-precise-memory-op
Enable precise memory mode (AMDGPU only)
-mapx-features=<value> Enable features of APX
-mapx-inline-asm-use-gpr32
Enable use of GPR32 in inline assembly for APX
-march=<value> For a list of available architectures for the target use '-mcpu=help'
-marm64x<value> Link as a hybrid ARM64X image
-mbackchain Link stack frames through backchain on System Z
-mbranch-protection=<value>
Enforce targets of indirect branches and function returns
-mbranches-within-32B-boundaries
Align selected branches (fused, jcc, jmp) within 32-byte boundary
-mcabac Enable CABAC instructions
-mcmse Allow use of CMSE (Armv8-M Security Extensions)
-mcode-object-version=<value>
Specify code object ABI version. Defaults to 5. (AMDGPU only)
-mconstructor-aliases Enable emitting complete constructors and destructors as aliases when possible
-mcpu=<value> For a list of available CPUs for the target use '-mcpu=help'
-mcrbits Control the CR-bit tracking feature on PowerPC. ``-mcrbits`` (the enablement of CR-bit tracking support) is the default for POWER8 and above, as well as for all other CPUs when optimization is applied (-O2 and above).
-mcrc Allow use of CRC instructions (ARM/Mips only)
-mcumode Specify CU wavefront execution mode (AMDGPU only)
-mdaz-ftz Globally set the denormals-are-zero (DAZ) and flush-to-zero (FTZ) bits in the floating-point control register on program startup
-mdefault-visibility-export-mapping=<value>
Mapping between default visibility and export
-mdouble=<n Force double to be <n> bits
-MD Write a depfile containing user and system headers
-meabi <value> Set EABI type. Default depends on triple)
-membedded-data Place constants in the .rodata section instead of the .sdata section even if they meet the -G <size> threshold (MIPS)
-menable-experimental-extensions
Enable use of experimental RISC-V extensions.
-mexec-model=<value> Execution model (WebAssembly only)
-mexecute-only Disallow generation of data access to code sections (ARM only)
-mextern-sdata Assume that externally defined data is in the small data if it meets the -G <size> threshold (MIPS)
-mfentry Insert calls to fentry at function entry (x86/SystemZ only)
-mfix-cmse-cve-2021-35465
Work around VLLDM erratum CVE-2021-35465 (ARM only)
-mfix-cortex-a53-835769 Workaround Cortex-A53 erratum 835769 (AArch64 only)
-mfix-cortex-a57-aes-1742098
Work around Cortex-A57 Erratum 1742098 (ARM only)
-mfix-cortex-a72-aes-1655431
Work around Cortex-A72 Erratum 1655431 (ARM only)
-mforced-sw-shadow-stack
Force using software shadow stack when shadow-stack enabled
-mfp32 Use 32-bit floating point registers (MIPS only)
-mfp64 Use 64-bit floating point registers (MIPS only)
-mframe-chain=<value> Select the frame chain model used to emit frame records (Arm only).
-mfunction-return=<value>
Replace returns with jumps to ``__x86_return_thunk`` (x86 only, error otherwise)
-MF <file> Write depfile output from -MMD, -MD, -MM, or -M to <file>
-mgeneral-regs-only Generate code which only uses the general purpose registers (AArch64/x86 only)
-mglobal-merge Enable merging of globals
-mgpopt Use GP relative accesses for symbols known to be in a small data section (MIPS)
-mguard=<value> Enable or disable Control Flow Guard checks and guard tables emission
-MG Add missing headers to depfile
-mharden-sls=<value> Select straight-line speculation hardening scope (ARM/AArch64/X86 only). <arg> must be: all, none, retbr(ARM/AArch64), blr(ARM/AArch64), comdat(ARM/AArch64), nocomdat(ARM/AArch64), return(X86), indirect-jmp(X86)
-mhvx-ieee-fp Enable Hexagon HVX IEEE floating-point
-mhvx-length=<value> Set Hexagon Vector Length
-mhvx-qfloat Enable Hexagon HVX QFloat instructions
-mhvx=<value> Enable Hexagon Vector eXtensions
-mhvx Enable Hexagon Vector eXtensions
-miamcu Use Intel MCU ABI
-mignore-xcoff-visibility
Not emit the visibility attribute for asm in AIX OS or give all symbols 'unspecified' visibility in XCOFF object file
--migrate Run the migrator
-mincremental-linker-compatible
(integrated-as) Emit an object file which can be used with an incremental linker
-mindirect-branch-cs-prefix
Add cs prefix to call and jmp to indirect thunk
-mindirect-jump=<value> Change indirect jump instructions to inhibit speculation
-mios-version-min=<value>
Set iOS deployment target
-MJ <value> Write a compilation database entry per input
-mlasx Enable Loongson Advanced SIMD Extension (LASX).
-mlink-builtin-bitcode-postopt
Link builtin bitcodes after the optimization pipeline
-mllvm=<arg> Alias for -mllvm
-mllvm <value> Additional arguments to forward to LLVM's option processing
-mlocal-sdata Extend the -G behaviour to object local data (MIPS)
-mlong-calls Generate branches with extended addressability, usually via indirect jumps.
-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
-mlr-for-calls-only Do not allocate the LR register for general purpose usage, only for calls. (AArch64 only)
-mlsx Enable Loongson SIMD Extension (LSX).
-mlvi-cfi Enable only control-flow mitigations for Load Value Injection (LVI)
-mlvi-hardening Enable all mitigations for Load Value Injection (LVI)
-mmacos-version-min=<value>
Set macOS deployment target
-mmadd4 Enable the generation of 4-operand madd.s, madd.d and related instructions.
-mmark-bti-property Add .note.gnu.property with BTI to assembly files (AArch64 only)
-MMD Write a depfile containing user headers
-mmemops Enable generation of memop instructions
-mmlir <value> Additional arguments to forward to MLIR's option processing
-mms-bitfields Set the default structure layout to be compatible with the Microsoft compiler standard
-mmsa Enable MSA ASE (MIPS only)
-mmt Enable MT ASE (MIPS only)
-MM Like -MMD, but also implies -E and writes to stdout by default
-mno-abicalls Disable SVR4-style position-independent code (Mips only)
-mno-amdgpu-precise-memory-op
Disable precise memory mode (AMDGPU only)
-mno-apx-features=<value>
Disable features of APX
-mno-bti-at-return-twice
Do not add a BTI instruction after a setjmp or other return-twice construct (Arm/AArch64 only)
-mno-constructor-aliases
Disable emitting complete constructors and destructors as aliases when possible
-mno-crc Disallow use of CRC instructions (Mips only)
-mno-cumode Specify WGP wavefront execution mode (AMDGPU only)
-mno-daz-ftz Do not globally set the denormals-are-zero (DAZ) and flush-to-zero (FTZ) bits in the floating-point control register on program startup
-mno-embedded-data Do not place constants in the .rodata section instead of the .sdata if they meet the -G <size> threshold (MIPS)
-mno-execute-only Allow generation of data access to code sections (ARM only)
-mno-extern-sdata Do not assume that externally defined data is in the small data if it meets the -G <size> threshold (MIPS)
-mno-fix-cmse-cve-2021-35465
Don't work around VLLDM erratum CVE-2021-35465 (ARM only)
-mno-fix-cortex-a53-835769
Don't workaround Cortex-A53 erratum 835769 (AArch64 only)
-mno-fix-cortex-a57-aes-1742098
Don't work around Cortex-A57 Erratum 1742098 (ARM only)
-mno-fix-cortex-a72-aes-1655431
Don't work around Cortex-A72 Erratum 1655431 (ARM only)
-mno-fmv Disable function multiversioning
-mno-forced-sw-shadow-stack
Not force using software shadow stack when shadow-stack enabled
-mno-gather Disable generation of gather instructions in auto-vectorization(x86 only)
-mno-global-merge Disable merging of globals
-mno-gpopt Do not use GP relative accesses for symbols known to be in a small data section (MIPS)
-mno-hvx-ieee-fp Disable Hexagon HVX IEEE floating-point
-mno-hvx-qfloat Disable Hexagon HVX QFloat instructions
-mno-hvx Disable Hexagon Vector eXtensions
-mno-implicit-float Don't generate implicit floating point or vector instructions
-mno-incremental-linker-compatible
(integrated-as) Emit an object file which cannot be used with an incremental linker
-mno-lasx Disable Loongson Advanced SIMD Extension (LASX).
-mno-local-sdata Do not extend the -G behaviour to object local data (MIPS)
-mno-long-calls Restore the default behaviour of not generating long calls
-mno-lsx Disable Loongson SIMD Extension (LSX).
-mno-lvi-cfi Disable control-flow mitigations for Load Value Injection (LVI)
-mno-lvi-hardening Disable mitigations for Load Value Injection (LVI)
-mno-madd4 Disable the generation of 4-operand madd.s, madd.d and related instructions.
-mno-memops Disable generation of memop instructions
-mno-movt Disallow use of movt/movw pairs (ARM only)
-mno-ms-bitfields Do not set the default structure layout to be compatible with the Microsoft compiler standard
-mno-msa Disable MSA ASE (MIPS only)
-mno-mt Disable MT ASE (MIPS only)
-mno-neg-immediates Disallow converting instructions with negative immediates to their negation or inversion.
-mno-nvj Disable generation of new-value jumps
-mno-nvs Disable generation of new-value stores
-mno-outline-atomics Don't generate local calls to out-of-line atomic operations
-mno-outline Disable function outlining (AArch64 only)
-mno-packets Disable generation of instruction packets
-mno-pic-data-is-text-relative
Don't assume data segments are relative to text segment
-mno-regnames Use only register numbers when writing assembly output
-mno-relax Disable linker relaxation
-mno-restrict-it Allow generation of complex IT blocks.
-mno-save-restore Disable using library calls for save and restore
-mno-scalar-strict-align
Allow scalar memory accesses to be unaligned (RISC-V only)
-mno-scatter Disable generation of scatter instructions in auto-vectorization(x86 only)
-mno-seses Disable speculative execution side effect suppression (SESES)
-mno-stack-arg-probe Disable stack probes which are enabled by default
-mno-strict-align Allow memory accesses to be unaligned (AArch64/LoongArch/RISC-V only)
-mno-tgsplit Disable threadgroup split execution mode (AMDGPU only)
-mno-tls-direct-seg-refs
Disable direct TLS access through segment registers
-mno-tocdata=<value> Specifies a list of variables to be exempt from the TOC datatransformation.
-mno-tocdata This is the default. TOC data transformation is not applied to anyvariables. Only variables specified explicitly in -mtocdata= willhave the TOC data transformation.
-mno-unaligned-access Force all memory accesses to be aligned (AArch32/MIPSr6 only)
-mno-unaligned-symbols Expect external char-aligned symbols to be without ABI alignment (SystemZ only)
-mno-vector-strict-align
Allow vector memory accesses to be unaligned (RISC-V only)
-mno-wavefrontsize64 Specify wavefront size 32 mode (AMDGPU only)
-mnocrc Disallow use of CRC instructions (ARM only)
-mnop-mcount Generate mcount/__fentry__ calls as nops. To activate they need to be patched in.
-mnvj Enable generation of new-value jumps
-mnvs Enable generation of new-value stores
-module-dependency-dir <value>
Directory to dump module dependencies to
-module-file-info Provide information about a particular module file
-momit-leaf-frame-pointer
Omit frame pointer setup for leaf functions
-moutline-atomics Generate local calls to out-of-line atomic operations
-moutline Enable function outlining (AArch64 only)
-mpacked-stack Use packed stack layout (SystemZ only).
-mpackets Enable generation of instruction packets
-mpad-max-prefix-size=<value>
Specify maximum number of prefixes to use for padding
-mpic-data-is-text-relative
Assume data segments are relative to text segment
-mprefer-vector-width=<value>
Specifies preferred vector width for auto-vectorization. Defaults to 'none' which allows target specific decisions.
-mprintf-kind=<value> Specify the printf lowering scheme (AMDGPU only), allowed values are "hostcall"(printing happens during kernel execution, this scheme relies on hostcalls which require system to support pcie atomics) and "buffered"(printing happens after all kernel threads exit, this uses a printf buffer and does not rely on pcie atomic support)
-MP Create phony target for each dependency (other than main file)
-mqdsp6-compat Enable hexagon-qdsp6 backward compatibility
-MQ <value> Specify name of main file output to quote in depfile
-mrecip=<value> Control use of approximate reciprocal and reciprocal square root instructions followed by <n> iterations of Newton-Raphson refinement. <value> = ( ['!'] ['vec-'] ('rcp'|'sqrt') [('h'|'s'|'d')] [':'<n>] ) | 'all' | 'default' | 'none'
-mrecip Equivalent to '-mrecip=all'
-mrecord-mcount Generate a __mcount_loc section entry for each __fentry__ call.
-mregnames Use full register names when writing assembly output
-mrelax-all (integrated-as) Relax all machine instructions
-mrelax Enable linker relaxation
-mrestrict-it Disallow generation of complex IT blocks. It is off by default.
-mrtd Make StdCall calling convention the default
-mrvv-vector-bits=<value>
Specify the size in bits of an RVV vector register
-msave-restore Enable using library calls for save and restore
-mscalar-strict-align Force all scalar memory accesses to be aligned (RISC-V only)
-mseses Enable speculative execution side effect suppression (SESES). Includes LVI control flow integrity mitigations
-msign-return-address=<value>
Select return address signing scope
-msimd=<value> Select the SIMD extension(s) to be enabled in LoongArch either 'none', 'lsx', 'lasx'.
-mskip-rax-setup Skip setting up RAX register when passing variable arguments (x86 only)
-msmall-data-limit=<value>
Put global and static data smaller than the limit into a special section
-msoft-float Use software floating point
-msse2avx Specify that the assembler should encode SSE instructions with VEX prefix
-mstack-alignment=<value>
Set the stack alignment
-mstack-arg-probe Enable stack probes
-mstack-probe-size=<value>
Set the stack probe size
-mstack-protector-guard-offset=<value>
Use the given offset for addressing the stack-protector guard
-mstack-protector-guard-reg=<value>
Use the given reg for addressing the stack-protector guard
-mstack-protector-guard-symbol=<value>
Use the given symbol for addressing the stack-protector guard
-mstack-protector-guard=<value>
Use the given guard (global, tls) for addressing the stack-protector guard
-mstackrealign Force realign the stack at entry to every function
-mstrict-align Force all memory accesses to be aligned (AArch64/LoongArch/RISC-V only)
-msve-vector-bits=<value>
Specify the size in bits of an SVE vector register. Defaults to the vector length agnostic value of "scalable". (AArch64 only)
-msvr4-struct-return Return small structs in registers (PPC32 only)
-mtargetos=<value> Set the deployment target to be the specified OS and OS version
-mtgsplit Enable threadgroup split execution mode (AMDGPU only)
-mthread-model <value> The thread model to use. Defaults to 'posix')
-mtls-dialect=<value> Which thread-local storage dialect to use for dynamic accesses of TLS variables
-mtls-direct-seg-refs Enable direct TLS access through segment registers (default)
-mtls-size=<value> Specify bit size of immediate TLS offsets (AArch64 ELF only): 12 (for 4KB) | 24 (for 16MB, default) | 32 (for 4GB) | 48 (for 256TB, needs -mcmodel=large)
-mtocdata=<value> Specifies a list of variables to which the TOC data transformationwill be applied.
-mtocdata All suitable variables will have the TOC data transformation applied
-mtp=<value> Thread pointer access method. For AArch32: 'soft' uses a function call, or 'tpidrurw', 'tpidruro' or 'tpidrprw' use the three CP15 registers. 'cp15' is an alias for 'tpidruro'. For AArch64: 'tpidr_el0', 'tpidr_el1', 'tpidr_el2', 'tpidr_el3' or 'tpidrro_el0' use the five system registers. 'elN' is an alias for 'tpidr_elN'.
-mtune=<value> Only supported on AArch64, PowerPC, RISC-V, SPARC, SystemZ, and X86
-MT <value> Specify name of main file output in depfile
-munaligned-access Allow memory accesses to be unaligned (AArch32/MIPSr6 only)
-munaligned-symbols Expect external char-aligned symbols to be without ABI alignment (SystemZ only)
-munsafe-fp-atomics Enable generation of unsafe floating point atomic instructions. May generate more efficient code, but may not respect rounding and denormal modes, and may give incorrect results for certain memory destinations. (AMDGPU only)
-mvector-strict-align Force all vector memory accesses to be aligned (RISC-V only)
-mvevpu Emit VPU instructions for VE
-MV Use NMake/Jom format for the depfile
-mwavefrontsize64 Specify wavefront size 64 mode (AMDGPU only)
-mxcoff-build-id=<0xHEXSTRING>
On AIX, request creation of a build-id string, "0xHEXSTRING", in the string table of the loader section inside the linked binary
-mxcoff-roptr Place constant objects with relocatable address values in the RO data section and add -bforceimprw to the linker flags (AIX only)
-mzos-hlq-clang=<ClangHLQ>
High level qualifier for z/OS C++RT side deck datasets
-mzos-hlq-csslib=<CsslibHLQ>
High level qualifier for z/OS CSSLIB dataset
-mzos-hlq-le=<LeHLQ> High level qualifier for z/OS Language Environment datasets
-mzos-sys-include=<SysInclude>
Path to system headers on z/OS
-M Like -MD, but also implies -E and writes to stdout by default
--no-cuda-include-ptx=<value>
Do not include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.
--no-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-default-config Disable loading default configuration files
--no-gpu-bundle-output Do not bundle output files of HIP device compilation
-no-hip-rt Do not link against HIP runtime libraries
--no-offload-arch=<value>
Remove CUDA/HIP offloading device architecture (e.g. sm_35, gfx906) from the list of devices to compile for. 'all' resets the list to its default value.
--no-offload-new-driver Don't Use the new driver for offloading compilation.
--no-system-header-prefix=<prefix>
Treat all #include paths starting with <prefix> as not including a system header.
--no-wasm-opt Disable the wasm-opt optimizer
-nobuiltininc Disable builtin #include directories
-nogpuinc Do not add include paths for CUDA/HIP and do not include the default CUDA/HIP wrapper headers
-nogpulib Do not link device library for CUDA/HIP device compilation
-nohipwrapperinc Do not include the default HIP wrapper headers and include paths
-nostdinc++ Disable standard #include directories for the C++ standard library
--nvptx-arch-tool=<value>
Tool used for detecting NVIDIA GPU arch in the system.
-ObjC++ Treat source input files as Objective-C++ inputs
-objcmt-allowlist-dir-path=<value>
Only modify files with a filename contained in the provided directory path
-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-dot-syntax
Enable migration of setter/getter messages to property-dot syntax
-objcmt-migrate-property
Enable migration to modern ObjC property
-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=<value>
Alias for -objcmt-allowlist-dir-path
-ObjC Treat source input files as Objective-C inputs
-object-file-name=<file>
Set the output <file> for debug infos
-Ofast<value> Deprecated; use '-O3 -ffast-math' for the same behavior, or '-O3' to enable only conforming optimizations
--offload-arch=<value> Specify an offloading device architecture for CUDA, HIP, or OpenMP. (e.g. sm_35). If 'native' is used the compiler will detect locally installed architectures. For HIP offloading, the device architecture can be followed by target ID features delimited by a colon (e.g. gfx908:xnack+:sramecc-). May be specified more than once.
--offload-compress Compress offload device binaries (HIP only)
--offload-device-only Only compile for the offloading device.
--offload-host-device Compile for both the offloading host and device (default).
--offload-host-only Only compile for the offloading host.
--offload-link Use the new offloading linker to perform the link job.
--offload-new-driver Use the new driver for offloading compilation.
--offload=<value> Specify comma-separated list of offloading target triples (CUDA and HIP only)
-o <file> Write output to <file>
-pedantic Warn on language extensions
-pg Enable mcount instrumentation
-pipe Use pipes between commands, when possible
--precompile Only precompile the input
--pretty-sgf Emit pretty printed symbol graphs
-print-diagnostic-options
Print all of Clang's warning options
-print-effective-triple Print the effective target triple
-print-enabled-extensions
Print the extensions enabled by the given target and -march/-mcpu options. (AArch64 and RISC-V only)
-print-file-name=<file> Print the full library path of <file>
-print-ivar-layout Enable Objective-C Ivar layout bitmap print trace
-print-libgcc-file-name Print the library path for the currently used compiler runtime library ("libgcc.a" or "libclang_rt.builtins.*.a")
-print-library-module-manifest-path
Print the path for the C++ Standard library module manifest
-print-multi-flags-experimental
Print the flags used for selecting multilibs (experimental)
-print-prog-name=<name> Print the full program path of <name>
-print-resource-dir Print the resource directory pathname
-print-rocm-search-dirs Print the paths used for finding ROCm installation
-print-runtime-dir Print the directory pathname containing Clang's runtime libraries
-print-search-dirs Print the paths used for finding libraries and programs
-print-supported-cpus Print supported cpu models for the given target (if target is not specified, it will print the supported cpus for the default target)
-print-supported-extensions
Print supported -march extensions (RISC-V, AArch64 and ARM only)
-print-target-triple Print the normalized target triple
-print-targets Print the registered targets
-pthread Support POSIX threads in generated code
--ptxas-path=<value> Path to ptxas (used for compiling CUDA code)
-P Disable linemarker output in -E mode
-p Enable mcount instrumentation with prof
-Qn Do not emit metadata containing compiler name and version
-Qunused-arguments Don't emit warning for unused driver arguments
-Qy Emit metadata containing compiler name and version
-regcall4 Set __regcall4 as a default calling convention to respect __regcall ABI v.4
-relocatable-pch Whether to build a relocatable precompiled header
-rewrite-legacy-objc Rewrite Legacy Objective-C source to C++
-rewrite-objc Rewrite Objective-C source to C++
--rocm-device-lib-path=<value>
ROCm device library path. Alternative to rocm-path.
--rocm-path=<value> ROCm installation path, used for finding and automatically linking required bitcode libraries.
-Rpass-analysis=<value> Report transformation analysis from optimization passes whose name matches the given POSIX regular expression
-Rpass-missed=<value> Report missed transformations by optimization passes whose name matches the given POSIX regular expression
-Rpass=<value> Report transformations performed by optimization passes whose name matches the given POSIX regular expression
-rtlib=<value> Compiler runtime library to use
-R<remark> Enable the specified remark
-save-stats=<value> Save llvm statistics.
-save-stats Save llvm statistics.
-save-temps=<value> Save intermediate compilation results. <arg> can be set to 'cwd' for current working directory, or 'obj' which will save temporary files in the same directory as the final output file
-save-temps Alias for --save-temps=cwd
-serialize-diagnostics <value>
Serialize compiler diagnostics to a file
-shared-libsan Dynamically link the sanitizer runtime
--start-no-unused-arguments
Don't emit warnings about unused arguments for the following arguments
-static-libsan Statically link the sanitizer runtime (Not supported for ASan, TSan or UBSan on darwin)
-static-openmp Use the static host OpenMP runtime while linking.
-std=<value> Language standard to compile for
-stdlib++-isystem <directory>
Use directory as the C++ standard library include path
-stdlib=<value> C++ standard library to use
-sycl-std=<value> SYCL language standard to compile for.
--symbol-graph-dir=<value>
Directory in which to emit symbol graphs.
--system-header-prefix=<prefix>
Treat all #include paths starting with <prefix> as including a system header.
-S Only run preprocess and compilation steps
--target=<value> Generate code for the given target
-time Time individual commands
-traditional-cpp Enable some traditional CPP emulation
-trigraphs Process trigraph sequences
-T <script> Specify <script> as linker script
-undef undef all system defines
-unwindlib=<value> Unwind library to use
-U <macro> Undefine macro <macro>
--verify-debug-info Verify the binary representation of debug output
-verify-pch Load and verify that a pre-compiled header file is not stale
--version Print version information
-vfsoverlay <value> Overlay the virtual filesystem described by file over the real file system. Additionally, pass this overlay file to the linker if it supports it
-v Show commands to run and use verbose output
-Wa,<arg> Pass the comma separated arguments in <arg> to the assembler
--wasm-opt Enable the wasm-opt optimizer (default)
-Wdeprecated Enable warnings for deprecated constructs and define __DEPRECATED
-Winvalid-constexpr Enable checking of constexpr function bodies for validity within a constant expression context
-Wl,<arg> Pass the comma separated arguments in <arg> to the linker
-Wno-invalid-constexpr Disable checking of constexpr function bodies for validity within a constant expression context
-working-directory <value>
Resolve file paths relative to the specified directory
-Wp,<arg> Pass the comma separated arguments in <arg> to the preprocessor
-W<warning> Enable the specified warning
-w Suppress all warnings
-Xanalyzer <arg> Pass <arg> to the static analyzer
-Xarch_device <arg> Pass <arg> to the CUDA/HIP device compilation
-Xarch_host <arg> Pass <arg> to the CUDA/HIP host compilation
-Xassembler <arg> Pass <arg> to the assembler
-Xclang=<arg> Alias for -Xclang
-Xclang <arg> Pass <arg> to clang -cc1
-Xcuda-fatbinary <arg> Pass <arg> to fatbinary invocation
-Xcuda-ptxas <arg> Pass <arg> to the ptxas assembler
-Xlinker <arg> Pass <arg> to the linker
-Xoffload-linker<triple> <arg>
Pass <arg> to the offload linkers or the ones idenfied by -<triple>
-Xopenmp-target=<triple> <arg>
Pass <arg> to the target offloading toolchain identified by <triple>.
-Xopenmp-target <arg> Pass <arg> to the target offloading toolchain.
-Xpreprocessor <arg> Pass <arg> to the preprocessor
-x <language> Treat subsequent input files as having type <language>
-z <arg> Pass -z <arg> to the linker
dxc compatibility options.:
--dxv-path=<value> DXIL validator installation path
-fspv-target-env=<value>
Specify the target environment
-hlsl-entry <value> Entry point name for hlsl
clang-format
Clang-format is both a library and a stand-alone tool with the goal of automatically reformatting C++ sources files according to configurable style guides. To do so, clang-format uses Clang’s Lexer to transform an input file into a token stream and then changes all the whitespace around those tokens. The goal is for clang-format to both serve both as a user tool (ideally with powerful IDE integrations) and part of other refactoring tools, e.g. to do a reformatting of all the lines changed during a renaming.
This is a dependency package providing the clang format tool.
Installed size: 29 KB
How to install: sudo apt install clang-format
Dependencies:
- clang-format-19
clang-format
Manual page for clang-format 19
root@kali:~# clang-format --help
OVERVIEW: A tool to format C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# code.
If no arguments are specified, it formats the code from standard input
and writes the result to the standard output.
If <file>s are given, it reformats the files. If -i is specified
together with <file>s, the files are edited in-place. Otherwise, the
result is written to the standard output.
USAGE: clang-format [options] [@<file>] [<file> ...]
OPTIONS:
Clang-format options:
--Werror - If set, changes formatting warnings to errors
--Wno-error=<value> - If set don't error out on the specified warning type.
=unknown - If set, unknown format options are only warned about.
This can be used to enable formatting, even if the
configuration contains unknown (newer) options.
Use with caution, as this might lead to dramatically
differing format depending on an option being
supported or not.
--assume-filename=<string> - Set filename used to determine the language and to find
.clang-format file.
Only used when reading from stdin.
If this is not passed, the .clang-format file is searched
relative to the current working directory when reading stdin.
Unrecognized filenames are treated as C++.
supported:
CSharp: .cs
Java: .java
JavaScript: .mjs .js .ts
Json: .json
Objective-C: .m .mm
Proto: .proto .protodevel
TableGen: .td
TextProto: .txtpb .textpb .pb.txt .textproto .asciipb
Verilog: .sv .svh .v .vh
--cursor=<uint> - The position of the cursor when invoking
clang-format from an editor integration
--dry-run - If set, do not actually make the formatting changes
--dump-config - Dump configuration options to stdout and exit.
Can be used with -style option.
--fail-on-incomplete-format - If set, fail with exit code 1 on incomplete format.
--fallback-style=<string> - The name of the predefined style used as a
fallback in case clang-format is invoked with
-style=file, but can not find the .clang-format
file to use. Defaults to 'LLVM'.
Use -fallback-style=none to skip formatting.
--ferror-limit=<uint> - Set the maximum number of clang-format errors to emit
before stopping (0 = no limit).
Used only with --dry-run or -n
--files=<filename> - A file containing a list of files to process, one per line.
-i - Inplace edit <file>s, if specified.
--length=<uint> - Format a range of this length (in bytes).
Multiple ranges can be formatted by specifying
several -offset and -length pairs.
When only a single -offset is specified without
-length, clang-format will format up to the end
of the file.
Can only be used with one input file.
--lines=<string> - <start line>:<end line> - format a range of
lines (both 1-based).
Multiple ranges can be formatted by specifying
several -lines arguments.
Can't be used with -offset and -length.
Can only be used with one input file.
-n - Alias for --dry-run
--offset=<uint> - Format a range starting at this byte offset.
Multiple ranges can be formatted by specifying
several -offset and -length pairs.
Can only be used with one input file.
--output-replacements-xml - Output replacements as XML.
--qualifier-alignment=<string> - If set, overrides the qualifier alignment style
determined by the QualifierAlignment style flag
--sort-includes - If set, overrides the include sorting behavior
determined by the SortIncludes style flag
--style=<string> - Set coding style. <string> can be:
1. A preset: LLVM, GNU, Google, Chromium, Microsoft,
Mozilla, WebKit.
2. 'file' to load style configuration from a
.clang-format file in one of the parent directories
of the source file (for stdin, see --assume-filename).
If no .clang-format file is found, falls back to
--fallback-style.
--style=file is the default.
3. 'file:<format_file_path>' to explicitly specify
the configuration file.
4. "{key: value, ...}" to set specific parameters, e.g.:
--style="{BasedOnStyle: llvm, IndentWidth: 8}"
--verbose - If set, shows the list of processed files
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
clang-format-diff
Manual page for clang-format-diff.py 19
root@kali:~# clang-format-diff -h
usage: clang-format-diff [-h] [-i] [-p NUM] [-regex PATTERN] [-iregex PATTERN]
[-sort-includes] [-v] [-style STYLE]
[-fallback-style FALLBACK_STYLE] [-binary BINARY]
This script reads input from a unified diff and reformats all the changed
lines. This is useful to reformat all the lines touched by a specific patch.
Example usage for git/svn users:
git diff -U0 --no-color --relative HEAD^ | clang-format-diff -p1 -i
svn diff --diff-cmd=diff -x-U0 | clang-format-diff -i
It should be noted that the filename contained in the diff is used unmodified
to determine the source file to update. Users calling this script directly
should be careful to ensure that the path in the diff is correct relative to the
current working directory.
options:
-h, --help show this help message and exit
-i apply edits to files instead of displaying a diff
-p NUM strip the smallest prefix containing P slashes
-regex PATTERN custom pattern selecting file paths to reformat (case
sensitive, overrides -iregex)
-iregex PATTERN custom pattern selecting file paths to reformat (case
insensitive, overridden by -regex)
-sort-includes let clang-format sort include blocks
-v, --verbose be more verbose, ineffective without -i
-style STYLE formatting style to apply (LLVM, GNU, Google,
Chromium, Microsoft, Mozilla, WebKit)
-fallback-style FALLBACK_STYLE
The name of the predefined style used as afallback in
case clang-format is invoked with-style=file, but can
not find the .clang-formatfile to use.
-binary BINARY location of binary to use for clang-format
git-clang-format
root@kali:~# git-clang-format -h
usage: git clang-format [OPTIONS] [<commit>] [<commit>|--staged] [--] [<file>...]
If zero or one commits are given, run clang-format on all lines that differ
between the working directory and <commit>, which defaults to HEAD. Changes are
only applied to the working directory, or in the stage/index.
Examples:
To format staged changes, i.e everything that's been `git add`ed:
git clang-format
To also format everything touched in the most recent commit:
git clang-format HEAD~1
If you're on a branch off main, to format everything touched on your branch:
git clang-format main
If two commits are given (requires --diff), run clang-format on all lines in the
second <commit> that differ from the first <commit>.
The following git-config settings set the default of the corresponding option:
clangFormat.binary
clangFormat.commit
clangFormat.extensions
clangFormat.style
positional arguments:
<commit> revision from which to compute the diff
<file>... if specified, only consider differences in these files
options:
-h, --help show this help message and exit
--binary BINARY path to clang-format
--commit COMMIT default commit to use if none is specified
--diff print a diff instead of applying the changes
--diffstat print a diffstat instead of applying the changes
--extensions EXTENSIONS
comma-separated list of file extensions to format,
excluding the period and case-insensitive
-f, --force allow changes to unstaged files
-p, --patch select hunks interactively
-q, --quiet print less information
--staged, --cached format lines in the stage instead of the working dir
--style STYLE passed to clang-format
-v, --verbose print extra information
--diff_from_common_commit
diff from the last common commit for commits in
separate branches rather than the exact point of the
commits
clang-tidy
Provide an extensible framework for diagnosing and fixing typical programming errors, like style violations, interface misuse, or bugs that can be deduced via static analysis. clang-tidy is modular and provides a convenient interface for writing new checks.
This is a dependency package providing the clang tidy tool.
Installed size: 21 KB
How to install: sudo apt install clang-tidy
Dependencies:
- clang-tidy-19
clang-tidy
Manual page for clang-tidy 19
root@kali:~# clang-tidy -h
USAGE: clang-tidy [options] <source0> [... <sourceN>]
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
clang-tidy options:
--allow-no-checks - Allow empty enabled checks. This suppresses
the "no checks enabled" error when disabling
all of the checks.
--checks=<string> - Comma-separated list of globs with optional '-'
prefix. Globs are processed in order of
appearance in the list. Globs without '-'
prefix add checks with matching names to the
set, globs with the '-' prefix remove checks
with matching names from the set of enabled
checks. This option's value is appended to the
value of the 'Checks' option in .clang-tidy
file, if any.
--config=<string> - Specifies a configuration in YAML/JSON format:
-config="{Checks: '*',
CheckOptions: {x: y}}"
When the value is empty, clang-tidy will
attempt to find a file named .clang-tidy for
each source file in its parent directories.
--config-file=<string> - Specify the path of .clang-tidy or custom config file:
e.g. --config-file=/some/path/myTidyConfigFile
This option internally works exactly the same way as
--config option after reading specified config file.
Use either --config-file or --config, not both.
--dump-config - Dumps configuration in the YAML format to
stdout. This option can be used along with a
file name (and '--' if the file is outside of a
project with configured compilation database).
The configuration used for this file will be
printed.
Use along with -checks=* to include
configuration of all checks.
--enable-check-profile - Enable per-check timing profiles, and print a
report to stderr.
--enable-module-headers-parsing - Enables preprocessor-level module header parsing
for C++20 and above, empowering specific checks
to detect macro definitions within modules. This
feature may cause performance and parsing issues
and is therefore considered experimental.
--exclude-header-filter=<string> - Regular expression matching the names of the
headers to exclude diagnostics from. Diagnostics
from the main file of each translation unit are
always displayed.
Must be used together with --header-filter.
Can be used together with -line-filter.
This option overrides the 'ExcludeHeaderFilterRegex'
option in .clang-tidy file, if any.
--explain-config - For each enabled check explains, where it is
enabled, i.e. in clang-tidy binary, command
line or a specific configuration file.
--export-fixes=<filename> - YAML file to store suggested fixes in. The
stored fixes can be applied to the input source
code with clang-apply-replacements.
--extra-arg=<string> - Additional argument to append to the compiler command line
--extra-arg-before=<string> - Additional argument to prepend to the compiler command line
--fix - Apply suggested fixes. Without -fix-errors
clang-tidy will bail out if any compilation
errors were found.
--fix-errors - Apply suggested fixes even if compilation
errors were found. If compiler errors have
attached fix-its, clang-tidy will apply them as
well.
--fix-notes - If a warning has no fix, but a single fix can
be found through an associated diagnostic note,
apply the fix.
Specifying this flag will implicitly enable the
'--fix' flag.
--format-style=<string> - Style for formatting code around applied fixes:
- 'none' (default) turns off formatting
- 'file' (literally 'file', not a placeholder)
uses .clang-format file in the closest parent
directory
- '{ <json> }' specifies options inline, e.g.
-format-style='{BasedOnStyle: llvm, IndentWidth: 8}'
- 'llvm', 'google', 'webkit', 'mozilla'
See clang-format documentation for the up-to-date
information about formatting styles and options.
This option overrides the 'FormatStyle` option in
.clang-tidy file, if any.
--header-filter=<string> - Regular expression matching the names of the
headers to output diagnostics from. Diagnostics
from the main file of each translation unit are
always displayed.
Can be used together with -line-filter.
This option overrides the 'HeaderFilterRegex'
option in .clang-tidy file, if any.
--line-filter=<string> - List of files with line ranges to filter the
warnings. Can be used together with
-header-filter. The format of the list is a
JSON array of objects:
[
{"name":"file1.cpp","lines":[[1,3],[5,7]]},
{"name":"file2.h"}
]
--list-checks - List all enabled checks and exit. Use with
-checks=* to list all available checks.
--load=<pluginfilename> - Load the specified plugin
-p <string> - Build path
--quiet - Run clang-tidy in quiet mode. This suppresses
printing statistics about ignored warnings and
warnings treated as errors if the respective
options are specified.
--store-check-profile=<prefix> - By default reports are printed in tabulated
format to stderr. When this option is passed,
these per-TU profiles are instead stored as JSON.
--system-headers - Display the errors from system headers.
This option overrides the 'SystemHeaders' option
in .clang-tidy file, if any.
--use-color - Use colors in diagnostics. If not set, colors
will be used if the terminal connected to
standard output supports colors.
This option overrides the 'UseColor' option in
.clang-tidy file, if any.
--verify-config - Check the config files to ensure each check and
option is recognized.
--vfsoverlay=<filename> - Overlay the virtual filesystem described by file
over the real file system.
--warnings-as-errors=<string> - Upgrades warnings to errors. Same format as
'-checks'.
This option's value is appended to the value of
the 'WarningsAsErrors' option in .clang-tidy
file, if any.
-p <build-path> is used to read a compile command database.
For example, it can be a CMake build directory in which a file named
compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
CMake option to get this output). When no build path is specified,
a search for compile_commands.json will be attempted through all
parent paths of the first input file . See:
https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html for an
example of setting up Clang Tooling on a source tree.
<source0> ... specify the paths of source files. These paths are
looked up in the compile command database. If the path of a file is
absolute, it needs to point into CMake's source tree. If the path is
relative, the current working directory needs to be in the CMake
source tree and the file must be in a subdirectory of the current
working directory. "./" prefixes in the relative files will be
automatically removed, but the rest of a relative path must be a
suffix of a path in the compile command database.
Configuration files:
clang-tidy attempts to read configuration for each source file from a
.clang-tidy file located in the closest parent directory of the source
file. The .clang-tidy file is specified in YAML format. If any configuration
options have a corresponding command-line option, command-line option takes
precedence.
The following configuration options may be used in a .clang-tidy file:
CheckOptions - List of key-value pairs defining check-specific
options. Example:
CheckOptions:
some-check.SomeOption: 'some value'
Checks - Same as '--checks'. Additionally, the list of
globs can be specified as a list instead of a
string.
ExcludeHeaderFilterRegex - Same as '--exclude-header-filter'.
ExtraArgs - Same as '--extra-args'.
ExtraArgsBefore - Same as '--extra-args-before'.
FormatStyle - Same as '--format-style'.
HeaderFileExtensions - File extensions to consider to determine if a
given diagnostic is located in a header file.
HeaderFilterRegex - Same as '--header-filter-regex'.
ImplementationFileExtensions - File extensions to consider to determine if a
given diagnostic is located in an
implementation file.
InheritParentConfig - If this option is true in a config file, the
configuration file in the parent directory
(if any exists) will be taken and the current
config file will be applied on top of the
parent one.
SystemHeaders - Same as '--system-headers'.
UseColor - Same as '--use-color'.
User - Specifies the name or e-mail of the user
running clang-tidy. This option is used, for
example, to place the correct user name in
TODO() comments in the relevant check.
WarningsAsErrors - Same as '--warnings-as-errors'.
The effective configuration can be inspected using --dump-config:
$ clang-tidy --dump-config
---
Checks: '-*,some-check'
WarningsAsErrors: ''
HeaderFileExtensions: ['', 'h','hh','hpp','hxx']
ImplementationFileExtensions: ['c','cc','cpp','cxx']
HeaderFilterRegex: ''
FormatStyle: none
InheritParentConfig: true
User: user
CheckOptions:
some-check.SomeOption: 'some value'
...
clang-tidy-diff
root@kali:~# clang-tidy-diff -h
usage: clang-tidy-diff [-h] [-clang-tidy-binary PATH] [-p NUM]
[-regex PATTERN] [-iregex PATTERN] [-j J]
[-timeout TIMEOUT] [-fix] [-checks CHECKS]
[-config-file CONFIG_FILE] [-use-color]
[-path BUILD_PATH] [-export-fixes FILE_OR_DIRECTORY]
[-extra-arg EXTRA_ARG]
[-extra-arg-before EXTRA_ARG_BEFORE] [-quiet]
[-load PLUGINS] [-allow-no-checks]
Run clang-tidy against changed files, and output diagnostics only for modified
lines.
options:
-h, --help show this help message and exit
-clang-tidy-binary PATH
path to clang-tidy binary
-p NUM strip the smallest prefix containing P slashes
-regex PATTERN custom pattern selecting file paths to check (case
sensitive, overrides -iregex)
-iregex PATTERN custom pattern selecting file paths to check (case
insensitive, overridden by -regex)
-j J number of tidy instances to be run in parallel.
-timeout TIMEOUT timeout per each file in seconds.
-fix apply suggested fixes
-checks CHECKS checks filter, when not specified, use clang-tidy
default
-config-file CONFIG_FILE
Specify the path of .clang-tidy or custom config file
-use-color Use colors in output
-path BUILD_PATH Path used to read a compile command database.
-export-fixes FILE_OR_DIRECTORY
A directory or a yaml file to store suggested fixes
in, which can be applied with clang-apply-
replacements. If the parameter is a directory, the
fixes of each compilation unit are stored in
individual yaml files in the directory.
-extra-arg EXTRA_ARG Additional argument to append to the compiler command
line.
-extra-arg-before EXTRA_ARG_BEFORE
Additional argument to prepend to the compiler command
line.
-quiet Run clang-tidy in quiet mode
-load PLUGINS Load the specified plugin in clang-tidy.
-allow-no-checks Allow empty enabled checks.
run-clang-tidy
root@kali:~# run-clang-tidy -h
usage: run-clang-tidy [-h] [-allow-enabling-alpha-checkers]
[-clang-tidy-binary PATH]
[-clang-apply-replacements-binary PATH] [-checks CHECKS]
[-config CONFIG | -config-file CONFIG_FILE]
[-exclude-header-filter EXCLUDE_HEADER_FILTER]
[-header-filter HEADER_FILTER]
[-source-filter SOURCE_FILTER]
[-line-filter LINE_FILTER]
[-export-fixes file_or_directory] [-j J] [-fix]
[-format] [-style STYLE] [-use-color [USE_COLOR]]
[-p BUILD_PATH] [-extra-arg EXTRA_ARG]
[-extra-arg-before EXTRA_ARG_BEFORE] [-quiet]
[-load PLUGINS] [-warnings-as-errors WARNINGS_AS_ERRORS]
[-allow-no-checks]
[files ...]
Runs clang-tidy over all files in a compilation database. Requires clang-tidy
and clang-apply-replacements in $PATH or in your build directory.
positional arguments:
files Files to be processed (regex on path).
options:
-h, --help show this help message and exit
-allow-enabling-alpha-checkers
Allow alpha checkers from clang-analyzer.
-clang-tidy-binary PATH
Path to clang-tidy binary.
-clang-apply-replacements-binary PATH
Path to clang-apply-replacements binary.
-checks CHECKS Checks filter, when not specified, use clang-tidy
default.
-config CONFIG Specifies a configuration in YAML/JSON format:
-config="{Checks: '*', CheckOptions: {x: y}}" When the
value is empty, clang-tidy will attempt to find a file
named .clang-tidy for each source file in its parent
directories.
-config-file CONFIG_FILE
Specify the path of .clang-tidy or custom config file:
e.g. -config-file=/some/path/myTidyConfigFile. This
option internally works exactly the same way as
-config option after reading specified config file.
Use either -config-file or -config, not both.
-exclude-header-filter EXCLUDE_HEADER_FILTER
Regular expression matching the names of the headers
to exclude diagnostics from. Diagnostics from the main
file of each translation unit are always displayed.
-header-filter HEADER_FILTER
Regular expression matching the names of the headers
to output diagnostics from. Diagnostics from the main
file of each translation unit are always displayed.
-source-filter SOURCE_FILTER
Regular expression matching the names of the source
files from compilation database to output diagnostics
from.
-line-filter LINE_FILTER
List of files with line ranges to filter the warnings.
-export-fixes file_or_directory
A directory or a yaml file to store suggested fixes
in, which can be applied with clang-apply-
replacements. If the parameter is a directory, the
fixes of each compilation unit are stored in
individual yaml files in the directory.
-j J Number of tidy instances to be run in parallel.
-fix apply fix-its.
-format Reformat code after applying fixes.
-style STYLE The style of reformat code after applying fixes.
-use-color [USE_COLOR]
Use colors in diagnostics, overriding clang-tidy's
default behavior. This option overrides the 'UseColor'
option in .clang-tidy file, if any.
-p BUILD_PATH Path used to read a compile command database.
-extra-arg EXTRA_ARG Additional argument to append to the compiler command
line.
-extra-arg-before EXTRA_ARG_BEFORE
Additional argument to prepend to the compiler command
line.
-quiet Run clang-tidy in quiet mode.
-load PLUGINS Load the specified plugin in clang-tidy.
-warnings-as-errors WARNINGS_AS_ERRORS
Upgrades warnings to errors. Same format as '-checks'.
-allow-no-checks Allow empty enabled checks.
clang-tools
Clang project is a C, C++, Objective C and Objective C++ front-end for the LLVM compiler. Its goal is to offer a replacement to the GNU Compiler Collection (GCC).
Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also provides most of the support of C++20.
This is a dependency package providing the clang tools package.
Installed size: 29 KB
How to install: sudo apt install clang-tools
Dependencies:
- clang-tools-19
c-index-test
root@kali:~# c-index-test -h
usage: c-index-test -code-completion-at=<site> <compiler arguments>
c-index-test -code-completion-timing=<site> <compiler arguments>
c-index-test -cursor-at=<site> <compiler arguments>
c-index-test -evaluate-cursor-at=<site> <compiler arguments>
c-index-test -get-macro-info-cursor-at=<site> <compiler arguments>
c-index-test -file-refs-at=<site> <compiler arguments>
c-index-test -file-includes-in=<filename> <compiler arguments>
c-index-test -index-file [-check-prefix=<FileCheck prefix>] <compiler arguments>
c-index-test -index-file-full [-check-prefix=<FileCheck prefix>] <compiler arguments>
c-index-test -index-tu [-check-prefix=<FileCheck prefix>] <AST file>
c-index-test -index-compile-db [-check-prefix=<FileCheck prefix>] <compilation database>
c-index-test -test-file-scan <AST file> <source file> [FileCheck prefix]
c-index-test -test-load-tu <AST file> <symbol filter> [FileCheck prefix]
c-index-test -test-load-tu-usrs <AST file> <symbol filter> [FileCheck prefix]
c-index-test -test-load-source <symbol filter> {<args>}*
c-index-test -test-load-source-memory-usage <symbol filter> {<args>}*
c-index-test -test-load-source-reparse <trials> <symbol filter> {<args>}*
c-index-test -test-load-source-usrs <symbol filter> {<args>}*
c-index-test -test-load-source-usrs-memory-usage <symbol filter> {<args>}*
c-index-test -test-annotate-tokens=<range> {<args>}*
c-index-test -test-inclusion-stack-source {<args>}*
c-index-test -test-inclusion-stack-tu <AST file>
c-index-test -test-print-linkage-source {<args>}*
c-index-test -test-print-visibility {<args>}*
c-index-test -test-print-type {<args>}*
c-index-test -test-print-type-size {<args>}*
c-index-test -test-print-bitwidth {<args>}*
c-index-test -test-print-target-info {<args>}*
c-index-test -test-print-type-declaration {<args>}*
c-index-test -print-usr [<CursorKind> {<args>}]*
c-index-test -print-usr-file <file>
c-index-test -single-symbol-sgfs <symbol filter> {<args>*}
c-index-test -single-symbol-sgf-at=<site> {<args>*}
c-index-test -single-symbol-sgf-for=<usr> {<args>}*
c-index-test -write-pch <file> <compiler arguments>
c-index-test -compilation-db [lookup <filename>] database
c-index-test -print-build-session-timestamp
c-index-test -read-diagnostics <file>
<symbol filter> values:
all - load all symbols, including those from PCH
local - load all symbols except those in PCH
category - only load ObjC categories (non-PCH)
interface - only load ObjC interfaces (non-PCH)
protocol - only load ObjC protocols (non-PCH)
function - only load functions (non-PCH)
typedef - only load typdefs (non-PCH)
scan-function - scan function bodies (non-PCH)
clang-apply-replacements
Manual page for clang-apply-replacements 19
root@kali:~# clang-apply-replacements -h
USAGE: clang-apply-replacements [options] <Search Root Directory>
OPTIONS:
Formatting Options:
--format - Enable formatting of code changed by applying replacements.
Use -style to choose formatting style.
--style=<string> - Set coding style. <string> can be:
1. A preset: LLVM, GNU, Google, Chromium, Microsoft,
Mozilla, WebKit.
2. 'file' to load style configuration from a
.clang-format file in one of the parent directories
of the source file (for stdin, see --assume-filename).
If no .clang-format file is found, falls back to
--fallback-style.
--style=file is the default.
3. 'file:<format_file_path>' to explicitly specify
the configuration file.
4. "{key: value, ...}" to set specific parameters, e.g.:
--style="{BasedOnStyle: llvm, IndentWidth: 8}"
--style-config=<string> - Path to a directory containing a .clang-format file
describing a formatting style to use for formatting
code when -style=file.
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Replacement Options:
--ignore-insert-conflict - Ignore insert conflict and keep running to fix.
--remove-change-desc-files - Remove the change description files regardless of successful
merging/replacing.
clang-check
Manual page for clang-check 19
root@kali:~# clang-check -h
USAGE: clang-check [options] <source0> [... <sourceN>]
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
clang-check options:
--analyze - Run static analysis engine
--analyzer-output-path=<string> - Write output to <file>
--ast-dump - Build ASTs and then debug dump them
--ast-dump-filter=<string> - Use with -ast-dump or -ast-print to dump/print only AST declaration nodes having a certain substring in a qualified name. Use -ast-list to list all filterable declaration node names.
--ast-list - Build ASTs and print the list of declaration node qualified names
--ast-print - Build ASTs and then pretty-print them
--extra-arg=<string> - Additional argument to append to the compiler command line
--extra-arg-before=<string> - Additional argument to prepend to the compiler command line
--fix-what-you-can - Apply fix-it advice even in the presence of unfixable errors
--fixit - Apply fix-it advice to the input source
-p <string> - Build path
--syntax-tree-dump - dump the syntax tree
--tokens-dump - dump the preprocessed tokens
-p <build-path> is used to read a compile command database.
For example, it can be a CMake build directory in which a file named
compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
CMake option to get this output). When no build path is specified,
a search for compile_commands.json will be attempted through all
parent paths of the first input file . See:
https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html for an
example of setting up Clang Tooling on a source tree.
<source0> ... specify the paths of source files. These paths are
looked up in the compile command database. If the path of a file is
absolute, it needs to point into CMake's source tree. If the path is
relative, the current working directory needs to be in the CMake
source tree and the file must be in a subdirectory of the current
working directory. "./" prefixes in the relative files will be
automatically removed, but the rest of a relative path must be a
suffix of a path in the compile command database.
For example, to run clang-check on all files in a subtree of the
source tree, use:
find path/in/subtree -name '*.cpp'|xargs clang-check
or using a specific build path:
find path/in/subtree -name '*.cpp'|xargs clang-check -p build/path
Note, that path/in/subtree and current directory should follow the
rules described above.
clang-query
Manual page for clang-query 19
root@kali:~# clang-query -h
USAGE: clang-query [options] <source0> [... <sourceN>]
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
clang-query options:
-c <command> - Specify command to run
--extra-arg=<string> - Additional argument to append to the compiler command line
--extra-arg-before=<string> - Additional argument to prepend to the compiler command line
-f <file> - Read commands from file
-p <string> - Build path
--preload=<file> - Preload commands from file and start interactive mode
--use-color - Use colors in detailed AST output. If not set, colors
will be used if the terminal connected to
standard output supports colors.
-p <build-path> is used to read a compile command database.
For example, it can be a CMake build directory in which a file named
compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
CMake option to get this output). When no build path is specified,
a search for compile_commands.json will be attempted through all
parent paths of the first input file . See:
https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html for an
example of setting up Clang Tooling on a source tree.
<source0> ... specify the paths of source files. These paths are
looked up in the compile command database. If the path of a file is
absolute, it needs to point into CMake's source tree. If the path is
relative, the current working directory needs to be in the CMake
source tree and the file must be in a subdirectory of the current
working directory. "./" prefixes in the relative files will be
automatically removed, but the rest of a relative path must be a
suffix of a path in the compile command database.
sancov
Manual page for sancov 19
root@kali:~# sancov -h
OVERVIEW: Sanitizer Coverage Processing Tool (sancov)
This tool can extract various coverage-related information from:
coverage-instrumented binary files, raw .sancov files and their symbolized .symcov version.
Depending on chosen action the tool expects different input files:
-print-coverage-pcs - coverage-instrumented binary files
-print-coverage - .sancov files
<other actions> - .sancov files & corresponding binary files, .symcov files
USAGE: sancov [options] <action> <binary files...> <.sancov files...> <.symcov files...>
Action (required):
-covered-functions Print all covered funcions.
-html-report REMOVED. Use -symbolize & coverage-report-server.py.
-merge Merges reports.
-not-covered-functions Print all not covered funcions.
-print-coverage-pcs Print coverage instrumentation points addresses.
-print-coverage-stats Print coverage statistics.
-print Print coverage addresses
-symbolize Produces a symbolized JSON report from binary report.
Generic Options:
-help Display this help
-h Alias for --help
-version Display the version
-v Alias for --version
OPTIONS:
-demangle=0 Alias for --no-demangle
-demangle Demangle function names
-ignorelist=<string> Ignorelist file (sanitizer ignorelist format)
-no-demangle Do not demangle function names
-no-skip-dead-files List dead source files in reports
-skip-dead-files=0 Alias for --no-skip-dead-files
-skip-dead-files Do not list dead source files in reports
-strip_path_prefix=<string>
Strip this prefix from files paths in reports
-use_default_ignorelist=0
Alias for --no-use_default_ignore_list
scan-build
Clang static analyzer
root@kali:~# scan-build -h
USAGE: scan-build [options] <build command> [build options]
OPTIONS:
-analyze-headers
Also analyze functions in #included files. By default, such functions
are skipped unless they are called by functions within the main source file.
--force-analyze-debug-code
Tells analyzer to enable assertions in code even if they were disabled
during compilation to enable more precise results.
-o <output location>
Specifies the output directory for analyzer reports. Subdirectories will be
created as needed to represent separate "runs" of the analyzer. If this
option is not specified, a directory is created in /tmp (TMPDIR on Mac OS X)
to store the reports.
-h
--help
Display this message.
-k
--keep-going
Add a "keep on going" option to the specified build command. This option
currently supports make and xcodebuild. This is a convenience option; one
can specify this behavior directly using build options.
--keep-cc
Do not override CC and CXX make variables. Useful when running make in
autoconf-based (and similar) projects where configure can add extra flags
to those variables.
--html-title [title]
--html-title=[title]
Specify the title used on generated HTML pages. If not specified, a default
title will be used.
--show-description
Display the description of defects in the list
-sarif
By default the output of scan-build is a set of HTML files. This option
outputs the results in SARIF format.
-plist
By default the output of scan-build is a set of HTML files. This option
outputs the results as a set of .plist files.
-plist-html
By default the output of scan-build is a set of HTML files. This option
outputs the results as a set of HTML and .plist files.
--status-bugs
By default, the exit status of scan-build is the same as the executed build
command. Specifying this option causes the exit status of scan-build to be 1
if it found potential bugs and the exit status of the build itself otherwise.
--exclude <path>
Do not run static analyzer against files found in this
directory (You can specify this option multiple times).
Could be useful when project contains 3rd party libraries.
--use-cc [compiler path]
--use-cc=[compiler path]
scan-build analyzes a project by interposing a "fake compiler", which
executes a real compiler for compilation and the static analyzer for analysis.
Because of the current implementation of interposition, scan-build does not
know what compiler your project normally uses. Instead, it simply overrides
the CC environment variable, and guesses your default compiler.
In the future, this interposition mechanism to be improved, but if you need
scan-build to use a specific compiler for *compilation* then you can use
this option to specify a path to that compiler.
If the given compiler is a cross compiler, you may also need to provide
--analyzer-target option to properly analyze the source code because static
analyzer runs as if the code is compiled for the host machine by default.
--use-c++ [compiler path]
--use-c++=[compiler path]
This is the same as "--use-cc" but for C++ code.
--analyzer-target [target triple name for analysis]
--analyzer-target=[target triple name for analysis]
This provides target triple information to clang static analyzer.
It only changes the target for analysis but doesn't change the target of a
real compiler given by --use-cc and --use-c++ options.
-v
Enable verbose output from scan-build. A second and third '-v' increases
verbosity.
-V
--view
View analysis results in a web browser when the build completes.
--generate-index-only <output location>
Do not perform the analysis, but only regenerate the index.html file
from existing report.html files. Useful for making a custom Static Analyzer
integration into a build system that isn't otherwise supported by scan-build.
ADVANCED OPTIONS:
-no-failure-reports
Do not create a 'failures' subdirectory that includes analyzer crash reports
and preprocessed source files.
-stats
Generates visitation statistics for the project being analyzed.
-maxloop <loop count>
Specify the number of times a block can be visited before giving up.
Default is 4. Increase for more comprehensive coverage at a cost of speed.
-internal-stats
Generate internal analyzer statistics.
--use-analyzer [Xcode|path to clang]
--use-analyzer=[Xcode|path to clang]
scan-build uses the 'clang' executable relative to itself for static
analysis. One can override this behavior with this option by using the
'clang' packaged with Xcode (on OS X) or from the PATH.
--keep-empty
Don't remove the build results directory even if no issues were reported.
--override-compiler
Always resort to the ccc-analyzer even when better interposition methods
are available.
-analyzer-config <options>
Provide options to pass through to the analyzer's -analyzer-config flag.
Several options are separated with comma: 'key1=val1,key2=val2'
Available options:
* stable-report-filename=true or false (default)
Switch the page naming to:
report-<filename>-<function/method name>-<id>.html
instead of report-XXXXXX.html
CONTROLLING CHECKERS:
A default group of checkers are always run unless explicitly disabled.
Checkers may be enabled/disabled using the following options:
-enable-checker [checker name]
-disable-checker [checker name]
LOADING CHECKERS:
Loading external checkers using the clang plugin interface:
-load-plugin [plugin library]
AVAILABLE CHECKERS:
+ core.BitwiseShift Finds cases where bitwise shift operation causes undefined behaviour.
+ core.CallAndMessage Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers)
+ core.DivideZero Check for division by zero
+ core.NonNullParamChecker Check for null pointers passed as arguments to a function whose arguments are references or marked with the 'nonnull' attribute
+ core.NullDereference Check for dereferences of null pointers
+ core.StackAddressEscape Check that addresses to stack memory do not escape the function
+ core.UndefinedBinaryOperatorResult
Check for undefined results of binary operators
+ core.VLASize Check for declarations of VLA of undefined or zero size
+ core.uninitialized.ArraySubscript
Check for uninitialized values used as array subscripts
+ core.uninitialized.Assign Check for assigning uninitialized values
+ core.uninitialized.Branch Check for uninitialized values used as branch conditions
+ core.uninitialized.CapturedBlockVariable
Check for blocks that capture uninitialized values
+ core.uninitialized.NewArraySize
Check if the size of the array in a new[] expression is undefined
+ core.uninitialized.UndefReturn Check for uninitialized values being returned to the caller
+ cplusplus.ArrayDelete Reports destructions of arrays of polymorphic objects that are destructed as their base class.
+ cplusplus.InnerPointer Check for inner pointers of C++ containers used after re/deallocation
+ cplusplus.Move Find use-after-move bugs in C++
+ cplusplus.NewDelete Check for double-free and use-after-free problems. Traces memory managed by new/delete.
+ cplusplus.NewDeleteLeaks Check for memory leaks. Traces memory managed by new/delete.
+ cplusplus.PlacementNew Check if default placement new is provided with pointers to sufficient storage capacity
+ cplusplus.PureVirtualCall Check pure virtual function calls during construction/destruction
+ cplusplus.StringChecker Checks C++ std::string bugs
+ deadcode.DeadStores Check for values stored to variables that are never read afterwards
fuchsia.HandleChecker A Checker that detect leaks related to Fuchsia handles
+ nullability.NullPassedToNonnull
Warns when a null pointer is passed to a pointer which has a _Nonnull type.
+ nullability.NullReturnedFromNonnull
Warns when a null pointer is returned from a function that has _Nonnull return type.
nullability.NullableDereferenced
Warns when a nullable pointer is dereferenced.
nullability.NullablePassedToNonnull
Warns when a nullable pointer is passed to a pointer which has a _Nonnull type.
nullability.NullableReturnedFromNonnull
Warns when a nullable pointer is returned from a function that has _Nonnull return type.
optin.core.EnumCastOutOfRange Check integer to enumeration casts for out of range values
optin.cplusplus.UninitializedObject
Reports uninitialized fields after object construction
optin.cplusplus.VirtualCall Check virtual function calls during construction/destruction
optin.mpi.MPI-Checker Checks MPI code
optin.osx.OSObjectCStyleCast Checker for C-style casts of OSObjects
optin.osx.cocoa.localizability.EmptyLocalizationContextChecker
Check that NSLocalizedString macros include a comment for context
optin.osx.cocoa.localizability.NonLocalizedStringChecker
Warns about uses of non-localized NSStrings passed to UI methods expecting localized NSStrings
optin.performance.GCDAntipattern
Check for performance anti-patterns when using Grand Central Dispatch
optin.performance.Padding Check for excessively padded structs.
optin.portability.UnixAPI Finds implementation-defined behavior in UNIX/Posix functions
optin.taint.TaintedAlloc Check for memory allocations, where the size parameter might be a tainted (attacker controlled) value.
osx.API Check for proper uses of various Apple APIs
osx.MIG Find violations of the Mach Interface Generator calling convention
osx.NumberObjectConversion Check for erroneous conversions of objects representing numbers into numbers
osx.OSObjectRetainCount Check for leaks and improper reference count management for OSObject
osx.ObjCProperty Check for proper uses of Objective-C properties
osx.SecKeychainAPI Check for proper uses of Secure Keychain APIs
osx.cocoa.AtSync Check for nil pointers used as mutexes for @synchronized
osx.cocoa.AutoreleaseWrite Warn about potentially crashing writes to autoreleasing objects from different autoreleasing pools in Objective-C
osx.cocoa.ClassRelease Check for sending 'retain', 'release', or 'autorelease' directly to a Class
osx.cocoa.Dealloc Warn about Objective-C classes that lack a correct implementation of -dealloc
osx.cocoa.IncompatibleMethodTypes
Warn about Objective-C method signatures with type incompatibilities
osx.cocoa.Loops Improved modeling of loops using Cocoa collection types
osx.cocoa.MissingSuperCall Warn about Objective-C methods that lack a necessary call to super
osx.cocoa.NSAutoreleasePool Warn for suboptimal uses of NSAutoreleasePool in Objective-C GC mode
osx.cocoa.NSError Check usage of NSError** parameters
osx.cocoa.NilArg Check for prohibited nil arguments to ObjC method calls
osx.cocoa.NonNilReturnValue Model the APIs that are guaranteed to return a non-nil value
osx.cocoa.ObjCGenerics Check for type errors when using Objective-C generics
osx.cocoa.RetainCount Check for leaks and improper reference count management
osx.cocoa.RunLoopAutoreleaseLeak
Check for leaked memory in autorelease pools that will never be drained
osx.cocoa.SelfInit Check that 'self' is properly initialized inside an initializer method
osx.cocoa.SuperDealloc Warn about improper use of '[super dealloc]' in Objective-C
osx.cocoa.UnusedIvars Warn about private ivars that are never used
osx.cocoa.VariadicMethodTypes Check for passing non-Objective-C types to variadic collection initialization methods that expect only Objective-C types
osx.coreFoundation.CFError Check usage of CFErrorRef* parameters
osx.coreFoundation.CFNumber Check for proper uses of CFNumber APIs
osx.coreFoundation.CFRetainRelease
Check for null arguments to CFRetain/CFRelease/CFMakeCollectable
osx.coreFoundation.containers.OutOfBounds
Checks for index out-of-bounds when using 'CFArray' API
osx.coreFoundation.containers.PointerSizedValues
Warns if 'CFArray', 'CFDictionary', 'CFSet' are created with non-pointer-size values
security.FloatLoopCounter Warn on using a floating point value as a loop counter (CERT: FLP30-C, FLP30-CPP)
security.PutenvStackArray Finds calls to the function 'putenv' which pass a pointer to an automatic (stack-allocated) array as the argument.
security.SetgidSetuidOrder Warn on possible reversed order of 'setgid(getgid()))' and 'setuid(getuid())' (CERT: POS36-C)
security.cert.env.InvalidPtr Finds usages of possibly invalidated pointers
security.insecureAPI.DeprecatedOrUnsafeBufferHandling
Warn on uses of unsecure or deprecated buffer manipulating functions
+ security.insecureAPI.UncheckedReturn
Warn on uses of functions whose return values must be always checked
security.insecureAPI.bcmp Warn on uses of the 'bcmp' function
security.insecureAPI.bcopy Warn on uses of the 'bcopy' function
security.insecureAPI.bzero Warn on uses of the 'bzero' function
security.insecureAPI.decodeValueOfObjCType
Warn on uses of the '-decodeValueOfObjCType:at:' method
+ security.insecureAPI.getpw Warn on uses of the 'getpw' function
+ security.insecureAPI.gets Warn on uses of the 'gets' function
+ security.insecureAPI.mkstemp Warn when 'mkstemp' is passed fewer than 6 X's in the format string
+ security.insecureAPI.mktemp Warn on uses of the 'mktemp' function
security.insecureAPI.rand Warn on uses of the 'rand', 'random', and related functions
security.insecureAPI.strcpy Warn on uses of the 'strcpy' and 'strcat' functions
+ security.insecureAPI.vfork Warn on uses of the 'vfork' function
+ unix.API Check calls to various UNIX/Posix functions
+ unix.BlockInCriticalSection Check for calls to blocking functions inside a critical section
+ unix.Errno Check for improper use of 'errno'
+ unix.Malloc Check for memory leaks, double free, and use-after-free problems. Traces memory managed by malloc()/free().
+ unix.MallocSizeof Check for dubious malloc arguments involving sizeof
+ unix.MismatchedDeallocator Check for mismatched deallocators.
+ unix.StdCLibraryFunctions Check for invalid arguments of C standard library functions, and apply relations between arguments and return value
+ unix.Stream Check stream handling functions
+ unix.Vfork Check for proper usage of vfork
+ unix.cstring.BadSizeArg Check the size argument passed into C string functions for common erroneous patterns
+ unix.cstring.NullArg Check for null pointers being passed as arguments to C string functions
valist.CopyToSelf Check for va_lists which are copied onto itself.
valist.Uninitialized Check for usages of uninitialized (or already released) va_lists.
valist.Unterminated Check for va_lists which are not released by a va_end call.
webkit.NoUncountedMemberChecker
Check for no uncounted member variables.
webkit.RefCntblBaseVirtualDtor Check for any ref-countable base class having virtual destructor.
webkit.UncountedLambdaCapturesChecker
Check uncounted lambda captures.
NOTE: "+" indicates that an analysis is enabled by default.
BUILD OPTIONS
You can specify any build option acceptable to the build command.
EXAMPLE
scan-build -o /tmp/myhtmldir make -j4
The above example causes analysis reports to be deposited into a subdirectory
of "/tmp/myhtmldir" and to run "make" with the "-j4" option. A different
subdirectory is created each time scan-build analyzes a project. The analyzer
should support most parallel builds, but not distributed builds.
scan-build-py
root@kali:~# scan-build-py -h
usage: scan-build-py [-h] [--verbose] [--override-compiler] [--use-cc <path>]
[--use-c++ <path>] [--intercept-first] [--status-bugs]
[--exclude <directory>] [--output <path>] [--keep-empty]
[--html-title <title>] [--plist | --plist-html |
--plist-multi-file | --sarif | --sarif-html]
[--use-analyzer <path>] [--no-failure-reports]
[--analyze-headers] [--stats] [--internal-stats]
[--maxloop <loop count>] [--store <model>]
[--constraints <model>] [--analyzer-config <options>]
[--force-analyze-debug-code]
[--load-plugin <plugin library>]
[--enable-checker <checker name>]
[--disable-checker <checker name>] [--help-checkers]
[--help-checkers-verbose]
...
positional arguments:
build Command to run.
options:
-h, --help show this help message and exit
--verbose, -v Enable verbose output from 'scan-build-py'. A second,
third and fourth flags increases verbosity. (default:
0)
--override-compiler Always resort to the compiler wrapper even when better
intercept methods are available. (default: False)
--use-cc <path> When 'scan-build-py' analyzes a project by interposing
a compiler wrapper, which executes a real compiler for
compilation and do other tasks (record the compiler
invocation). Because of this interposing, 'scan-build-
py' does not know what compiler your project normally
uses. Instead, it simply overrides the CC environment
variable, and guesses your default compiler. If you
need 'scan-build-py' to use a specific compiler for
*compilation* then you can use this option to specify
a path to that compiler. (default: cc)
--use-c++ <path> This is the same as "--use-cc" but for C++ code.
(default: c++)
--intercept-first Run the build commands first, intercept compiler calls
and then run the static analyzer afterwards. Generally
speaking it has better coverage on build commands.
With '--override-compiler' it use compiler wrapper,
but does not run the analyzer till the build is
finished. (default: False)
--status-bugs The exit status of 'scan-build-py' is the same as the
executed build command. This option ignores the build
exit status and sets to be non zero if it found
potential bugs or zero otherwise. (default: False)
--exclude <directory>
Do not run static analyzer against files found in this
directory. (You can specify this option multiple
times.) Could be useful when project contains 3rd
party libraries. (default: [])
--analyze-headers Also analyze functions in #included files. By default,
such functions are skipped unless they are called by
functions within the main source file. (default:
False)
output control options:
--output, -o <path> Specifies the output directory for analyzer reports.
Subdirectory will be created if default directory is
targeted. (default: /tmp)
--keep-empty Don't remove the build results directory even if no
issues were reported. (default: False)
--html-title <title> Specify the title used on generated HTML pages. If not
specified, a default title will be used. (default:
None)
--plist, -plist Cause the results as a set of .plist files. (default:
html)
--plist-html, -plist-html
Cause the results as a set of .html and .plist files.
(default: html)
--plist-multi-file, -plist-multi-file
Cause the results as a set of .plist files with extra
information on related files. (default: html)
--sarif, -sarif Cause the results as a result.sarif file. (default:
html)
--sarif-html, -sarif-html
Cause the results as a result.sarif file and .html
files. (default: html)
advanced options:
--use-analyzer <path>
'scan-build-py' uses the 'clang' executable relative
to itself for static analysis. One can override this
behavior with this option by using the 'clang'
packaged with Xcode (on OS X) or from the PATH.
(default: clang-19)
--no-failure-reports, -no-failure-reports
Do not create a 'failures' subdirectory that includes
analyzer crash reports and preprocessed source files.
(default: True)
--stats, -stats Generates visitation statistics for the project.
(default: False)
--internal-stats Generate internal analyzer statistics. (default:
False)
--maxloop, -maxloop <loop count>
Specify the number of times a block can be visited
before giving up. Increase for more comprehensive
coverage at a cost of speed. (default: None)
--store, -store <model>
Specify the store model used by the analyzer. 'region'
specifies a field- sensitive store model. 'basic'
which is far less precise but can more quickly analyze
code. 'basic' was the default store model for
checker-0.221 and earlier. (default: None)
--constraints, -constraints <model>
Specify the constraint engine used by the analyzer.
Specifying 'basic' uses a simpler, less powerful
constraint model used by checker-0.160 and earlier.
(default: None)
--analyzer-config, -analyzer-config <options>
Provide options to pass through to the analyzer's
-analyzer-config flag. Several options are separated
with comma: 'key1=val1,key2=val2' Available options:
stable-report-filename=true or false (default) Switch
the page naming to: report-<filename>-<function/method
name>-<id>.html instead of report-XXXXXX.html
(default: None)
--force-analyze-debug-code
Tells analyzer to enable assertions in code even if
they were disabled during compilation, enabling more
precise results. (default: False)
checker options:
--load-plugin, -load-plugin <plugin library>
Loading external checkers using the clang plugin
interface. (default: None)
--enable-checker, -enable-checker <checker name>
Enable specific checker. (default: None)
--disable-checker, -disable-checker <checker name>
Disable specific checker. (default: None)
--help-checkers A default group of checkers is run unless explicitly
disabled. Exactly which checkers constitute the
default group is a function of the operating system in
use. These can be printed with this flag. (default:
False)
--help-checkers-verbose
Print all available checkers and mark the enabled
ones. (default: False)
scan-view
Manual page for scan-view 19
root@kali:~# scan-view -h
usage: scan-view [-h] [--host HOST] [--port PORT] [--debug] [--auto-reload]
[--no-browser] [--allow-all-hosts]
<results directory>
The clang static analyzer results viewer.
positional arguments:
<results directory>
options:
-h, --help show this help message and exit
--host HOST Host interface to listen on. (default=127.0.0.1)
--port PORT Port to listen on. (default=8181)
--debug Print additional debugging information.
--auto-reload Automatically update module for each request.
--no-browser Don't open a webbrowser on startup.
--allow-all-hosts Allow connections from any host (access restricted to
"127.0.0.1" by default)
clangd
clangd understands your C++ code and adds smart features to your editor:
- code completion
- compile errors
- go-to-definition
- and more.
clangd is a language server that implements the Language Server Protocol; it can work with many editors through a plugin.
This is a dependency package providing clangd.
Installed size: 16 KB
How to install: sudo apt install clangd
Dependencies:
- clangd-19
clangd
Manual page for clangd 19
root@kali:~# clangd -h
OVERVIEW: clangd is a language server that provides IDE-like features to editors.
It should be used via an editor plugin rather than invoked directly. For more information, see:
https://clangd.llvm.org/
https://microsoft.github.io/language-server-protocol/
clangd accepts flags on the commandline, and in the CLANGD_FLAGS environment variable.
USAGE: clangd [options]
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
clangd compilation flags options:
--compile-commands-dir=<string> - Specify a path to look for compile_commands.json. If path is invalid, clangd will look in the current directory and parent paths of each source file
--query-driver=<string> - Comma separated list of globs for white-listing gcc-compatible drivers that are safe to execute. Drivers matching any of these globs will be used to extract system includes. e.g. /usr/bin/**/clang-*,/path/to/repo/**/g++-*
clangd feature options:
--all-scopes-completion - If set to true, code completion will include index symbols that are not defined in the scopes (e.g. namespaces) visible from the code completion point. Such completions can insert scope qualifiers
--background-index - Index project code in the background and persist index on disk.
--background-index-priority=<value> - Thread priority for building the background index. The effect of this flag is OS-specific.
=background - Minimum priority, runs on idle CPUs. May leave 'performance' cores unused.
=low - Reduced priority compared to interactive work.
=normal - Same priority as other clangd work.
--clang-tidy - Enable clang-tidy diagnostics
--completion-style=<value> - Granularity of code completion suggestions
=detailed - One completion item for each semantically distinct completion, with full type information
=bundled - Similar completion items (e.g. function overloads) are combined. Type information shown where possible
--experimental-modules-support - Experimental support for standard c++ modules
--fallback-style=<string> - clang-format style to apply by default when no .clang-format file is found
--function-arg-placeholders - When disabled, completions contain only parentheses for function calls. When enabled, completions also contain placeholders for method parameters
--header-insertion=<value> - Add #include directives when accepting code completions
=iwyu - Include what you use. Insert the owning header for top-level symbols, unless the header is already directly included or the symbol is forward-declared
=never - Never insert #include directives as part of code completion
--header-insertion-decorators - Prepend a circular dot or space before the completion label, depending on whether an include line will be inserted or not
--import-insertions - If header insertion is enabled, add #import directives when accepting code completions or fixing includes in Objective-C code
--limit-references=<int> - Limit the number of references returned by clangd. 0 means no limit (default=1000)
--limit-results=<int> - Limit the number of results returned by clangd. 0 means no limit (default=100)
--project-root=<string> - Path to the project root. Requires remote-index-address to be set.
--remote-index-address=<string> - Address of the remote index server
--rename-file-limit=<int> - Limit the number of files to be affected by symbol renaming. 0 means no limit (default=50)
clangd miscellaneous options:
--check[=<string>] - Parse one file in isolation instead of acting as a language server. Useful to investigate/reproduce crashes or configuration problems. With --check=<filename>, attempts to parse a particular file.
--enable-config - Read user and project configuration from YAML files.
Project config is from a .clangd file in the project directory.
User config is from clangd/config.yaml in the following directories:
Windows: %USERPROFILE%\AppData\Local
Mac OS: ~/Library/Preferences/
Others: $XDG_CONFIG_HOME, usually ~/.config
Configuration is documented at https://clangd.llvm.org/config.html
-j <uint> - Number of async workers used by clangd. Background index also uses this many workers.
--malloc-trim - Release memory periodically via malloc_trim(3).
--pch-storage=<value> - Storing PCHs in memory increases memory usages, but may improve performance
=disk - store PCHs on disk
=memory - store PCHs in memory
clangd protocol and logging options:
--log=<value> - Verbosity of log messages written to stderr
=error - Error messages only
=info - High level execution tracing
=verbose - Low level details
--offset-encoding=<value> - Force the offsetEncoding used for character positions. This bypasses negotiation via client capabilities
=utf-8 - Offsets are in UTF-8 bytes
=utf-16 - Offsets are in UTF-16 code units
=utf-32 - Offsets are in unicode codepoints
--path-mappings=<string> - Translates between client paths (as seen by a remote editor) and server paths (where clangd sees files on disk). Comma separated list of '<client_path>=<server_path>' pairs, the first entry matching a given path is used. e.g. /home/project/incl=/opt/include,/home/project=/workarea/project
--pretty - Pretty-print JSON output
flang
Ground-up implementation of a Fortran front end written in modern C++.
While it is capable of generating executables for a number of examples, some functionalities are still missing.
Installed size: 22 KB
How to install: sudo apt install flang
Dependencies:
- flang-19
bbc
root@kali:~# bbc -h
OVERVIEW: Burnside Bridge Compiler
USAGE: bbc [options] <input file>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
-I <string> - include module search paths
-J <string> - intrinsic module search paths
--Mstandard - emit warnings
--Werror - warnings are errors
--aarch64-neon-syntax=<value> - Choose style of NEON code to emit from AArch64 backend:
=generic - Emit generic NEON assembly
=apple - Emit Apple-style NEON assembly
--aarch64-use-aa - Enable the use of AA during codegen.
--abort-on-max-devirt-iterations-reached - Abort when the max iterations for devirtualization CGSCC repeat pass is reached
--allow-assumed-rank - Enable assumed rank lowering - experimental
--allow-ginsert-as-artifact - Allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
--always-execute-loop-body - force the body of a loop to execute at least once
--amdgpu-atomic-optimizer-strategy=<value> - Select DPP or Iterative strategy for scan
=DPP - Use DPP operations for scan
=Iterative - Use Iterative approach for scan
=None - Disable atomic optimizer
--amdgpu-bypass-slow-div - Skip 64-bit divide for dynamic 32-bit values
--amdgpu-disable-loop-alignment - Do not align and prefetch loops
--amdgpu-dpp-combine - Enable DPP combiner
--amdgpu-dump-hsa-metadata - Dump AMDGPU HSA Metadata
--amdgpu-enable-merge-m0 - Merge and hoist M0 initializations
--amdgpu-enable-power-sched - Enable scheduling to minimize mAI power bursts
--amdgpu-kernarg-preload-count=<uint> - How many kernel arguments to preload onto SGPRs
--amdgpu-promote-alloca-to-vector-limit=<uint> - Maximum byte size to consider promote alloca to vector
--amdgpu-sdwa-peephole - Enable SDWA peepholer
--amdgpu-use-aa-in-codegen - Enable the use of AA during codegen.
--amdgpu-verify-hsa-metadata - Verify AMDGPU HSA Metadata
--amdgpu-vgpr-index-mode - Use GPR indexing mode instead of movrel for vector indexing
--arm-add-build-attributes -
--arm-implicit-it=<value> - Allow conditional instructions outdside of an IT block
=always - Accept in both ISAs, emit implicit ITs in Thumb
=never - Warn in ARM, reject in Thumb
=arm - Accept in ARM, reject in Thumb
=thumb - Warn in ARM, emit implicit ITs in Thumb
--array-constructor-initial-buffer-size=<uint> - set the incremental array construction buffer size (default=32)
--asm-show-inst - Emit internal instruction representation to assembly file
--atomic-counter-update-promoted - Do counter update using atomic fetch add for promoted counters only
--atomic-first-counter - Use atomic fetch add for first counter in a function (usually the entry counter)
--bounds-checking-single-trap - Use one trap block per function
--bounds-checking-unique-traps - Always use one trap per check
--bpf-stack-size=<int> - Specify the BPF stack size limit
--cfg-hide-cold-paths=<number> - Hide blocks with relative frequency below the given value
--cfg-hide-deoptimize-paths -
--cfg-hide-unreachable-paths -
--check-functions-filter=<regex> - Only emit checks for arguments of functions whose names match the given regular expression
--cost-kind=<value> - Target cost kind
=throughput - Reciprocal throughput
=latency - Instruction latency
=code-size - Code size
=size-latency - Code size and latency
--crel - Use CREL relocation format for ELF
--cs-profile-generate - Perform context sensitive PGO instrumentation
--cs-profile-path=<string> - Context sensitive profile file path
--debug-info-correlate - Use debug info to correlate profiles. (Deprecated, use -profile-correlate=debug-info)
--debugify-func-limit=<ulong> - Set max number of processed functions per pass.
--debugify-level=<value> - Kind of debug info to add
=locations - Locations only
=location+variables - Locations and Variables
--debugify-quiet - Suppress verbose debugify output
--default-kinds=<default-kind-string> - string to set default kind values
--disable-auto-upgrade-debug-info - Disable autoupgrade of debug info
--disable-i2p-p2i-opt - Disables inttoptr/ptrtoint roundtrip optimization
--disable-promote-alloca-to-lds - Disable promote alloca to LDS
--disable-promote-alloca-to-vector - Disable promote alloca to vector
--do-counter-promotion - Do counter register promotion
--dot-cfg-mssa=<file name for generated dot file> - file name for generated dot file
--dump-symbols - dump the symbol table
--dwarf-version=<int> - Dwarf version
--dwarf64 - Generate debugging info in the 64-bit DWARF format
--emit-compact-unwind-non-canonical - Whether to try to emit Compact Unwind for non canonical entries.
--emit-dwarf-unwind=<value> - Whether to emit DWARF EH frame entries.
=always - Always emit EH frame entries
=no-compact-unwind - Only emit EH frame entries when compact unwind is not available
=default - Use target platform default
--emit-fir - Dump the FIR created by lowering and exit
--emit-hlfir - Dump the HLFIR created by lowering and exit
--emscripten-cxx-exceptions-allowed=<string> - The list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
--enable-cse-in-irtranslator - Should enable CSE in irtranslator
--enable-cse-in-legalizer - Should enable CSE in Legalizer
--enable-emscripten-cxx-exceptions - WebAssembly Emscripten-style exception handling
--enable-emscripten-sjlj - WebAssembly Emscripten-style setjmp/longjmp handling
--enable-gvn-hoist - Enable the GVN hoisting pass (default = off)
--enable-gvn-memdep -
--enable-gvn-sink - Enable the GVN sinking pass (default = off)
--enable-jump-table-to-switch - Enable JumpTableToSwitch pass (default = off)
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loop-simplifycfg-term-folding -
--enable-name-compression - Enable name/filename string compression
--enable-pgo-force-function-attrs - Enable pass to set function attributes based on PGO profiles
--enable-split-backedge-in-load-pre -
--enable-split-loopiv-heuristic - Enable loop iv regalloc heuristic
--enable-vtable-profile-use - If ThinLTO and WPD is enabled and this option is true, vtable profiles will be used by ICP pass for more efficient indirect call sequence. If false, type profiles won't be used.
--enable-vtable-value-profiling - If true, the virtual table address will be instrumented to know the types of a C++ pointer. The information is used in indirect call promotion to do selective vtable-based comparison.
--execute-concurrency=<uint> - The number of threads used to process all files in parallel. Set to 0 for hardware concurrency. This flag only applies to all-TUs.
--executor=<string> - The name of the executor to use.
--expand-variadics-override=<value> - Override the behaviour of expand-variadics
=unspecified - Use the implementation defaults
=disable - Disable the pass entirely
=optimize - Optimise without changing ABI
=lowering - Change variadic calling convention
--experimental-debug-variable-locations - Use experimental new value-tracking variable locations
--experimental-debuginfo-iterators - Enable communicating debuginfo positions through iterators, eliminating intrinsics. Has no effect if --preserve-input-debuginfo-format=true.
--fatal-warnings - Treat warnings as errors
--fcuda - enable CUDA Fortran
--fdebug-dump-pre-fir - dump the Pre-FIR tree prior to FIR generation
--fdpic - Use the FDPIC ABI
--ffixed-form - enable fixed form
--filter=<string> - Only process files that match this filter. This flag only applies to all-TUs.
--flang-dbg-order-assignment-schedule-only - Only run ordered assignment scheduling with no codegen
--fno-ppc-native-vector-element-order - no PowerPC native vector element order.
--fopenacc - enable openacc
--fopenmp - enable openmp
--fopenmp-assume-no-nested-parallelism - Assume that no thread in a parallel region will encounter a parallel region.
--fopenmp-assume-no-thread-state - Assume that no thread in a parallel region will modify an ICV.
--fopenmp-assume-teams-oversubscription - Assume distributed loops do not have more iterations than participating teams.
--fopenmp-assume-threads-oversubscription - Assume work-shared loops do not have more iterations than participating threads.
--fopenmp-force-usm - force openmp unified shared memory mode
--fopenmp-is-gpu - enable openmp GPU target codegen
--fopenmp-is-target-device - enable openmp device compilation
--fopenmp-target-debug=<uint> - Enable debugging in the OpenMP offloading device RTL
--fopenmp-version=<uint> - OpenMP standard version
--force-mlir-complex - Force using MLIR complex operations instead of libm complex operations
--force-tail-folding-style=<value> - Force the tail folding style
=none - Disable tail folding
=data - Create lane mask for data only, using active.lane.mask intrinsic
=data-without-lane-mask - Create lane mask with compare/stepvector
=data-and-control - Create lane mask using active.lane.mask intrinsic, and use it for both data and control flow
=data-and-control-without-rt-check - Similar to data-and-control, but remove the runtime check
=data-with-evl - Use predicated EVL instructions for tail folding. If EVL is unsupported, fallback to data-without-lane-mask.
--fs-profile-debug-bw-threshold=<uint> - Only show debug message if the source branch weight is greater than this value.
--fs-profile-debug-prob-diff-threshold=<uint> - Only show debug message if the branch probility is greater than this value (in percentage).
--gen-array-coor - in lowering create ArrayCoorOp instead of CoordinateOp
--generate-merged-base-profiles - When generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
--gpsize=<uint> - Global Pointer Addressing Size. The default size is 8.
--gpu=<string> - Enable GPU Mode managed|unified
--hash-based-counter-split - Rename counter variable of a comdat function based on cfg hash
--hexagon-add-build-attributes -
--hexagon-rdf-limit=<uint> -
--hlfir - Lower to high level FIR
--hot-cold-split - Enable hot-cold splitting pass
--hwasan-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--hwasan-random-rate=<number> - Probability value in the range [0.0, 1.0] to keep instrumentation of a function.
--import-all-index - Import all external functions in index.
--incremental-linker-compatible - When used with filetype=obj, emit an object file which can be used with an incremental linker
--inline-all - aggressively inline everything
--inline-copyinout-for-boxes - generate loops for copy-in/copy-out of objects with descriptors
--instcombine-code-sinking - Enable code sinking
--instcombine-guard-widening-window=<uint> - How wide an instruction window to bypass looking for another guard
--instcombine-max-num-phis=<uint> - Maximum number phis to handle in intptr/ptrint folding
--instcombine-max-sink-users=<uint> - Maximum number of undroppable users for instruction sinking
--instcombine-maxarray-size=<uint> - Maximum array size considered when doing a combine
--instcombine-negator-enabled - Should we attempt to sink negations?
--instcombine-negator-max-depth=<uint> - What is the maximal lookup depth when trying to check for viability of negation sinking.
--instrprof-atomic-counter-update-all - Make all profile counter updates atomic (for testing only)
--integer-overflow - add nsw flag to internal operations
--internalize-public-api-file=<filename> - A file containing list of symbol names to preserve
--internalize-public-api-list=<list> - A list of symbol names to preserve
--iterative-counter-promotion - Allow counter promotion across the whole loop nest.
--kind-mapping=<kind-mapping-string> - kind mapping string to set kind precision
--length-to-hash-string-literal=<ulong> - string literals that exceed this length will use a hash value as their symbol name
--lint-abort-on-error - In the Lint pass, abort on errors.
--lower-allow-check-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--lower-allow-check-random-rate=<number> - Probability value in the range [0.0, 1.0] of unconditional pseudo-random checks.
--lto-aix-system-assembler=<path> - Path to a system assembler, picked up on AIX only
--lto-embed-bitcode=<value> - Embed LLVM bitcode in object files produced by LTO
=none - Do not embed
=optimized - Embed after all optimization passes
=post-merge-pre-opt - Embed post merge, but before optimizations
--lto-pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--lto-pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--lto-pass-remarks-output=<filename> - Output filename for pass remarks
--main-entry-name=<string> - override the name of the default PROGRAM entry (may be helpful for using other runtimes)
--math-runtime=<value> - Select math operations' runtime behavior:
=fast - use fast runtime behavior
=relaxed - use relaxed runtime behavior
=precise - use precise runtime behavior
--matrix-default-layout=<value> - Sets the default matrix layout
=column-major - Use column-major layout
=row-major - Use row-major layout
--matrix-print-after-transpose-opt -
--max-counter-promotions=<int> - Max number of allowed counter promotions
--max-counter-promotions-per-loop=<uint> - Max number counter promotions per loop to avoid increasing register pressure too much
--mc-relax-all - When used with filetype=obj, relax all fixups in the emitted object file
--mcabac - tbd
--merror-missing-parenthesis - Error for missing parenthesis around predicate registers
--merror-noncontigious-register - Error for register names that aren't contigious
--mhvx - Enable Hexagon Vector eXtensions
--mhvx=<value> - Enable Hexagon Vector eXtensions
=v60 - Build for HVX v60
=v62 - Build for HVX v62
=v65 - Build for HVX v65
=v66 - Build for HVX v66
=v67 - Build for HVX v67
=v68 - Build for HVX v68
=v69 - Build for HVX v69
=v71 - Build for HVX v71
=v73 - Build for HVX v73
--mips-compact-branches=<value> - MIPS Specific: Compact branch policy.
=never - Do not use compact branches if possible.
=optimal - Use compact branches where appropriate (default).
=always - Always use compact branches if possible.
--mips16-constant-islands - Enable mips16 constant islands.
--mips16-hard-float - Enable mips16 hard float.
--mir-strip-debugify-only - Should mir-strip-debug only strip debug info from debugified modules by default
--misexpect-tolerance=<uint> - Prevents emitting diagnostics when profile counts are within N% of the threshold..
--mlir-disable-threading - Disable multi-threading within MLIR, overrides any further call to MLIRContext::enableMultiThreading()
--mlir-elide-elementsattrs-if-larger=<uint> - Elide ElementsAttrs with "..." that have more elements than the given upper limit
--mlir-elide-resource-strings-if-larger=<uint> - Elide printing value of resources if string is too long in chars.
--mlir-pass-pipeline-crash-reproducer=<string> - Generate a .mlir reproducer file at the given output path if the pass manager crashes or fails
--mlir-pass-pipeline-local-reproducer - When generating a crash reproducer, attempt to generated a reproducer with the smallest pipeline.
--mlir-pass-statistics - Display the statistics of each pass
--mlir-pass-statistics-display=<value> - Display method for pass statistics
=list - display the results in a merged list sorted by pass name
=pipeline - display the results with a nested pipeline view
--mlir-pretty-debuginfo - Print pretty debug info in MLIR output
--mlir-print-debuginfo - Print debug info in MLIR output
--mlir-print-elementsattrs-with-hex-if-larger=<long> - Print DenseElementsAttrs with a hex string that have more elements than the given upper limit (use -1 to disable)
--mlir-print-ir-after=<pass-arg> - Print IR after specified passes
--mlir-print-ir-after-all - Print IR after each pass
--mlir-print-ir-after-change - When printing the IR after a pass, only print if the IR changed
--mlir-print-ir-after-failure - When printing the IR after a pass, only print if the pass failed
--mlir-print-ir-before=<pass-arg> - Print IR before specified passes
--mlir-print-ir-before-all - Print IR before each pass
--mlir-print-ir-module-scope - When printing IR for print-ir-[before|after]{-all} always print the top-level operation
--mlir-print-ir-tree-dir=<string> - When printing the IR before/after a pass, print file tree rooted at this directory
--mlir-print-local-scope - Print with local scope and inline information (eliding aliases for attributes, types, and locations
--mlir-print-op-on-diagnostic - When a diagnostic is emitted on an operation, also print the operation as an attached note
--mlir-print-skip-regions - Skip regions when printing ops.
--mlir-print-stacktrace-on-diagnostic - When a diagnostic is emitted, also print the stack trace as an attached note
--mlir-print-unique-ssa-ids - Print unique SSA ID numbers for values, block arguments and naming conflicts across all regions
--mlir-print-value-users - Print users of operation results and block arguments as a comment
--mno-compound - Disable looking for compound instructions for Hexagon
--mno-fixup - Disable fixing up resolved relocations for Hexagon
--mno-ldc1-sdc1 - Expand double precision loads and stores to their single precision counterparts
--mno-pairing - Disable looking for duplex instructions for Hexagon
--module=<string> - module output directory (default .)
--module-suffix=<string> - module file suffix override
--mwarn-missing-parenthesis - Warn for missing parenthesis around predicate registers
--mwarn-noncontigious-register - Warn for register names that arent contigious
--mwarn-sign-mismatch - Warn for mismatching a signed and unsigned value
--no-deprecated-warn - Suppress all deprecated warnings
--no-discriminators - Disable generation of discriminator information.
--no-type-check - Suppress type errors (Wasm)
--no-warn - Suppress all warnings
--nogpulib - Do not link device library for CUDA/HIP device compilation
--nvptx-sched4reg - NVPTX Specific: schedule for register pressue
-o <filename> - Specify the output filename
--object-size-offset-visitor-max-visit-instructions=<uint> - Maximum number of instructions for ObjectSizeOffsetVisitor to look at
Compiler passes to run
Passes:
--abstract-result - Convert fir.array, fir.box and fir.rec function result to function argument
--abstract-result-as-box - Pass fir.array<T> result as fir.box<fir.array<T>> argument instead of fir.ref<fir.array<T>>.
--add-debug-info - Add the debug info
--debug-level=<value> - debug level
=Full - Emit full debug info
=LineTablesOnly - Emit line tables only
=None - Emit no debug information
--file-name=<string> - name of the input source file
--is-optimized - is optimized.
--affine-data-copy-generate - Generate explicit copying for affine memory operations
--fast-mem-capacity=<ulong> - Set fast memory space capacity in KiB (default: unlimited)
--fast-mem-space=<uint> - Fast memory space identifier for copy generation (default: 1)
--generate-dma - Generate DMA instead of point-wise copy
--min-dma-transfer=<int> - Minimum DMA transfer size supported by the target in bytes
--skip-non-unit-stride-loops - Testing purposes: avoid non-unit stride loop choice depths for copy placement
--slow-mem-space=<uint> - Slow memory space identifier for copy generation (default: 0)
--tag-mem-space=<uint> - Tag memory space identifier for copy generation (default: 0)
--affine-loop-coalescing - Coalesce nested loops with independent bounds into a single loop
--affine-loop-fusion - Fuse affine loop nests
--fusion-compute-tolerance=<number> - Fractional increase in additional computation tolerated while fusing
--fusion-fast-mem-space=<uint> - Faster memory space number to promote fusion buffers to
--fusion-local-buf-threshold=<ulong> - Threshold size (KiB) for promoting local buffers to fast memory space
--fusion-maximal - Enables maximal loop fusion
--mode=<value> - fusion mode to attempt
=greedy - Perform greedy (both producer-consumer and sibling) fusion
=producer - Perform only producer-consumer fusion
=sibling - Perform only sibling fusion
--affine-loop-invariant-code-motion - Hoist loop invariant instructions outside of affine loops
--affine-loop-tile - Tile affine loop nests
--cache-size=<ulong> - Set size of cache to tile for in KiB (default: 512)
--separate - Separate full and partial tiles (default: false)
--tile-size=<uint> - Use this tile size for all loops
--tile-sizes=<uint> - List of tile sizes for each perfect nest (overridden by -tile-size)
--affine-loop-unroll - Unroll affine loops
--cleanup-unroll - Fully unroll the cleanup loop when possible.
--unroll-factor=<uint> - Use this unroll factor for all loops being unrolled
--unroll-full - Fully unroll loops
--unroll-full-threshold=<uint> - Unroll all loops with trip count less than or equal to this
--unroll-num-reps=<uint> - Unroll innermost loops repeatedly this many times
--unroll-up-to-factor - Allow unrolling up to the factor specified
--affine-loop-unroll-jam - Unroll and jam affine loops
--unroll-jam-factor=<uint> - Use this unroll jam factor for all loops (default 4)
--affine-pipeline-data-transfer - Pipeline non-blocking data transfers between explicitly managed levels of the memory hierarchy
--affine-scalrep - Replace affine memref accesses by scalars by forwarding stores to loads and eliminating redundant loads
--affine-simplify-structures - Simplify affine expressions in maps/sets and normalize memrefs
--affine-super-vectorize - Vectorize to a target independent n-D vector abstraction
--test-fastest-varying=<long> - Specify a 1-D, 2-D or 3-D pattern of fastest varying memory dimensions to match. See defaultPatterns in Vectorize.cpp for a description and examples. This is used for testing purposes
--vectorize-reductions - Vectorize known reductions expressed via iter_args. Switched off by default.
--virtual-vector-size=<long> - Specify an n-D virtual vector size for vectorization. This must be greater than zero.
--annotate-constant - Annotate constant operands to all FIR operations
--array-value-copy - Convert array value operations to memory operations.
--optimize-conflicts - do more detailed conflict analysis to reduce the number of temporaries
--canonicalize - Canonicalize operations
--disable-patterns=<string> - Labels of patterns that should be filtered out during application
--enable-patterns=<string> - Labels of patterns that should be used during application, all other patterns are filtered out
--max-iterations=<long> - Max. iterations between applying patterns / simplifying regions
--max-num-rewrites=<long> - Max. number of pattern rewrites within an iteration
--region-simplify=<value> - Perform control flow optimizations to the region tree
=disabled - Don't run any control-flow simplification.
=normal - Perform simple control-flow simplifications (e.g. dead args elimination).
=aggressive - Perform aggressive control-flow simplification (e.g. block merging).
--test-convergence - Test only: Fail pass on non-convergence to detect cyclic pattern
--top-down - Seed the worklist in general top-down order
--cfg-conversion - Convert FIR structured control flow ops to CFG ops.
--always-execute-loop-body - force the body of a loop to execute at least once
--set-nsw - set nsw on loop variable increment
--character-conversion - Convert CHARACTER entities with different KINDs
--use-runtime-calls=<string> - Generate runtime calls to a named set of conversion routines. By default, the conversions may produce unexpected results.
--constant-argument-globalisation-opt - Convert constant function arguments to global constants.
--cse - Eliminate common sub-expressions
--demote-affine - Converts `affine.{load,store}` back to fir operations
--external-name-interop - Convert name for external interoperability
--append-underscore - Append trailing underscore to external names.
--fir-add-alias-tags - Add tbaa tags to operations that implement FirAliasAnalysisOpInterface
--fir-assumed-rank-op - Simplify operations on assumed-rank types
--fir-memref-dataflow-opt - Perform store/load forwarding and potentially removing dead stores.
--fir-polymorphic-op - Simplify operations on polymorphic types
--flang-algebraic-simplification -
--function-attr - Pass that adds function attributes expected at LLVM IR level
--approx-func-fp-math - Set the approx-func-fp-math attribute on functions in the module.
--frame-pointer=<value> - frame pointer
--no-infs-fp-math - Set the no-infs-fp-math attribute on functions in the module.
--no-nans-fp-math - Set the no-nans-fp-math attribute on functions in the module.
--no-signed-zeros-fp-math - Set the no-signed-zeros-fp-math attribute on functions in the module.
--tune-cpu=<value> - Set the tune-cpu attribute on functions in the module.
--unsafe-fp-math - Set the unsafe-fp-math attribute on functions in the module.
--inline - Inline function calls
--default-pipeline=<string> - The optimizer pipeline used for callables that do not have a dedicated optimizer pipeline in opPipelineList
--inlining-threshold=<uint> - If the ratio between the number of the operations in the callee and the number of the operations in the caller exceeds this value (in percentage), then the callee is not inlined even if it is legal to inline it
--max-iterations=<uint> - Maximum number of iterations when inlining within an SCC
--op-pipelines=<pass-manager> - Callable operation specific optimizer pipelines (in the form of `dialect.op(pipeline)`)
--loop-invariant-code-motion - Hoist loop invariant instructions outside of the loop
--loop-versioning - Loop Versioning
--lower-affine - Lower Affine operations to a combination of Standard and SCF operations
--memory-allocation-opt - Convert stack to heap allocations and vice versa.
--dynamic-array-on-heap - Allocate all arrays with runtime determined size on heap.
--maximum-array-alloc-size=<ulong> - Set maximum number of elements of an array allocated on the stack.
--omp-function-filtering - Filters out functions intended for the host when compiling for the target device.
--omp-map-info-finalization - expands OpenMP MapInfo operations containing descriptors
--omp-mark-declare-target - Marks all functions called by an OpenMP declare target function as declare target
--openacc-legalize-data - Legalize the data in the compute region
--host-to-device - Replace varPtr uses with accPtr if true. Replace accPtr uses with varPtr if false
--print-op-stats - Print statistics of operations
--json - print the stats as JSON
--promote-to-affine - Promotes `fir.{do_loop,if}` to `affine.{for,if}`.
--sccp - Sparse Conditional Constant Propagation
--simplify-intrinsics - Intrinsics simplification
--enable-experimental - Enable experimental code that may not always work correctly
--simplify-region-lite - Region simplification
--snapshot-op-locations - Generate new locations from the current IR
--filename=<string> - The filename to print the generated IR
--tag=<string> - A tag to use when fusing the new locations with the original. If unset, the locations are replaced.
--stack-arrays - Move heap allocated array temporaries to the stack
--stack-reclaim - Insert stacksave/stackrestore in region with allocas
--strip-debuginfo - Strip debug info from all operations
--symbol-dce - Eliminate dead symbols
--vscale-attr - Add vscale_range attribute to functions
--vscale-range=<value> - vector scale range
--openmp-enable-delayed-privatization - Emit `[first]private` variables as clauses on the MLIR ops.
--openmp-enable-delayed-privatization-staging - For partially supported constructs, emit `[first]private` variables as clauses on the MLIR ops.
--openmp-treat-index-as-section - In the OpenMP data clauses treat `a(N)` as `a(N:N)`.
--opt-transpose - lower transpose without using a runtime call
--outline-intrinsics - Lower all intrinsic procedure implementation in their own functions
--pass-pipeline=<string> - Textual description of the pass pipeline to run
--pft-test - parse the input, create a PFT, dump it, and exit
--pgo-block-coverage - Use this option to enable basic block coverage instrumentation
--pgo-temporal-instrumentation - Use this option to enable temporal instrumentation
--pgo-view-block-coverage-graph - Create a dot file of CFGs with block coverage inference information
--poison-checking-function-local - Check that returns are non-poison (for testing)
--print-pipeline-passes - Print a '-passes' compatible string describing the pipeline (best-effort only).
--profile-correlate=<value> - Use debug info or binary file to correlate profiles.
=<empty> - No profile correlation
=debug-info - Use debug info to correlate
=binary - Use binary to correlate
--promote-alloca-vector-loop-user-weight=<uint> - The bonus weight of users of allocas within loop when sorting profitable allocas
--r600-ir-structurize - Use StructurizeCFG IR pass
--riscv-add-build-attributes -
--riscv-use-aa - Enable the use of AA during codegen.
--runtime-counter-relocation - Enable relocating counters at runtime.
--safepoint-ir-verifier-print-only -
--sample-profile-check-record-coverage=<N> - Emit a warning if less than N% of records in the input profile are matched to the IR.
--sample-profile-check-sample-coverage=<N> - Emit a warning if less than N% of samples in the input profile are matched to the IR.
--sample-profile-max-propagate-iterations=<uint> - Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
--sampled-instr-burst-duration=<uint> - Set the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. This number of samples will be recorded for each 'sampled-instr-period' count update. Setting to 1 enables simple sampling, in which case it is recommended to set 'sampled-instr-period' to a prime number.
--sampled-instr-period=<uint> - Set the profile instrumentation sample period. For each sample period, a fixed number of consecutive samples will be recorded. The number is controlled by 'sampled-instr-burst-duration' flag. The default sample period of 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow.
--sampled-instrumentation - Do PGO instrumentation sampling
--sanitizer-early-opt-ep - Insert sanitizers on OptimizerEarlyEP.
--save-temp-labels - Don't discard temporary labels
--skip-ret-exit-block - Suppress counter promotion if exit blocks contain ret.
--speculative-counter-promotion-max-exiting=<uint> - The max number of exiting blocks of a loop to allow speculative counter promotion
--speculative-counter-promotion-to-loop - When the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
--strict-intrinsic-verifier - use stricter verifier for HLFIR intrinsic operations
--summary-file=<string> - The summary file to use for function importing.
--sve-tail-folding=<string> - Control the use of vectorisation using tail-folding for SVE where the option is specified in the form (Initial)[+(Flag1|Flag2|...)]:
disabled (Initial) No loop types will vectorize using tail-folding
default (Initial) Uses the default tail-folding settings for the target CPU
all (Initial) All legal loop types will vectorize using tail-folding
simple (Initial) Use tail-folding for simple loops (not reductions or recurrences)
reductions Use tail-folding for loops containing reductions
noreductions Inverse of above
recurrences Use tail-folding for loops containing fixed order recurrences
norecurrences Inverse of above
reverse Use tail-folding for loops requiring reversed predicates
noreverse Inverse of above
--tail-predication=<value> - MVE tail-predication pass options
=disabled - Don't tail-predicate loops
=enabled-no-reductions - Enable tail-predication, but not for reduction loops
=enabled - Enable tail-predication, including reduction loops
=force-enabled-no-reductions - Enable tail-predication, but not for reduction loops, and force this which might be unsafe
=force-enabled - Enable tail-predication, including reduction loops, and force this which might be unsafe
--target=<string> - Override host target triple
--thinlto-assume-merged - Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
--threads=<int> -
--type-based-intrinsic-cost - Calculate intrinsics cost based only on argument types
--ubsan-guard-checks - Guard UBSAN checks with `llvm.allow.ubsan.check()`.
--ubsan-unique-traps - Deoptimize traps for UBSAN so there is 1 trap per check.
--use-alloc-runtime - Lower allocations to fortran runtime calls
--use-desc-for-alloc - Always use descriptors for POINTER and ALLOCATABLE
--use-hlfir-intrinsic-ops - Lower via HLFIR transformational intrinsic operations such as hlfir.sum
--use-undef - Use undef when generating programs.
--verify-region-info - Verify region info (time consuming)
--vp-counters-per-site=<number> - The average number of profile counters allocated per value profiling site.
--vp-static-alloc - Do static counter allocation for value profiler
--wasm-enable-eh - WebAssembly exception handling
--wasm-enable-exnref - WebAssembly exception handling (exnref)
--wasm-enable-sjlj - WebAssembly setjmp/longjmp handling
--write-experimental-debuginfo - Write debug info in the new non-intrinsic format. Has no effect if --preserve-input-debuginfo-format=true.
--x86-align-branch=<string> - Specify types of branches to align (plus separated list of types):
jcc indicates conditional jumps
fused indicates fused conditional jumps
jmp indicates direct unconditional jumps
call indicates direct and indirect calls
ret indicates rets
indirect indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint> - Control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches.
--x86-branches-within-32B-boundaries - Align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
--x86-pad-max-prefix-size=<uint> - Maximum number of prefixes to use for padding
--x86-relax-relocations - Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF
--x86-sse2avx - Specify that the assembler should encode SSE instructions with VEX prefix
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Polly Options:
Configure the polly loop optimizer
--polly - Enable the polly optimizer (with -O1, -O2 or -O3)
--polly-2nd-level-tiling - Enable a 2nd level loop of loop tiling
--polly-ast-print-accesses - Print memory access functions
--polly-context=<isl parameter set> - Provide additional constraints on the context parameters
--polly-dce-precise-steps=<int> - The number of precise steps between two approximating iterations. (A value of -1 schedules another approximation stage before the actual dead code elimination.
--polly-delicm-max-ops=<int> - Maximum number of isl operations to invest for lifetime analysis; 0=no limit
--polly-detect-full-functions - Allow the detection of full functions
--polly-dump-after - Dump module after Polly transformations into a file suffixed with "-after"
--polly-dump-after-file=<string> - Dump module after Polly transformations to the given file
--polly-dump-before - Dump module before Polly transformations into a file suffixed with "-before"
--polly-dump-before-file=<string> - Dump module before Polly transformations to the given file
--polly-enable-simplify - Simplify SCoP after optimizations
--polly-ignore-func=<string> - Ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided.
--polly-isl-arg=<argument> - Option passed to ISL
--polly-matmul-opt - Perform optimizations of matrix multiplications based on pattern matching
--polly-on-isl-error-abort - Abort if an isl error is encountered
--polly-only-func=<string> - Only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided.
--polly-only-region=<identifier> - Only run on certain regions (The provided identifier must appear in the name of the region's entry block
--polly-only-scop-detection - Only run scop detection, but no other optimizations
--polly-optimized-scops - Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree
--polly-parallel - Generate thread parallel code (isl codegen only)
--polly-parallel-force - Force generation of thread parallel code ignoring any cost model
--polly-pattern-matching-based-opts - Perform optimizations based on pattern matching
--polly-postopts - Apply post-rescheduling optimizations such as tiling (requires -polly-reschedule)
--polly-pragma-based-opts - Apply user-directed transformation from metadata
--polly-pragma-ignore-depcheck - Skip the dependency check for pragma-based transformations
--polly-process-unprofitable - Process scops that are unlikely to benefit from Polly optimizations.
--polly-register-tiling - Enable register tiling
--polly-report - Print information about the activities of Polly
--polly-reschedule - Optimize SCoPs using ISL
--polly-show - Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions)
--polly-show-only - Highlight the code regions that will be optimized in a (CFG only BBs)
--polly-stmt-granularity=<value> - Algorithm to use for splitting basic blocks into multiple statements
=bb - One statement per basic block
=scalar-indep - Scalar independence heuristic
=store - Store-level granularity
--polly-tc-opt - Perform optimizations of tensor contractions based on pattern matching
--polly-tiling - Enable loop tiling
--polly-vectorizer=<value> - Select the vectorization strategy
=none - No Vectorization
=stripmine - Strip-mine outer loops for the loop-vectorizer to trigger
f18-parse-demo
root@kali:~# f18-parse-demo --help
f18-parse-demo options:
-Mfixed | -Mfree force the source form
-Mextend 132-column fixed form
-f[no-]backslash enable[disable] \escapes in literals
-M[no]backslash disable[enable] \escapes in literals
-Mstandard enable conformance warnings
-r8 | -fdefault-real-8 | -i8 | -fdefault-integer-8 change default kinds of intrinsic types
-Werror treat warnings as errors
-ed enable fixed form D lines
-E prescan & preprocess only
-ftime-parse measure parsing time
-fsyntax-only parse only, no output except messages
-funparse parse & reformat only, no code generation
-fdump-provenance dump the provenance table (no code)
-fdump-parse-tree dump the parse tree (no code)
-v -c -o -I -D -U have their usual meanings
-help print this again
Other options are passed through to the $F18_FC compiler.
fir-opt
root@kali:~# fir-opt -h
OVERVIEW: FIR modular optimizer driver
Available Dialects: acc, affine, arith, builtin, cf, complex, cuf, dlti, fir, fircg, func, hlfir, llvm, math, omp, scf, vector
USAGE: fir-opt [options] <input file>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
--aarch64-neon-syntax=<value> - Choose style of NEON code to emit from AArch64 backend:
=generic - Emit generic NEON assembly
=apple - Emit Apple-style NEON assembly
--aarch64-use-aa - Enable the use of AA during codegen.
--abort-on-max-devirt-iterations-reached - Abort when the max iterations for devirtualization CGSCC repeat pass is reached
--allow-ginsert-as-artifact - Allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
--allow-unregistered-dialect - Allow operation with no registered dialects
--amdgpu-atomic-optimizer-strategy=<value> - Select DPP or Iterative strategy for scan
=DPP - Use DPP operations for scan
=Iterative - Use Iterative approach for scan
=None - Disable atomic optimizer
--amdgpu-bypass-slow-div - Skip 64-bit divide for dynamic 32-bit values
--amdgpu-disable-loop-alignment - Do not align and prefetch loops
--amdgpu-dpp-combine - Enable DPP combiner
--amdgpu-dump-hsa-metadata - Dump AMDGPU HSA Metadata
--amdgpu-enable-merge-m0 - Merge and hoist M0 initializations
--amdgpu-enable-power-sched - Enable scheduling to minimize mAI power bursts
--amdgpu-kernarg-preload-count=<uint> - How many kernel arguments to preload onto SGPRs
--amdgpu-promote-alloca-to-vector-limit=<uint> - Maximum byte size to consider promote alloca to vector
--amdgpu-sdwa-peephole - Enable SDWA peepholer
--amdgpu-use-aa-in-codegen - Enable the use of AA during codegen.
--amdgpu-verify-hsa-metadata - Verify AMDGPU HSA Metadata
--amdgpu-vgpr-index-mode - Use GPR indexing mode instead of movrel for vector indexing
--arm-add-build-attributes -
--arm-implicit-it=<value> - Allow conditional instructions outdside of an IT block
=always - Accept in both ISAs, emit implicit ITs in Thumb
=never - Warn in ARM, reject in Thumb
=arm - Accept in ARM, reject in Thumb
=thumb - Warn in ARM, emit implicit ITs in Thumb
--asm-show-inst - Emit internal instruction representation to assembly file
--atomic-counter-update-promoted - Do counter update using atomic fetch add for promoted counters only
--atomic-first-counter - Use atomic fetch add for first counter in a function (usually the entry counter)
--bounds-checking-single-trap - Use one trap block per function
--bounds-checking-unique-traps - Always use one trap per check
--bpf-stack-size=<int> - Specify the BPF stack size limit
--cfg-hide-cold-paths=<number> - Hide blocks with relative frequency below the given value
--cfg-hide-deoptimize-paths -
--cfg-hide-unreachable-paths -
--check-functions-filter=<regex> - Only emit checks for arguments of functions whose names match the given regular expression
--cost-kind=<value> - Target cost kind
=throughput - Reciprocal throughput
=latency - Instruction latency
=code-size - Code size
=size-latency - Code size and latency
--crel - Use CREL relocation format for ELF
--cs-profile-generate - Perform context sensitive PGO instrumentation
--cs-profile-path=<string> - Context sensitive profile file path
--debug-info-correlate - Use debug info to correlate profiles. (Deprecated, use -profile-correlate=debug-info)
--debugify-func-limit=<ulong> - Set max number of processed functions per pass.
--debugify-level=<value> - Kind of debug info to add
=locations - Locations only
=location+variables - Locations and Variables
--debugify-quiet - Suppress verbose debugify output
--default-kinds=<default-kind-string> - string to set default kind values
--disable-auto-upgrade-debug-info - Disable autoupgrade of debug info
--disable-i2p-p2i-opt - Disables inttoptr/ptrtoint roundtrip optimization
--disable-promote-alloca-to-lds - Disable promote alloca to LDS
--disable-promote-alloca-to-vector - Disable promote alloca to vector
--disable-tbaa - disable attaching TBAA tags to memory accessing operations to override default Flang behavior
--do-counter-promotion - Do counter register promotion
--dot-cfg-mssa=<file name for generated dot file> - file name for generated dot file
--dump-pass-pipeline - Print the pipeline that will be run
--dwarf-version=<int> - Dwarf version
--dwarf64 - Generate debugging info in the 64-bit DWARF format
--elide-resource-data-from-bytecode - Elide resources when generating bytecode
--emit-bytecode - Emit bytecode when generating output
--emit-bytecode-version=<value> - Use specified bytecode when generating output
--emit-compact-unwind-non-canonical - Whether to try to emit Compact Unwind for non canonical entries.
--emit-dwarf-unwind=<value> - Whether to emit DWARF EH frame entries.
=always - Always emit EH frame entries
=no-compact-unwind - Only emit EH frame entries when compact unwind is not available
=default - Use target platform default
--emscripten-cxx-exceptions-allowed=<string> - The list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
--enable-cse-in-irtranslator - Should enable CSE in irtranslator
--enable-cse-in-legalizer - Should enable CSE in Legalizer
--enable-emscripten-cxx-exceptions - WebAssembly Emscripten-style exception handling
--enable-emscripten-sjlj - WebAssembly Emscripten-style setjmp/longjmp handling
--enable-gvn-hoist - Enable the GVN hoisting pass (default = off)
--enable-gvn-memdep -
--enable-gvn-sink - Enable the GVN sinking pass (default = off)
--enable-jump-table-to-switch - Enable JumpTableToSwitch pass (default = off)
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loop-simplifycfg-term-folding -
--enable-name-compression - Enable name/filename string compression
--enable-pgo-force-function-attrs - Enable pass to set function attributes based on PGO profiles
--enable-split-backedge-in-load-pre -
--enable-split-loopiv-heuristic - Enable loop iv regalloc heuristic
--enable-vtable-profile-use - If ThinLTO and WPD is enabled and this option is true, vtable profiles will be used by ICP pass for more efficient indirect call sequence. If false, type profiles won't be used.
--enable-vtable-value-profiling - If true, the virtual table address will be instrumented to know the types of a C++ pointer. The information is used in indirect call promotion to do selective vtable-based comparison.
--execute-concurrency=<uint> - The number of threads used to process all files in parallel. Set to 0 for hardware concurrency. This flag only applies to all-TUs.
--executor=<string> - The name of the executor to use.
--expand-variadics-override=<value> - Override the behaviour of expand-variadics
=unspecified - Use the implementation defaults
=disable - Disable the pass entirely
=optimize - Optimise without changing ABI
=lowering - Change variadic calling convention
--experimental-debug-variable-locations - Use experimental new value-tracking variable locations
--experimental-debuginfo-iterators - Enable communicating debuginfo positions through iterators, eliminating intrinsics. Has no effect if --preserve-input-debuginfo-format=true.
--fatal-warnings - Treat warnings as errors
--fdpic - Use the FDPIC ABI
--filter=<string> - Only process files that match this filter. This flag only applies to all-TUs.
--flang-dbg-order-assignment-schedule-only - Only run ordered assignment scheduling with no codegen
--force-mlir-complex - Force using MLIR complex operations instead of libm complex operations
--force-tail-folding-style=<value> - Force the tail folding style
=none - Disable tail folding
=data - Create lane mask for data only, using active.lane.mask intrinsic
=data-without-lane-mask - Create lane mask with compare/stepvector
=data-and-control - Create lane mask using active.lane.mask intrinsic, and use it for both data and control flow
=data-and-control-without-rt-check - Similar to data-and-control, but remove the runtime check
=data-with-evl - Use predicated EVL instructions for tail folding. If EVL is unsupported, fallback to data-without-lane-mask.
--fs-profile-debug-bw-threshold=<uint> - Only show debug message if the source branch weight is greater than this value.
--fs-profile-debug-prob-diff-threshold=<uint> - Only show debug message if the branch probility is greater than this value (in percentage).
--generate-merged-base-profiles - When generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
--gpsize=<uint> - Global Pointer Addressing Size. The default size is 8.
--hash-based-counter-split - Rename counter variable of a comdat function based on cfg hash
--hexagon-add-build-attributes -
--hexagon-rdf-limit=<uint> -
--hot-cold-split - Enable hot-cold splitting pass
--hwasan-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--hwasan-random-rate=<number> - Probability value in the range [0.0, 1.0] to keep instrumentation of a function.
--import-all-index - Import all external functions in index.
--incremental-linker-compatible - When used with filetype=obj, emit an object file which can be used with an incremental linker
--inline-all - aggressively inline everything
--instcombine-code-sinking - Enable code sinking
--instcombine-guard-widening-window=<uint> - How wide an instruction window to bypass looking for another guard
--instcombine-max-num-phis=<uint> - Maximum number phis to handle in intptr/ptrint folding
--instcombine-max-sink-users=<uint> - Maximum number of undroppable users for instruction sinking
--instcombine-maxarray-size=<uint> - Maximum array size considered when doing a combine
--instcombine-negator-enabled - Should we attempt to sink negations?
--instcombine-negator-max-depth=<uint> - What is the maximal lookup depth when trying to check for viability of negation sinking.
--instrprof-atomic-counter-update-all - Make all profile counter updates atomic (for testing only)
--internalize-public-api-file=<filename> - A file containing list of symbol names to preserve
--internalize-public-api-list=<list> - A list of symbol names to preserve
--irdl-file=<filename> - IRDL file to register before processing the input
--iterative-counter-promotion - Allow counter promotion across the whole loop nest.
--kind-mapping=<kind-mapping-string> - kind mapping string to set kind precision
--length-to-hash-string-literal=<ulong> - string literals that exceed this length will use a hash value as their symbol name
--lint-abort-on-error - In the Lint pass, abort on errors.
--load-dialect-plugin=<string> - Load dialects from plugin library
--load-pass-plugin=<string> - Load passes from plugin library
--log-actions-to=<string> - Log action execution to a file, or stderr if '-' is passed
--log-mlir-actions-filter=<string> - Comma separated list of locations to filter actions from logging
--lower-allow-check-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--lower-allow-check-random-rate=<number> - Probability value in the range [0.0, 1.0] of unconditional pseudo-random checks.
--lto-aix-system-assembler=<path> - Path to a system assembler, picked up on AIX only
--lto-embed-bitcode=<value> - Embed LLVM bitcode in object files produced by LTO
=none - Do not embed
=optimized - Embed after all optimization passes
=post-merge-pre-opt - Embed post merge, but before optimizations
--lto-pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--lto-pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--lto-pass-remarks-output=<filename> - Output filename for pass remarks
--main-entry-name=<string> - override the name of the default PROGRAM entry (may be helpful for using other runtimes)
--math-runtime=<value> - Select math operations' runtime behavior:
=fast - use fast runtime behavior
=relaxed - use relaxed runtime behavior
=precise - use precise runtime behavior
--matrix-default-layout=<value> - Sets the default matrix layout
=column-major - Use column-major layout
=row-major - Use row-major layout
--matrix-print-after-transpose-opt -
--max-counter-promotions=<int> - Max number of allowed counter promotions
--max-counter-promotions-per-loop=<uint> - Max number counter promotions per loop to avoid increasing register pressure too much
--mc-relax-all - When used with filetype=obj, relax all fixups in the emitted object file
--mcabac - tbd
--merror-missing-parenthesis - Error for missing parenthesis around predicate registers
--merror-noncontigious-register - Error for register names that aren't contigious
--mhvx - Enable Hexagon Vector eXtensions
--mhvx=<value> - Enable Hexagon Vector eXtensions
=v60 - Build for HVX v60
=v62 - Build for HVX v62
=v65 - Build for HVX v65
=v66 - Build for HVX v66
=v67 - Build for HVX v67
=v68 - Build for HVX v68
=v69 - Build for HVX v69
=v71 - Build for HVX v71
=v73 - Build for HVX v73
--mips-compact-branches=<value> - MIPS Specific: Compact branch policy.
=never - Do not use compact branches if possible.
=optimal - Use compact branches where appropriate (default).
=always - Always use compact branches if possible.
--mips16-constant-islands - Enable mips16 constant islands.
--mips16-hard-float - Enable mips16 hard float.
--mir-strip-debugify-only - Should mir-strip-debug only strip debug info from debugified modules by default
--misexpect-tolerance=<uint> - Prevents emitting diagnostics when profile counts are within N% of the threshold..
--mlir-debug-counter=<string> - Comma separated list of debug counter skip and count arguments
--mlir-disable-threading - Disable multi-threading within MLIR, overrides any further call to MLIRContext::enableMultiThreading()
--mlir-elide-elementsattrs-if-larger=<uint> - Elide ElementsAttrs with "..." that have more elements than the given upper limit
--mlir-elide-resource-strings-if-larger=<uint> - Elide printing value of resources if string is too long in chars.
--mlir-enable-debugger-hook - Enable Debugger hook for debugging MLIR Actions
--mlir-generate-reproducer=<filename> - Generate an mlir reproducer at the provided filename (no crash required)
--mlir-output-format=<value> - Output format for timing data
=text - display the results in text format
=json - display the results in JSON format
--mlir-pass-pipeline-crash-reproducer=<string> - Generate a .mlir reproducer file at the given output path if the pass manager crashes or fails
--mlir-pass-pipeline-local-reproducer - When generating a crash reproducer, attempt to generated a reproducer with the smallest pipeline.
--mlir-pass-statistics - Display the statistics of each pass
--mlir-pass-statistics-display=<value> - Display method for pass statistics
=list - display the results in a merged list sorted by pass name
=pipeline - display the results with a nested pipeline view
--mlir-pretty-debuginfo - Print pretty debug info in MLIR output
--mlir-print-debug-counter - Print out debug counter information after all counters have been accumulated
--mlir-print-debuginfo - Print debug info in MLIR output
--mlir-print-elementsattrs-with-hex-if-larger=<long> - Print DenseElementsAttrs with a hex string that have more elements than the given upper limit (use -1 to disable)
--mlir-print-ir-after=<pass-arg> - Print IR after specified passes
--mlir-print-ir-after-all - Print IR after each pass
--mlir-print-ir-after-change - When printing the IR after a pass, only print if the IR changed
--mlir-print-ir-after-failure - When printing the IR after a pass, only print if the pass failed
--mlir-print-ir-before=<pass-arg> - Print IR before specified passes
--mlir-print-ir-before-all - Print IR before each pass
--mlir-print-ir-module-scope - When printing IR for print-ir-[before|after]{-all} always print the top-level operation
--mlir-print-ir-tree-dir=<string> - When printing the IR before/after a pass, print file tree rooted at this directory
--mlir-print-local-scope - Print with local scope and inline information (eliding aliases for attributes, types, and locations
--mlir-print-op-on-diagnostic - When a diagnostic is emitted on an operation, also print the operation as an attached note
--mlir-print-skip-regions - Skip regions when printing ops.
--mlir-print-stacktrace-on-diagnostic - When a diagnostic is emitted, also print the stack trace as an attached note
--mlir-print-unique-ssa-ids - Print unique SSA ID numbers for values, block arguments and naming conflicts across all regions
--mlir-print-value-users - Print users of operation results and block arguments as a comment
--mlir-timing - Display execution times
--mlir-timing-display=<value> - Display method for timing data
=list - display the results in a list sorted by total time
=tree - display the results ina with a nested tree view
--mno-compound - Disable looking for compound instructions for Hexagon
--mno-fixup - Disable fixing up resolved relocations for Hexagon
--mno-ldc1-sdc1 - Expand double precision loads and stores to their single precision counterparts
--mno-pairing - Disable looking for duplex instructions for Hexagon
--mwarn-missing-parenthesis - Warn for missing parenthesis around predicate registers
--mwarn-noncontigious-register - Warn for register names that arent contigious
--mwarn-sign-mismatch - Warn for mismatching a signed and unsigned value
--no-deprecated-warn - Suppress all deprecated warnings
--no-discriminators - Disable generation of discriminator information.
--no-implicit-module - Disable implicit addition of a top-level module op during parsing
--no-type-check - Suppress type errors (Wasm)
--no-warn - Suppress all warnings
--nvptx-sched4reg - NVPTX Specific: schedule for register pressue
-o <filename> - Output filename
--object-size-offset-visitor-max-visit-instructions=<uint> - Maximum number of instructions for ObjectSizeOffsetVisitor to look at
Compiler passes to run
Passes:
--abstract-result - Convert fir.array, fir.box and fir.rec function result to function argument
--abstract-result-as-box - Pass fir.array<T> result as fir.box<fir.array<T>> argument instead of fir.ref<fir.array<T>>.
--add-debug-info - Add the debug info
--debug-level=<value> - debug level
=Full - Emit full debug info
=LineTablesOnly - Emit line tables only
=None - Emit no debug information
--file-name=<string> - name of the input source file
--is-optimized - is optimized.
--affine-data-copy-generate - Generate explicit copying for affine memory operations
--fast-mem-capacity=<ulong> - Set fast memory space capacity in KiB (default: unlimited)
--fast-mem-space=<uint> - Fast memory space identifier for copy generation (default: 1)
--generate-dma - Generate DMA instead of point-wise copy
--min-dma-transfer=<int> - Minimum DMA transfer size supported by the target in bytes
--skip-non-unit-stride-loops - Testing purposes: avoid non-unit stride loop choice depths for copy placement
--slow-mem-space=<uint> - Slow memory space identifier for copy generation (default: 0)
--tag-mem-space=<uint> - Tag memory space identifier for copy generation (default: 0)
--affine-loop-coalescing - Coalesce nested loops with independent bounds into a single loop
--affine-loop-fusion - Fuse affine loop nests
--fusion-compute-tolerance=<number> - Fractional increase in additional computation tolerated while fusing
--fusion-fast-mem-space=<uint> - Faster memory space number to promote fusion buffers to
--fusion-local-buf-threshold=<ulong> - Threshold size (KiB) for promoting local buffers to fast memory space
--fusion-maximal - Enables maximal loop fusion
--mode=<value> - fusion mode to attempt
=greedy - Perform greedy (both producer-consumer and sibling) fusion
=producer - Perform only producer-consumer fusion
=sibling - Perform only sibling fusion
--affine-loop-invariant-code-motion - Hoist loop invariant instructions outside of affine loops
--affine-loop-tile - Tile affine loop nests
--cache-size=<ulong> - Set size of cache to tile for in KiB (default: 512)
--separate - Separate full and partial tiles (default: false)
--tile-size=<uint> - Use this tile size for all loops
--tile-sizes=<uint> - List of tile sizes for each perfect nest (overridden by -tile-size)
--affine-loop-unroll - Unroll affine loops
--cleanup-unroll - Fully unroll the cleanup loop when possible.
--unroll-factor=<uint> - Use this unroll factor for all loops being unrolled
--unroll-full - Fully unroll loops
--unroll-full-threshold=<uint> - Unroll all loops with trip count less than or equal to this
--unroll-num-reps=<uint> - Unroll innermost loops repeatedly this many times
--unroll-up-to-factor - Allow unrolling up to the factor specified
--affine-loop-unroll-jam - Unroll and jam affine loops
--unroll-jam-factor=<uint> - Use this unroll jam factor for all loops (default 4)
--affine-pipeline-data-transfer - Pipeline non-blocking data transfers between explicitly managed levels of the memory hierarchy
--affine-scalrep - Replace affine memref accesses by scalars by forwarding stores to loads and eliminating redundant loads
--affine-simplify-structures - Simplify affine expressions in maps/sets and normalize memrefs
--affine-super-vectorize - Vectorize to a target independent n-D vector abstraction
--test-fastest-varying=<long> - Specify a 1-D, 2-D or 3-D pattern of fastest varying memory dimensions to match. See defaultPatterns in Vectorize.cpp for a description and examples. This is used for testing purposes
--vectorize-reductions - Vectorize known reductions expressed via iter_args. Switched off by default.
--virtual-vector-size=<long> - Specify an n-D virtual vector size for vectorization. This must be greater than zero.
--annotate-constant - Annotate constant operands to all FIR operations
--array-value-copy - Convert array value operations to memory operations.
--optimize-conflicts - do more detailed conflict analysis to reduce the number of temporaries
--boxed-procedure -
--use-thunks - Convert procedure pointer abstractions to a single code pointer, deploying thunks wherever required.
--bufferize-hlfir - Convert HLFIR operations operating on hlfir.expr into operations on memory
--canonicalize - Canonicalize operations
--disable-patterns=<string> - Labels of patterns that should be filtered out during application
--enable-patterns=<string> - Labels of patterns that should be used during application, all other patterns are filtered out
--max-iterations=<long> - Max. iterations between applying patterns / simplifying regions
--max-num-rewrites=<long> - Max. number of pattern rewrites within an iteration
--region-simplify=<value> - Perform control flow optimizations to the region tree
=disabled - Don't run any control-flow simplification.
=normal - Perform simple control-flow simplifications (e.g. dead args elimination).
=aggressive - Perform aggressive control-flow simplification (e.g. block merging).
--test-convergence - Test only: Fail pass on non-convergence to detect cyclic pattern
--top-down - Seed the worklist in general top-down order
--cfg-conversion - Convert FIR structured control flow ops to CFG ops.
--always-execute-loop-body - force the body of a loop to execute at least once
--set-nsw - set nsw on loop variable increment
--cg-rewrite - Rewrite some FIR ops into their code-gen forms.
--preserve-declare - Preserve DeclareOp during pre codegen re-write.
--character-conversion - Convert CHARACTER entities with different KINDs
--use-runtime-calls=<string> - Generate runtime calls to a named set of conversion routines. By default, the conversions may produce unexpected results.
--constant-argument-globalisation-opt - Convert constant function arguments to global constants.
--convert-hlfir-to-fir - Lower High-Level FIR to FIR
--cse - Eliminate common sub-expressions
--demote-affine - Converts `affine.{load,store}` back to fir operations
--external-name-interop - Convert name for external interoperability
--append-underscore - Append trailing underscore to external names.
--fir-add-alias-tags - Add tbaa tags to operations that implement FirAliasAnalysisOpInterface
--fir-assumed-rank-op - Simplify operations on assumed-rank types
--fir-memref-dataflow-opt - Perform store/load forwarding and potentially removing dead stores.
--fir-polymorphic-op - Simplify operations on polymorphic types
--fir-to-llvm-ir - Convert FIR dialect to LLVM-IR dialect
--apply-tbaa - Attach TBAA tags to memory accessing operations.
--datalayout=<string> - Override module's data layout.
--target=<string> - Override module's target triple.
--target-cpu=<string> - Override module's target CPU.
--target-features=<string> - Override module's target features.
--tune-cpu=<string> - Override module's tune CPU.
--flang-algebraic-simplification -
--function-attr - Pass that adds function attributes expected at LLVM IR level
--approx-func-fp-math - Set the approx-func-fp-math attribute on functions in the module.
--frame-pointer=<value> - frame pointer
--no-infs-fp-math - Set the no-infs-fp-math attribute on functions in the module.
--no-nans-fp-math - Set the no-nans-fp-math attribute on functions in the module.
--no-signed-zeros-fp-math - Set the no-signed-zeros-fp-math attribute on functions in the module.
--tune-cpu=<value> - Set the tune-cpu attribute on functions in the module.
--unsafe-fp-math - Set the unsafe-fp-math attribute on functions in the module.
--inline - Inline function calls
--default-pipeline=<string> - The optimizer pipeline used for callables that do not have a dedicated optimizer pipeline in opPipelineList
--inlining-threshold=<uint> - If the ratio between the number of the operations in the callee and the number of the operations in the caller exceeds this value (in percentage), then the callee is not inlined even if it is legal to inline it
--max-iterations=<uint> - Maximum number of iterations when inlining within an SCC
--op-pipelines=<pass-manager> - Callable operation specific optimizer pipelines (in the form of `dialect.op(pipeline)`)
--inline-elementals - Inline chained hlfir.elemental operations
--loop-invariant-code-motion - Hoist loop invariant instructions outside of the loop
--loop-versioning - Loop Versioning
--lower-affine - Lower Affine operations to a combination of Standard and SCF operations
--lower-hlfir-intrinsics - Lower HLFIR transformational intrinsic operations
--lower-hlfir-ordered-assignments - Lower HLFIR ordered assignments like forall and where operations
--fuse-assignments - Fuse Forall and Where assignments in the same loop nest when legal.It is not clear yet if this is always beneficial. It may be best toleave this to later loop optimizations.Hence this is off by default.
--memory-allocation-opt - Convert stack to heap allocations and vice versa.
--dynamic-array-on-heap - Allocate all arrays with runtime determined size on heap.
--maximum-array-alloc-size=<ulong> - Set maximum number of elements of an array allocated on the stack.
--omp-function-filtering - Filters out functions intended for the host when compiling for the target device.
--omp-map-info-finalization - expands OpenMP MapInfo operations containing descriptors
--omp-mark-declare-target - Marks all functions called by an OpenMP declare target function as declare target
--openacc-legalize-data - Legalize the data in the compute region
--host-to-device - Replace varPtr uses with accPtr if true. Replace accPtr uses with varPtr if false
--opt-bufferization - Special cases for hlfir.expr bufferization where we can avoid a temporary which would be created by the generic bufferization pass
--print-op-stats - Print statistics of operations
--json - print the stats as JSON
--promote-to-affine - Promotes `fir.{do_loop,if}` to `affine.{for,if}`.
--sccp - Sparse Conditional Constant Propagation
--simplify-hlfir-intrinsics - Simplify HLFIR intrinsic operations that don't need to result in runtime calls
--simplify-intrinsics - Intrinsics simplification
--enable-experimental - Enable experimental code that may not always work correctly
--simplify-region-lite - Region simplification
--snapshot-op-locations - Generate new locations from the current IR
--filename=<string> - The filename to print the generated IR
--tag=<string> - A tag to use when fusing the new locations with the original. If unset, the locations are replaced.
--stack-arrays - Move heap allocated array temporaries to the stack
--stack-reclaim - Insert stacksave/stackrestore in region with allocas
--strip-debuginfo - Strip debug info from all operations
--symbol-dce - Eliminate dead symbols
--target-rewrite - Rewrite some FIR dialect into target specific forms.
--no-character-conversion - Disable target-specific conversion of CHARACTER.
--no-complex-conversion - Disable target-specific conversion of COMPLEX.
--no-struct-conversion - Disable target-specific conversion of derived type value.
--target=<string> - Override module's target triple.
--target-cpu=<string> - Override module's target CPU.
--target-features=<string> - Override module's target features.
--tune-cpu=<string> - Override module's tune CPU.
--test-fir-alias-analysis - Test alias analysis results.
--test-fir-alias-analysis-modref - Test alias analysis ModRef results.
--test-side-effects - Test side effects interfaces
--vscale-attr - Add vscale_range attribute to functions
--vscale-range=<value> - vector scale range
--outline-intrinsics - Lower all intrinsic procedure implementation in their own functions
--output-split-marker=<string> - Split marker to use for merging the ouput
--pass-pipeline=<string> - Textual description of the pass pipeline to run
--pgo-block-coverage - Use this option to enable basic block coverage instrumentation
--pgo-temporal-instrumentation - Use this option to enable temporal instrumentation
--pgo-view-block-coverage-graph - Create a dot file of CFGs with block coverage inference information
--poison-checking-function-local - Check that returns are non-poison (for testing)
--print-pipeline-passes - Print a '-passes' compatible string describing the pipeline (best-effort only).
--profile-actions-to=<string> - Profile action execution to a file, or stderr if '-' is passed
--profile-correlate=<value> - Use debug info or binary file to correlate profiles.
=<empty> - No profile correlation
=debug-info - Use debug info to correlate
=binary - Use binary to correlate
--promote-alloca-vector-loop-user-weight=<uint> - The bonus weight of users of allocas within loop when sorting profitable allocas
--r600-ir-structurize - Use StructurizeCFG IR pass
--riscv-add-build-attributes -
--riscv-use-aa - Enable the use of AA during codegen.
--run-reproducer - Run the pipeline stored in the reproducer
--runtime-counter-relocation - Enable relocating counters at runtime.
--safepoint-ir-verifier-print-only -
--sample-profile-check-record-coverage=<N> - Emit a warning if less than N% of records in the input profile are matched to the IR.
--sample-profile-check-sample-coverage=<N> - Emit a warning if less than N% of samples in the input profile are matched to the IR.
--sample-profile-max-propagate-iterations=<uint> - Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
--sampled-instr-burst-duration=<uint> - Set the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. This number of samples will be recorded for each 'sampled-instr-period' count update. Setting to 1 enables simple sampling, in which case it is recommended to set 'sampled-instr-period' to a prime number.
--sampled-instr-period=<uint> - Set the profile instrumentation sample period. For each sample period, a fixed number of consecutive samples will be recorded. The number is controlled by 'sampled-instr-burst-duration' flag. The default sample period of 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow.
--sampled-instrumentation - Do PGO instrumentation sampling
--sanitizer-early-opt-ep - Insert sanitizers on OptimizerEarlyEP.
--save-temp-labels - Don't discard temporary labels
--show-dialects - Print the list of registered dialects and exit
--skip-ret-exit-block - Suppress counter promotion if exit blocks contain ret.
--speculative-counter-promotion-max-exiting=<uint> - The max number of exiting blocks of a loop to allow speculative counter promotion
--speculative-counter-promotion-to-loop - When the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
--split-input-file[=<string>] - Split the input file into chunks using the given or default marker and process each chunk independently
--strict-intrinsic-verifier - use stricter verifier for HLFIR intrinsic operations
--summary-file=<string> - The summary file to use for function importing.
--sve-tail-folding=<string> - Control the use of vectorisation using tail-folding for SVE where the option is specified in the form (Initial)[+(Flag1|Flag2|...)]:
disabled (Initial) No loop types will vectorize using tail-folding
default (Initial) Uses the default tail-folding settings for the target CPU
all (Initial) All legal loop types will vectorize using tail-folding
simple (Initial) Use tail-folding for simple loops (not reductions or recurrences)
reductions Use tail-folding for loops containing reductions
noreductions Inverse of above
recurrences Use tail-folding for loops containing fixed order recurrences
norecurrences Inverse of above
reverse Use tail-folding for loops requiring reversed predicates
noreverse Inverse of above
--tail-predication=<value> - MVE tail-predication pass options
=disabled - Don't tail-predicate loops
=enabled-no-reductions - Enable tail-predication, but not for reduction loops
=enabled - Enable tail-predication, including reduction loops
=force-enabled-no-reductions - Enable tail-predication, but not for reduction loops, and force this which might be unsafe
=force-enabled - Enable tail-predication, including reduction loops, and force this which might be unsafe
--tbaa-attach-tag-max=<uint> -
--thinlto-assume-merged - Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
--threads=<int> -
--type-based-intrinsic-cost - Calculate intrinsics cost based only on argument types
--ubsan-guard-checks - Guard UBSAN checks with `llvm.allow.ubsan.check()`.
--ubsan-unique-traps - Deoptimize traps for UBSAN so there is 1 trap per check.
--use-undef - Use undef when generating programs.
--verify-diagnostics - Check that emitted diagnostics match expected-* lines on the corresponding line
--verify-each - Run the verifier after each transformation pass
--verify-region-info - Verify region info (time consuming)
--verify-roundtrip - Round-trip the IR after parsing and ensure it succeeds
--vp-counters-per-site=<number> - The average number of profile counters allocated per value profiling site.
--vp-static-alloc - Do static counter allocation for value profiler
--wasm-enable-eh - WebAssembly exception handling
--wasm-enable-exnref - WebAssembly exception handling (exnref)
--wasm-enable-sjlj - WebAssembly setjmp/longjmp handling
--write-experimental-debuginfo - Write debug info in the new non-intrinsic format. Has no effect if --preserve-input-debuginfo-format=true.
--x86-align-branch=<string> - Specify types of branches to align (plus separated list of types):
jcc indicates conditional jumps
fused indicates fused conditional jumps
jmp indicates direct unconditional jumps
call indicates direct and indirect calls
ret indicates rets
indirect indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint> - Control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches.
--x86-branches-within-32B-boundaries - Align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
--x86-pad-max-prefix-size=<uint> - Maximum number of prefixes to use for padding
--x86-relax-relocations - Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF
--x86-sse2avx - Specify that the assembler should encode SSE instructions with VEX prefix
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Polly Options:
Configure the polly loop optimizer
--polly - Enable the polly optimizer (with -O1, -O2 or -O3)
--polly-2nd-level-tiling - Enable a 2nd level loop of loop tiling
--polly-ast-print-accesses - Print memory access functions
--polly-context=<isl parameter set> - Provide additional constraints on the context parameters
--polly-dce-precise-steps=<int> - The number of precise steps between two approximating iterations. (A value of -1 schedules another approximation stage before the actual dead code elimination.
--polly-delicm-max-ops=<int> - Maximum number of isl operations to invest for lifetime analysis; 0=no limit
--polly-detect-full-functions - Allow the detection of full functions
--polly-dump-after - Dump module after Polly transformations into a file suffixed with "-after"
--polly-dump-after-file=<string> - Dump module after Polly transformations to the given file
--polly-dump-before - Dump module before Polly transformations into a file suffixed with "-before"
--polly-dump-before-file=<string> - Dump module before Polly transformations to the given file
--polly-enable-simplify - Simplify SCoP after optimizations
--polly-ignore-func=<string> - Ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided.
--polly-isl-arg=<argument> - Option passed to ISL
--polly-matmul-opt - Perform optimizations of matrix multiplications based on pattern matching
--polly-on-isl-error-abort - Abort if an isl error is encountered
--polly-only-func=<string> - Only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided.
--polly-only-region=<identifier> - Only run on certain regions (The provided identifier must appear in the name of the region's entry block
--polly-only-scop-detection - Only run scop detection, but no other optimizations
--polly-optimized-scops - Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree
--polly-parallel - Generate thread parallel code (isl codegen only)
--polly-parallel-force - Force generation of thread parallel code ignoring any cost model
--polly-pattern-matching-based-opts - Perform optimizations based on pattern matching
--polly-postopts - Apply post-rescheduling optimizations such as tiling (requires -polly-reschedule)
--polly-pragma-based-opts - Apply user-directed transformation from metadata
--polly-pragma-ignore-depcheck - Skip the dependency check for pragma-based transformations
--polly-process-unprofitable - Process scops that are unlikely to benefit from Polly optimizations.
--polly-register-tiling - Enable register tiling
--polly-report - Print information about the activities of Polly
--polly-reschedule - Optimize SCoPs using ISL
--polly-show - Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions)
--polly-show-only - Highlight the code regions that will be optimized in a (CFG only BBs)
--polly-stmt-granularity=<value> - Algorithm to use for splitting basic blocks into multiple statements
=bb - One statement per basic block
=scalar-indep - Scalar independence heuristic
=store - Store-level granularity
--polly-tc-opt - Perform optimizations of tensor contractions based on pattern matching
--polly-tiling - Enable loop tiling
--polly-vectorizer=<value> - Select the vectorization strategy
=none - No Vectorization
=stripmine - Strip-mine outer loops for the loop-vectorizer to trigger
flang-new
root@kali:~# flang-new --help
OVERVIEW: flang LLVM compiler
USAGE: flang-new [options] file...
OPTIONS:
-### Print (but do not run) the commands to run for this compilation
--config=<file> Specify configuration file
-cpp Enable predefined and command line preprocessor macros
-c Only run preprocess, compile, and assemble steps
-dM Print macro definitions in -E mode instead of normal output
-dumpmachine Display the compiler's target processor
-dumpversion Display the version of the compiler
-D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
-emit-llvm Use the LLVM representation for assembler and object files
-E Only run the preprocessor
-falternative-parameter-statement
Enable the old style PARAMETER statement
-fapprox-func Allow certain math function calls to be replaced with an approximately equivalent calculation
-fbackslash Specify that backslash in string introduces an escape character
-fcolor-diagnostics Enable colors in diagnostics
-fconvert=<value> Set endian conversion of data for unformatted files
-fdefault-double-8 Set the default double precision kind to an 8 byte wide type
-fdefault-integer-8 Set the default integer and logical kind to an 8 byte wide type
-fdefault-real-8 Set the default real kind to an 8 byte wide type
-ffast-math Allow aggressive, lossy floating-point optimizations
-ffixed-form Process source files in fixed form
-ffixed-line-length=<value>
Use <value> as character line width in fixed mode
-ffp-contract=<value> Form fused FP ops (e.g. FMAs)
-ffree-form Process source files in free form
-fhermetic-module-files Emit hermetic module files (no nested USE association)
-fhonor-infinities Specify that floating-point optimizations are not allowed that assume arguments and results are not +-inf.
-fhonor-nans Specify that floating-point optimizations are not allowed that assume arguments and results are not NANs.
-fimplicit-none No implicit typing allowed unless overridden by IMPLICIT statements
-finput-charset=<value> Specify the default character set for source files
-fintegrated-as Enable the integrated assembler
-fintrinsic-modules-path <dir>
Specify where to find the compiled intrinsic modules
-flarge-sizes Use INTEGER(KIND=8) for the result type in size-related intrinsics
-flogical-abbreviations Enable logical abbreviations
-flto=auto Enable LTO in 'full' mode
-flto=jobserver Enable LTO in 'full' mode
-flto=<value> Set LTO mode
-flto Enable LTO in 'full' mode
-fms-runtime-lib=<value>
Select Windows run-time library
-fno-automatic Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE
-fno-color-diagnostics Disable colors in diagnostics
-fno-integrated-as Disable the integrated assembler
-fno-lto Disable LTO mode (default)
-fno-ppc-native-vector-element-order
Specifies PowerPC non-native vector element order
-fno-rtlib-add-rpath Do not add -rpath with architecture-specific resource directory to the linker flags. When --hip-link is specified, do not add -rpath with HIP runtime library directory to the linker flags
-fno-signed-zeros Allow optimizations that ignore the sign of floating point zeros
-fno-stack-arrays Allocate array temporaries on the heap (default)
-fno-version-loops-for-stride
Do not create unit-strided loops (default)
-fomit-frame-pointer Omit the frame pointer from functions that don't need it. Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. On many targets, -O1 and higher omit the frame pointer by default. -m[no-]omit-leaf-frame-pointer takes precedence for leaf functions
-fopenacc Enable OpenACC
-fopenmp-force-usm Force behvaior as if the user specified pragma omp requires unified_shared_memory.
-fopenmp-target-debug Enable debugging in the OpenMP offloading device RTL
-fopenmp-targets=<value>
Specify comma-separated list of triples OpenMP offloading targets to be supported
-fopenmp-version=<value>
Set OpenMP version (e.g. 45 for OpenMP 4.5, 51 for OpenMP 5.1). Default value is 11 for Flang
-fopenmp Parse OpenMP pragmas and generate parallel code.
-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)
-fpass-plugin=<dsopath> Load pass plugin from a dynamic shared object file (only with new pass manager).
-fppc-native-vector-element-order
Specifies PowerPC native vector element order (default)
-freciprocal-math Allow division operations to be reassociated
-fropi Generate read-only position independent code (ARM only)
-frtlib-add-rpath Add -rpath with architecture-specific resource directory to the linker flags. When --hip-link is specified, also add -rpath with HIP runtime library directory to the linker flags
-frwpi Generate read-write position independent code (ARM only)
-fsave-optimization-record=<format>
Generate an optimization record file in a specific format
-fsave-optimization-record
Generate a YAML optimization record file
-fstack-arrays Attempt to allocate array temporaries on the stack, no matter their size
-fsyntax-only Run the preprocessor, parser and semantic analysis stages
-funderscoring Appends one trailing underscore to external names
-fveclib=<value> Use the given vector functions library
-fversion-loops-for-stride
Create unit-strided versions of loops
-fxor-operator Enable .XOR. as a synonym of .NEQV.
--gcc-install-dir=<value>
Use GCC installation in the specified directory. The directory ends with path components like 'lib{,32,64}/gcc{,-cross}/$triple/$version'. Note: executables (e.g. ld) used by the compiler are not overridden by the selected GCC installation
--gcc-toolchain=<value> Specify a directory where Flang can find 'lib{,32,64}/gcc{,-cross}/$triple/$version'. Flang will use the GCC installation with the largest version
-gline-directives-only Emit debug line info directives only
-gline-tables-only Emit debug line number tables only
-gpulibc Link the LLVM C Library for GPUs
-g Generate source-level debug information
--help-hidden Display help for hidden options
-help Display available options
-isysroot <dir> Set the system root directory (usually /)
-I <dir> Add directory to the end of the list of include search paths
-L <dir> Add directory to library search path
-mapx-features=<value> Enable features of APX
-march=<value> For a list of available architectures for the target use '-mcpu=help'
-mcode-object-version=<value>
Specify code object ABI version. Defaults to 5. (AMDGPU only)
-mcpu=<value> For a list of available CPUs for the target use '-mcpu=help'
-mllvm=<arg> Alias for -mllvm
-mllvm <value> Additional arguments to forward to LLVM's option processing
-mmlir <value> Additional arguments to forward to MLIR's option processing
-mno-apx-features=<value>
Disable features of APX
-mno-outline-atomics Don't generate local calls to out-of-line atomic operations
-module-dir <dir> Put MODULE files in <dir>
-moutline-atomics Generate local calls to out-of-line atomic operations
-mrvv-vector-bits=<value>
Specify the size in bits of an RVV vector register
-msve-vector-bits=<value>
Specify the size in bits of an SVE vector register. Defaults to the vector length agnostic value of "scalable". (AArch64 only)
-mtune=<value> Only supported on AArch64, PowerPC, RISC-V, SPARC, SystemZ, and X86
--no-default-config Disable loading default configuration files
--no-offload-arch=<value>
Remove CUDA/HIP offloading device architecture (e.g. sm_35, gfx906) from the list of devices to compile for. 'all' resets the list to its default value.
-nocpp Disable predefined and command line preprocessor macros
-nogpulib Do not link device library for CUDA/HIP device compilation
--offload-arch=<value> Specify an offloading device architecture for CUDA, HIP, or OpenMP. (e.g. sm_35). If 'native' is used the compiler will detect locally installed architectures. For HIP offloading, the device architecture can be followed by target ID features delimited by a colon (e.g. gfx908:xnack+:sramecc-). May be specified more than once.
--offload-device-only Only compile for the offloading device.
--offload-host-device Compile for both the offloading host and device (default).
--offload-host-only Only compile for the offloading host.
-o <file> Write output to <file>
-pedantic Warn on language extensions
-print-effective-triple Print the effective target triple
-print-resource-dir Print the resource directory pathname that contains lib and include directories with the runtime libraries and MODULE files.
-print-target-triple Print the normalized target triple
-pthread Support POSIX threads in generated code
-P Disable linemarker output in -E mode
--rocm-path=<value> ROCm installation path, used for finding and automatically linking required bitcode libraries.
-Rpass-analysis=<value> Report transformation analysis from optimization passes whose name matches the given POSIX regular expression
-Rpass-missed=<value> Report missed transformations by optimization passes whose name matches the given POSIX regular expression
-Rpass=<value> Report transformations performed by optimization passes whose name matches the given POSIX regular expression
-rtlib=<value> Compiler runtime library to use
-R<remark> Enable the specified remark
-save-temps=<value> Save intermediate compilation results. <arg> can be set to 'cwd' for current working directory, or 'obj' which will save temporary files in the same directory as the final output file
-save-temps Alias for --save-temps=cwd
-std=<value> Language standard to compile for
-S Only run preprocess and compilation steps
--target=<value> Generate code for the given target
-U <macro> Undefine macro <macro>
--version Print version information
-v Show commands to run and use verbose output
-Wl,<arg> Pass the comma separated arguments in <arg> to the linker
-W<warning> Enable the specified warning
-w Suppress all warnings
-Xflang <arg> Pass <arg> to the flang compiler
-x <language> Treat subsequent input files as having type <language>
flang-to-external-fc
tco
root@kali:~# tco -h
OVERVIEW: Tilikum Crossing Optimizer
USAGE: tco [options] <input file>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
--aarch64-neon-syntax=<value> - Choose style of NEON code to emit from AArch64 backend:
=generic - Emit generic NEON assembly
=apple - Emit Apple-style NEON assembly
--aarch64-use-aa - Enable the use of AA during codegen.
--abort-on-max-devirt-iterations-reached - Abort when the max iterations for devirtualization CGSCC repeat pass is reached
--allow-ginsert-as-artifact - Allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
--amdgpu-atomic-optimizer-strategy=<value> - Select DPP or Iterative strategy for scan
=DPP - Use DPP operations for scan
=Iterative - Use Iterative approach for scan
=None - Disable atomic optimizer
--amdgpu-bypass-slow-div - Skip 64-bit divide for dynamic 32-bit values
--amdgpu-disable-loop-alignment - Do not align and prefetch loops
--amdgpu-dpp-combine - Enable DPP combiner
--amdgpu-dump-hsa-metadata - Dump AMDGPU HSA Metadata
--amdgpu-enable-merge-m0 - Merge and hoist M0 initializations
--amdgpu-enable-power-sched - Enable scheduling to minimize mAI power bursts
--amdgpu-kernarg-preload-count=<uint> - How many kernel arguments to preload onto SGPRs
--amdgpu-promote-alloca-to-vector-limit=<uint> - Maximum byte size to consider promote alloca to vector
--amdgpu-sdwa-peephole - Enable SDWA peepholer
--amdgpu-use-aa-in-codegen - Enable the use of AA during codegen.
--amdgpu-verify-hsa-metadata - Verify AMDGPU HSA Metadata
--amdgpu-vgpr-index-mode - Use GPR indexing mode instead of movrel for vector indexing
--arm-add-build-attributes -
--arm-implicit-it=<value> - Allow conditional instructions outdside of an IT block
=always - Accept in both ISAs, emit implicit ITs in Thumb
=never - Warn in ARM, reject in Thumb
=arm - Accept in ARM, reject in Thumb
=thumb - Warn in ARM, emit implicit ITs in Thumb
--asm-show-inst - Emit internal instruction representation to assembly file
--atomic-counter-update-promoted - Do counter update using atomic fetch add for promoted counters only
--atomic-first-counter - Use atomic fetch add for first counter in a function (usually the entry counter)
--bounds-checking-single-trap - Use one trap block per function
--bounds-checking-unique-traps - Always use one trap per check
--bpf-stack-size=<int> - Specify the BPF stack size limit
--cfg-hide-cold-paths=<number> - Hide blocks with relative frequency below the given value
--cfg-hide-deoptimize-paths -
--cfg-hide-unreachable-paths -
--check-functions-filter=<regex> - Only emit checks for arguments of functions whose names match the given regular expression
--code-gen-llvm - Run only CodeGen passes and translate FIR to LLVM IR
--cost-kind=<value> - Target cost kind
=throughput - Reciprocal throughput
=latency - Instruction latency
=code-size - Code size
=size-latency - Code size and latency
--crel - Use CREL relocation format for ELF
--cs-profile-generate - Perform context sensitive PGO instrumentation
--cs-profile-path=<string> - Context sensitive profile file path
--debug-info-correlate - Use debug info to correlate profiles. (Deprecated, use -profile-correlate=debug-info)
--debugify-func-limit=<ulong> - Set max number of processed functions per pass.
--debugify-level=<value> - Kind of debug info to add
=locations - Locations only
=location+variables - Locations and Variables
--debugify-quiet - Suppress verbose debugify output
--default-kinds=<default-kind-string> - string to set default kind values
--disable-auto-upgrade-debug-info - Disable autoupgrade of debug info
--disable-i2p-p2i-opt - Disables inttoptr/ptrtoint roundtrip optimization
--disable-promote-alloca-to-lds - Disable promote alloca to LDS
--disable-promote-alloca-to-vector - Disable promote alloca to vector
--disable-tbaa - disable attaching TBAA tags to memory accessing operations to override default Flang behavior
--do-counter-promotion - Do counter register promotion
--dot-cfg-mssa=<file name for generated dot file> - file name for generated dot file
--dwarf-version=<int> - Dwarf version
--dwarf64 - Generate debugging info in the 64-bit DWARF format
--emit-compact-unwind-non-canonical - Whether to try to emit Compact Unwind for non canonical entries.
--emit-dwarf-unwind=<value> - Whether to emit DWARF EH frame entries.
=always - Always emit EH frame entries
=no-compact-unwind - Only emit EH frame entries when compact unwind is not available
=default - Use target platform default
--emit-fir - Parse and pretty-print the input
--emscripten-cxx-exceptions-allowed=<string> - The list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
--enable-cse-in-irtranslator - Should enable CSE in irtranslator
--enable-cse-in-legalizer - Should enable CSE in Legalizer
--enable-emscripten-cxx-exceptions - WebAssembly Emscripten-style exception handling
--enable-emscripten-sjlj - WebAssembly Emscripten-style setjmp/longjmp handling
--enable-gvn-hoist - Enable the GVN hoisting pass (default = off)
--enable-gvn-memdep -
--enable-gvn-sink - Enable the GVN sinking pass (default = off)
--enable-jump-table-to-switch - Enable JumpTableToSwitch pass (default = off)
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loop-simplifycfg-term-folding -
--enable-name-compression - Enable name/filename string compression
--enable-pgo-force-function-attrs - Enable pass to set function attributes based on PGO profiles
--enable-split-backedge-in-load-pre -
--enable-split-loopiv-heuristic - Enable loop iv regalloc heuristic
--enable-vtable-profile-use - If ThinLTO and WPD is enabled and this option is true, vtable profiles will be used by ICP pass for more efficient indirect call sequence. If false, type profiles won't be used.
--enable-vtable-value-profiling - If true, the virtual table address will be instrumented to know the types of a C++ pointer. The information is used in indirect call promotion to do selective vtable-based comparison.
--execute-concurrency=<uint> - The number of threads used to process all files in parallel. Set to 0 for hardware concurrency. This flag only applies to all-TUs.
--executor=<string> - The name of the executor to use.
--expand-variadics-override=<value> - Override the behaviour of expand-variadics
=unspecified - Use the implementation defaults
=disable - Disable the pass entirely
=optimize - Optimise without changing ABI
=lowering - Change variadic calling convention
--experimental-debug-variable-locations - Use experimental new value-tracking variable locations
--experimental-debuginfo-iterators - Enable communicating debuginfo positions through iterators, eliminating intrinsics. Has no effect if --preserve-input-debuginfo-format=true.
--fatal-warnings - Treat warnings as errors
--fdpic - Use the FDPIC ABI
--filter=<string> - Only process files that match this filter. This flag only applies to all-TUs.
--flang-dbg-order-assignment-schedule-only - Only run ordered assignment scheduling with no codegen
--force-mlir-complex - Force using MLIR complex operations instead of libm complex operations
--force-tail-folding-style=<value> - Force the tail folding style
=none - Disable tail folding
=data - Create lane mask for data only, using active.lane.mask intrinsic
=data-without-lane-mask - Create lane mask with compare/stepvector
=data-and-control - Create lane mask using active.lane.mask intrinsic, and use it for both data and control flow
=data-and-control-without-rt-check - Similar to data-and-control, but remove the runtime check
=data-with-evl - Use predicated EVL instructions for tail folding. If EVL is unsupported, fallback to data-without-lane-mask.
--fs-profile-debug-bw-threshold=<uint> - Only show debug message if the source branch weight is greater than this value.
--fs-profile-debug-prob-diff-threshold=<uint> - Only show debug message if the branch probility is greater than this value (in percentage).
--generate-merged-base-profiles - When generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
--gpsize=<uint> - Global Pointer Addressing Size. The default size is 8.
--hash-based-counter-split - Rename counter variable of a comdat function based on cfg hash
--hexagon-add-build-attributes -
--hexagon-rdf-limit=<uint> -
--hot-cold-split - Enable hot-cold splitting pass
--hwasan-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--hwasan-random-rate=<number> - Probability value in the range [0.0, 1.0] to keep instrumentation of a function.
--import-all-index - Import all external functions in index.
--incremental-linker-compatible - When used with filetype=obj, emit an object file which can be used with an incremental linker
--inline-all - aggressively inline everything
--instcombine-code-sinking - Enable code sinking
--instcombine-guard-widening-window=<uint> - How wide an instruction window to bypass looking for another guard
--instcombine-max-num-phis=<uint> - Maximum number phis to handle in intptr/ptrint folding
--instcombine-max-sink-users=<uint> - Maximum number of undroppable users for instruction sinking
--instcombine-maxarray-size=<uint> - Maximum array size considered when doing a combine
--instcombine-negator-enabled - Should we attempt to sink negations?
--instcombine-negator-max-depth=<uint> - What is the maximal lookup depth when trying to check for viability of negation sinking.
--instrprof-atomic-counter-update-all - Make all profile counter updates atomic (for testing only)
--internalize-public-api-file=<filename> - A file containing list of symbol names to preserve
--internalize-public-api-list=<list> - A list of symbol names to preserve
--iterative-counter-promotion - Allow counter promotion across the whole loop nest.
--kind-mapping=<kind-mapping-string> - kind mapping string to set kind precision
--length-to-hash-string-literal=<ulong> - string literals that exceed this length will use a hash value as their symbol name
--lint-abort-on-error - In the Lint pass, abort on errors.
--lower-allow-check-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--lower-allow-check-random-rate=<number> - Probability value in the range [0.0, 1.0] of unconditional pseudo-random checks.
--lto-aix-system-assembler=<path> - Path to a system assembler, picked up on AIX only
--lto-embed-bitcode=<value> - Embed LLVM bitcode in object files produced by LTO
=none - Do not embed
=optimized - Embed after all optimization passes
=post-merge-pre-opt - Embed post merge, but before optimizations
--lto-pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--lto-pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--lto-pass-remarks-output=<filename> - Output filename for pass remarks
--main-entry-name=<string> - override the name of the default PROGRAM entry (may be helpful for using other runtimes)
--math-runtime=<value> - Select math operations' runtime behavior:
=fast - use fast runtime behavior
=relaxed - use relaxed runtime behavior
=precise - use precise runtime behavior
--matrix-default-layout=<value> - Sets the default matrix layout
=column-major - Use column-major layout
=row-major - Use row-major layout
--matrix-print-after-transpose-opt -
--max-counter-promotions=<int> - Max number of allowed counter promotions
--max-counter-promotions-per-loop=<uint> - Max number counter promotions per loop to avoid increasing register pressure too much
--mc-relax-all - When used with filetype=obj, relax all fixups in the emitted object file
--mcabac - tbd
--merror-missing-parenthesis - Error for missing parenthesis around predicate registers
--merror-noncontigious-register - Error for register names that aren't contigious
--mhvx - Enable Hexagon Vector eXtensions
--mhvx=<value> - Enable Hexagon Vector eXtensions
=v60 - Build for HVX v60
=v62 - Build for HVX v62
=v65 - Build for HVX v65
=v66 - Build for HVX v66
=v67 - Build for HVX v67
=v68 - Build for HVX v68
=v69 - Build for HVX v69
=v71 - Build for HVX v71
=v73 - Build for HVX v73
--mips-compact-branches=<value> - MIPS Specific: Compact branch policy.
=never - Do not use compact branches if possible.
=optimal - Use compact branches where appropriate (default).
=always - Always use compact branches if possible.
--mips16-constant-islands - Enable mips16 constant islands.
--mips16-hard-float - Enable mips16 hard float.
--mir-strip-debugify-only - Should mir-strip-debug only strip debug info from debugified modules by default
--misexpect-tolerance=<uint> - Prevents emitting diagnostics when profile counts are within N% of the threshold..
--mlir-disable-threading - Disable multi-threading within MLIR, overrides any further call to MLIRContext::enableMultiThreading()
--mlir-pass-pipeline-crash-reproducer=<string> - Generate a .mlir reproducer file at the given output path if the pass manager crashes or fails
--mlir-pass-pipeline-local-reproducer - When generating a crash reproducer, attempt to generated a reproducer with the smallest pipeline.
--mlir-pass-statistics - Display the statistics of each pass
--mlir-pass-statistics-display=<value> - Display method for pass statistics
=list - display the results in a merged list sorted by pass name
=pipeline - display the results with a nested pipeline view
--mlir-print-ir-after=<pass-arg> - Print IR after specified passes
--mlir-print-ir-after-all - Print IR after each pass
--mlir-print-ir-after-change - When printing the IR after a pass, only print if the IR changed
--mlir-print-ir-after-failure - When printing the IR after a pass, only print if the pass failed
--mlir-print-ir-before=<pass-arg> - Print IR before specified passes
--mlir-print-ir-before-all - Print IR before each pass
--mlir-print-ir-module-scope - When printing IR for print-ir-[before|after]{-all} always print the top-level operation
--mlir-print-ir-tree-dir=<string> - When printing the IR before/after a pass, print file tree rooted at this directory
--mlir-print-op-on-diagnostic - When a diagnostic is emitted on an operation, also print the operation as an attached note
--mlir-print-stacktrace-on-diagnostic - When a diagnostic is emitted, also print the stack trace as an attached note
--mno-compound - Disable looking for compound instructions for Hexagon
--mno-fixup - Disable fixing up resolved relocations for Hexagon
--mno-ldc1-sdc1 - Expand double precision loads and stores to their single precision counterparts
--mno-pairing - Disable looking for duplex instructions for Hexagon
--mwarn-missing-parenthesis - Warn for missing parenthesis around predicate registers
--mwarn-noncontigious-register - Warn for register names that arent contigious
--mwarn-sign-mismatch - Warn for mismatching a signed and unsigned value
--no-deprecated-warn - Suppress all deprecated warnings
--no-discriminators - Disable generation of discriminator information.
--no-type-check - Suppress type errors (Wasm)
--no-warn - Suppress all warnings
--nvptx-sched4reg - NVPTX Specific: schedule for register pressue
-o <filename> - Specify output filename
--object-size-offset-visitor-max-visit-instructions=<uint> - Maximum number of instructions for ObjectSizeOffsetVisitor to look at
Compiler passes to run
Passes:
--abstract-result - Convert fir.array, fir.box and fir.rec function result to function argument
--abstract-result-as-box - Pass fir.array<T> result as fir.box<fir.array<T>> argument instead of fir.ref<fir.array<T>>.
--add-debug-info - Add the debug info
--debug-level=<value> - debug level
=Full - Emit full debug info
=LineTablesOnly - Emit line tables only
=None - Emit no debug information
--file-name=<string> - name of the input source file
--is-optimized - is optimized.
--affine-data-copy-generate - Generate explicit copying for affine memory operations
--fast-mem-capacity=<ulong> - Set fast memory space capacity in KiB (default: unlimited)
--fast-mem-space=<uint> - Fast memory space identifier for copy generation (default: 1)
--generate-dma - Generate DMA instead of point-wise copy
--min-dma-transfer=<int> - Minimum DMA transfer size supported by the target in bytes
--skip-non-unit-stride-loops - Testing purposes: avoid non-unit stride loop choice depths for copy placement
--slow-mem-space=<uint> - Slow memory space identifier for copy generation (default: 0)
--tag-mem-space=<uint> - Tag memory space identifier for copy generation (default: 0)
--affine-loop-coalescing - Coalesce nested loops with independent bounds into a single loop
--affine-loop-fusion - Fuse affine loop nests
--fusion-compute-tolerance=<number> - Fractional increase in additional computation tolerated while fusing
--fusion-fast-mem-space=<uint> - Faster memory space number to promote fusion buffers to
--fusion-local-buf-threshold=<ulong> - Threshold size (KiB) for promoting local buffers to fast memory space
--fusion-maximal - Enables maximal loop fusion
--mode=<value> - fusion mode to attempt
=greedy - Perform greedy (both producer-consumer and sibling) fusion
=producer - Perform only producer-consumer fusion
=sibling - Perform only sibling fusion
--affine-loop-invariant-code-motion - Hoist loop invariant instructions outside of affine loops
--affine-loop-tile - Tile affine loop nests
--cache-size=<ulong> - Set size of cache to tile for in KiB (default: 512)
--separate - Separate full and partial tiles (default: false)
--tile-size=<uint> - Use this tile size for all loops
--tile-sizes=<uint> - List of tile sizes for each perfect nest (overridden by -tile-size)
--affine-loop-unroll - Unroll affine loops
--cleanup-unroll - Fully unroll the cleanup loop when possible.
--unroll-factor=<uint> - Use this unroll factor for all loops being unrolled
--unroll-full - Fully unroll loops
--unroll-full-threshold=<uint> - Unroll all loops with trip count less than or equal to this
--unroll-num-reps=<uint> - Unroll innermost loops repeatedly this many times
--unroll-up-to-factor - Allow unrolling up to the factor specified
--affine-loop-unroll-jam - Unroll and jam affine loops
--unroll-jam-factor=<uint> - Use this unroll jam factor for all loops (default 4)
--affine-pipeline-data-transfer - Pipeline non-blocking data transfers between explicitly managed levels of the memory hierarchy
--affine-scalrep - Replace affine memref accesses by scalars by forwarding stores to loads and eliminating redundant loads
--affine-simplify-structures - Simplify affine expressions in maps/sets and normalize memrefs
--affine-super-vectorize - Vectorize to a target independent n-D vector abstraction
--test-fastest-varying=<long> - Specify a 1-D, 2-D or 3-D pattern of fastest varying memory dimensions to match. See defaultPatterns in Vectorize.cpp for a description and examples. This is used for testing purposes
--vectorize-reductions - Vectorize known reductions expressed via iter_args. Switched off by default.
--virtual-vector-size=<long> - Specify an n-D virtual vector size for vectorization. This must be greater than zero.
--annotate-constant - Annotate constant operands to all FIR operations
--array-value-copy - Convert array value operations to memory operations.
--optimize-conflicts - do more detailed conflict analysis to reduce the number of temporaries
--boxed-procedure -
--use-thunks - Convert procedure pointer abstractions to a single code pointer, deploying thunks wherever required.
--canonicalize - Canonicalize operations
--disable-patterns=<string> - Labels of patterns that should be filtered out during application
--enable-patterns=<string> - Labels of patterns that should be used during application, all other patterns are filtered out
--max-iterations=<long> - Max. iterations between applying patterns / simplifying regions
--max-num-rewrites=<long> - Max. number of pattern rewrites within an iteration
--region-simplify=<value> - Perform control flow optimizations to the region tree
=disabled - Don't run any control-flow simplification.
=normal - Perform simple control-flow simplifications (e.g. dead args elimination).
=aggressive - Perform aggressive control-flow simplification (e.g. block merging).
--test-convergence - Test only: Fail pass on non-convergence to detect cyclic pattern
--top-down - Seed the worklist in general top-down order
--cfg-conversion - Convert FIR structured control flow ops to CFG ops.
--always-execute-loop-body - force the body of a loop to execute at least once
--set-nsw - set nsw on loop variable increment
--cg-rewrite - Rewrite some FIR ops into their code-gen forms.
--preserve-declare - Preserve DeclareOp during pre codegen re-write.
--character-conversion - Convert CHARACTER entities with different KINDs
--use-runtime-calls=<string> - Generate runtime calls to a named set of conversion routines. By default, the conversions may produce unexpected results.
--constant-argument-globalisation-opt - Convert constant function arguments to global constants.
--cse - Eliminate common sub-expressions
--demote-affine - Converts `affine.{load,store}` back to fir operations
--external-name-interop - Convert name for external interoperability
--append-underscore - Append trailing underscore to external names.
--fir-add-alias-tags - Add tbaa tags to operations that implement FirAliasAnalysisOpInterface
--fir-assumed-rank-op - Simplify operations on assumed-rank types
--fir-memref-dataflow-opt - Perform store/load forwarding and potentially removing dead stores.
--fir-polymorphic-op - Simplify operations on polymorphic types
--fir-to-llvm-ir - Convert FIR dialect to LLVM-IR dialect
--apply-tbaa - Attach TBAA tags to memory accessing operations.
--datalayout=<string> - Override module's data layout.
--target=<string> - Override module's target triple.
--target-cpu=<string> - Override module's target CPU.
--target-features=<string> - Override module's target features.
--tune-cpu=<string> - Override module's tune CPU.
--flang-algebraic-simplification -
--function-attr - Pass that adds function attributes expected at LLVM IR level
--approx-func-fp-math - Set the approx-func-fp-math attribute on functions in the module.
--frame-pointer=<value> - frame pointer
--no-infs-fp-math - Set the no-infs-fp-math attribute on functions in the module.
--no-nans-fp-math - Set the no-nans-fp-math attribute on functions in the module.
--no-signed-zeros-fp-math - Set the no-signed-zeros-fp-math attribute on functions in the module.
--tune-cpu=<value> - Set the tune-cpu attribute on functions in the module.
--unsafe-fp-math - Set the unsafe-fp-math attribute on functions in the module.
--inline - Inline function calls
--default-pipeline=<string> - The optimizer pipeline used for callables that do not have a dedicated optimizer pipeline in opPipelineList
--inlining-threshold=<uint> - If the ratio between the number of the operations in the callee and the number of the operations in the caller exceeds this value (in percentage), then the callee is not inlined even if it is legal to inline it
--max-iterations=<uint> - Maximum number of iterations when inlining within an SCC
--op-pipelines=<pass-manager> - Callable operation specific optimizer pipelines (in the form of `dialect.op(pipeline)`)
--loop-invariant-code-motion - Hoist loop invariant instructions outside of the loop
--loop-versioning - Loop Versioning
--lower-affine - Lower Affine operations to a combination of Standard and SCF operations
--memory-allocation-opt - Convert stack to heap allocations and vice versa.
--dynamic-array-on-heap - Allocate all arrays with runtime determined size on heap.
--maximum-array-alloc-size=<ulong> - Set maximum number of elements of an array allocated on the stack.
--omp-function-filtering - Filters out functions intended for the host when compiling for the target device.
--omp-map-info-finalization - expands OpenMP MapInfo operations containing descriptors
--omp-mark-declare-target - Marks all functions called by an OpenMP declare target function as declare target
--openacc-legalize-data - Legalize the data in the compute region
--host-to-device - Replace varPtr uses with accPtr if true. Replace accPtr uses with varPtr if false
--print-op-stats - Print statistics of operations
--json - print the stats as JSON
--promote-to-affine - Promotes `fir.{do_loop,if}` to `affine.{for,if}`.
--sccp - Sparse Conditional Constant Propagation
--simplify-intrinsics - Intrinsics simplification
--enable-experimental - Enable experimental code that may not always work correctly
--simplify-region-lite - Region simplification
--snapshot-op-locations - Generate new locations from the current IR
--filename=<string> - The filename to print the generated IR
--tag=<string> - A tag to use when fusing the new locations with the original. If unset, the locations are replaced.
--stack-arrays - Move heap allocated array temporaries to the stack
--stack-reclaim - Insert stacksave/stackrestore in region with allocas
--strip-debuginfo - Strip debug info from all operations
--symbol-dce - Eliminate dead symbols
--target-rewrite - Rewrite some FIR dialect into target specific forms.
--no-character-conversion - Disable target-specific conversion of CHARACTER.
--no-complex-conversion - Disable target-specific conversion of COMPLEX.
--no-struct-conversion - Disable target-specific conversion of derived type value.
--target=<string> - Override module's target triple.
--target-cpu=<string> - Override module's target CPU.
--target-features=<string> - Override module's target features.
--tune-cpu=<string> - Override module's tune CPU.
--vscale-attr - Add vscale_range attribute to functions
--vscale-range=<value> - vector scale range
--outline-intrinsics - Lower all intrinsic procedure implementation in their own functions
--pass-pipeline=<string> - Textual description of the pass pipeline to run
--pgo-block-coverage - Use this option to enable basic block coverage instrumentation
--pgo-temporal-instrumentation - Use this option to enable temporal instrumentation
--pgo-view-block-coverage-graph - Create a dot file of CFGs with block coverage inference information
--poison-checking-function-local - Check that returns are non-poison (for testing)
--print-pipeline-passes - Print a '-passes' compatible string describing the pipeline (best-effort only).
--profile-correlate=<value> - Use debug info or binary file to correlate profiles.
=<empty> - No profile correlation
=debug-info - Use debug info to correlate
=binary - Use binary to correlate
--promote-alloca-vector-loop-user-weight=<uint> - The bonus weight of users of allocas within loop when sorting profitable allocas
--r600-ir-structurize - Use StructurizeCFG IR pass
--riscv-add-build-attributes -
--riscv-use-aa - Enable the use of AA during codegen.
--runtime-counter-relocation - Enable relocating counters at runtime.
--safepoint-ir-verifier-print-only -
--sample-profile-check-record-coverage=<N> - Emit a warning if less than N% of records in the input profile are matched to the IR.
--sample-profile-check-sample-coverage=<N> - Emit a warning if less than N% of samples in the input profile are matched to the IR.
--sample-profile-max-propagate-iterations=<uint> - Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
--sampled-instr-burst-duration=<uint> - Set the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. This number of samples will be recorded for each 'sampled-instr-period' count update. Setting to 1 enables simple sampling, in which case it is recommended to set 'sampled-instr-period' to a prime number.
--sampled-instr-period=<uint> - Set the profile instrumentation sample period. For each sample period, a fixed number of consecutive samples will be recorded. The number is controlled by 'sampled-instr-burst-duration' flag. The default sample period of 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow.
--sampled-instrumentation - Do PGO instrumentation sampling
--sanitizer-early-opt-ep - Insert sanitizers on OptimizerEarlyEP.
--save-temp-labels - Don't discard temporary labels
--skip-ret-exit-block - Suppress counter promotion if exit blocks contain ret.
--speculative-counter-promotion-max-exiting=<uint> - The max number of exiting blocks of a loop to allow speculative counter promotion
--speculative-counter-promotion-to-loop - When the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
--strict-intrinsic-verifier - use stricter verifier for HLFIR intrinsic operations
--summary-file=<string> - The summary file to use for function importing.
--sve-tail-folding=<string> - Control the use of vectorisation using tail-folding for SVE where the option is specified in the form (Initial)[+(Flag1|Flag2|...)]:
disabled (Initial) No loop types will vectorize using tail-folding
default (Initial) Uses the default tail-folding settings for the target CPU
all (Initial) All legal loop types will vectorize using tail-folding
simple (Initial) Use tail-folding for simple loops (not reductions or recurrences)
reductions Use tail-folding for loops containing reductions
noreductions Inverse of above
recurrences Use tail-folding for loops containing fixed order recurrences
norecurrences Inverse of above
reverse Use tail-folding for loops requiring reversed predicates
noreverse Inverse of above
--tail-predication=<value> - MVE tail-predication pass options
=disabled - Don't tail-predicate loops
=enabled-no-reductions - Enable tail-predication, but not for reduction loops
=enabled - Enable tail-predication, including reduction loops
=force-enabled-no-reductions - Enable tail-predication, but not for reduction loops, and force this which might be unsafe
=force-enabled - Enable tail-predication, including reduction loops, and force this which might be unsafe
--target=<string> - specify a target triple
--target-cpu=<string> - specify a target CPU
--target-features=<string> - specify the target features
--tbaa-attach-tag-max=<uint> -
--thinlto-assume-merged - Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
--threads=<int> -
--tune-cpu=<string> - specify a tune CPU
--type-based-intrinsic-cost - Calculate intrinsics cost based only on argument types
--ubsan-guard-checks - Guard UBSAN checks with `llvm.allow.ubsan.check()`.
--ubsan-unique-traps - Deoptimize traps for UBSAN so there is 1 trap per check.
--use-undef - Use undef when generating programs.
--verify-region-info - Verify region info (time consuming)
--vp-counters-per-site=<number> - The average number of profile counters allocated per value profiling site.
--vp-static-alloc - Do static counter allocation for value profiler
--wasm-enable-eh - WebAssembly exception handling
--wasm-enable-exnref - WebAssembly exception handling (exnref)
--wasm-enable-sjlj - WebAssembly setjmp/longjmp handling
--write-experimental-debuginfo - Write debug info in the new non-intrinsic format. Has no effect if --preserve-input-debuginfo-format=true.
--x86-align-branch=<string> - Specify types of branches to align (plus separated list of types):
jcc indicates conditional jumps
fused indicates fused conditional jumps
jmp indicates direct unconditional jumps
call indicates direct and indirect calls
ret indicates rets
indirect indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint> - Control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches.
--x86-branches-within-32B-boundaries - Align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
--x86-pad-max-prefix-size=<uint> - Maximum number of prefixes to use for padding
--x86-relax-relocations - Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF
--x86-sse2avx - Specify that the assembler should encode SSE instructions with VEX prefix
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Polly Options:
Configure the polly loop optimizer
--polly - Enable the polly optimizer (with -O1, -O2 or -O3)
--polly-2nd-level-tiling - Enable a 2nd level loop of loop tiling
--polly-ast-print-accesses - Print memory access functions
--polly-context=<isl parameter set> - Provide additional constraints on the context parameters
--polly-dce-precise-steps=<int> - The number of precise steps between two approximating iterations. (A value of -1 schedules another approximation stage before the actual dead code elimination.
--polly-delicm-max-ops=<int> - Maximum number of isl operations to invest for lifetime analysis; 0=no limit
--polly-detect-full-functions - Allow the detection of full functions
--polly-dump-after - Dump module after Polly transformations into a file suffixed with "-after"
--polly-dump-after-file=<string> - Dump module after Polly transformations to the given file
--polly-dump-before - Dump module before Polly transformations into a file suffixed with "-before"
--polly-dump-before-file=<string> - Dump module before Polly transformations to the given file
--polly-enable-simplify - Simplify SCoP after optimizations
--polly-ignore-func=<string> - Ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided.
--polly-isl-arg=<argument> - Option passed to ISL
--polly-matmul-opt - Perform optimizations of matrix multiplications based on pattern matching
--polly-on-isl-error-abort - Abort if an isl error is encountered
--polly-only-func=<string> - Only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided.
--polly-only-region=<identifier> - Only run on certain regions (The provided identifier must appear in the name of the region's entry block
--polly-only-scop-detection - Only run scop detection, but no other optimizations
--polly-optimized-scops - Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree
--polly-parallel - Generate thread parallel code (isl codegen only)
--polly-parallel-force - Force generation of thread parallel code ignoring any cost model
--polly-pattern-matching-based-opts - Perform optimizations based on pattern matching
--polly-postopts - Apply post-rescheduling optimizations such as tiling (requires -polly-reschedule)
--polly-pragma-based-opts - Apply user-directed transformation from metadata
--polly-pragma-ignore-depcheck - Skip the dependency check for pragma-based transformations
--polly-process-unprofitable - Process scops that are unlikely to benefit from Polly optimizations.
--polly-register-tiling - Enable register tiling
--polly-report - Print information about the activities of Polly
--polly-reschedule - Optimize SCoPs using ISL
--polly-show - Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions)
--polly-show-only - Highlight the code regions that will be optimized in a (CFG only BBs)
--polly-stmt-granularity=<value> - Algorithm to use for splitting basic blocks into multiple statements
=bb - One statement per basic block
=scalar-indep - Scalar independence heuristic
=store - Store-level granularity
--polly-tc-opt - Perform optimizations of tensor contractions based on pattern matching
--polly-tiling - Enable loop tiling
--polly-vectorizer=<value> - Select the vectorization strategy
=none - No Vectorization
=stripmine - Strip-mine outer loops for the loop-vectorizer to trigger
libbolt-dev
It achieves the improvements by optimizing application’s code layout based on execution profile gathered by sampling profiler.
This is a dependency package providing the default libbolt-dev package.
Installed size: 11 KB
How to install: sudo apt install libbolt-dev
Dependencies:
- libbolt-19-dev
libc++-dev
libc++ is another implementation of the C++ standard library
Features and Goals
- Correctness as defined by the C++ standards.
- Fast execution.
- Minimal memory use.
- Fast compile times.
- ABI compatibility with gcc’s libstdc++ for some low-level features such as exception objects, rtti and memory allocation.
- Extensive unit tests.
This is a dependency package providing the default LLVM C++ Standard library development files.
Installed size: 14 KB
How to install: sudo apt install libc++-dev
Dependencies:
- libc++-19-dev
libc++-dev-wasm32
libc++ is another implementation of the C++ standard library
Features and Goals
- Correctness as defined by the C++ standards.
- Fast execution.
- Minimal memory use.
- Fast compile times.
- ABI compatibility with gcc’s libstdc++ for some low-level features such as exception objects, rtti and memory allocation.
- Extensive unit tests.
This is a dependency package providing the default 32-bit WebAssembly System Interface.
Installed size: 11 KB
How to install: sudo apt install libc++-dev-wasm32
Dependencies:
- libc++-19-dev-wasm32
libc++1
libc++ is another implementation of the C++ standard library.
Features and Goals
- Correctness as defined by the C++ standards.
- Fast execution.
- Minimal memory use.
- Fast compile times.
- ABI compatibility with gcc’s libstdc++ for some low-level features such as exception objects, rtti and memory allocation.
- Extensive unit tests.
This is a dependency package providing the default LLVM C++ Standard library.
Installed size: 14 KB
How to install: sudo apt install libc++1
Dependencies:
- libc++1-19
libc++abi-dev
libc++abi is another implementation of low level support for a standard C++ library.
Features and Goals
- Correctness as defined by the C++ standards.
- Provide a portable sublayer to ease the porting of libc++
This is a dependency package providing low level support to dev LLVM C++ Standard library.
Installed size: 14 KB
How to install: sudo apt install libc++abi-dev
Dependencies:
- libc++abi-19-dev
libc++abi1
libc++abi is another implementation of low level support for a standard C++ library.
Features and Goals
- Correctness as defined by the C++ standards.
- Provide a portable sublayer to ease the porting of libc++
This is a dependency package providing low level support to LLVM C++ Standard library.
Installed size: 14 KB
How to install: sudo apt install libc++abi1
Dependencies:
- libc++abi1-19
libclang-cpp-dev
Clang project is a C, C++, Objective C and Objective C++ front-end for the LLVM compiler. Its goal is to offer a replacement to the GNU Compiler Collection (GCC).
Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also provides most of the support of C++20.
This is a dependency package providing the default Clang C++ library.
Installed size: 11 KB
How to install: sudo apt install libclang-cpp-dev
Dependencies:
- libclang-cpp19-dev
libclang-dev
Clang project is a C, C++, Objective C and Objective C++ front-end for the LLVM compiler. Its goal is to offer a replacement to the GNU Compiler Collection (GCC).
Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also provides most of the support of C++20.
This is a dependency package providing the default libclang libraries and headers.
Installed size: 11 KB
How to install: sudo apt install libclang-dev
Dependencies:
- libclang-19-dev
libclang-rt-dev
This package provides various libraries:
- builtins - Simple libraries that provide implementation of the low-level target-specific hooks required by code generation and other runtime components.
- sanitizer runtimes - AddressSanitizer, ThreadSanitizer, UndefinedBehaviorSanitizer, MemorySanitizer, LeakSanitizer DataFlowSanitizer, etc
- profile - Library which is used to collect coverage information.
This is a dependency package providing the default compiler-rt libraries and headers.
Installed size: 11 KB
How to install: sudo apt install libclang-rt-dev
Dependencies:
- libclang-rt-19-dev
libclang-rt-dev-wasm32
Provides the compiler-rt builtins for WebAssembly 32 bits
This is a dependency package providing the default libclang wasm32 library.
Installed size: 11 KB
How to install: sudo apt install libclang-rt-dev-wasm32
Dependencies:
- libclang-rt-19-dev-wasm32
libclang-rt-dev-wasm64
Provides the compiler-rt builtins for WebAssembly 64 bits
This is a dependency package providing the default libclang wasm64 library.
Installed size: 11 KB
How to install: sudo apt install libclang-rt-dev-wasm64
Dependencies:
- libclang-rt-19-dev-wasm64
libclang1
Clang project is a C, C++, Objective C and Objective C++ front-end for the LLVM compiler. Its goal is to offer a replacement to the GNU Compiler Collection (GCC).
Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also provides most of the support of C++20.
This is a dependency package providing the default clang libraries.
The C Interface to Clang provides a relatively small API that exposes facilities for parsing source code into an abstract syntax tree (AST), loading already-parsed ASTs, traversing the AST, associating physical source locations with elements within the AST, and other facilities that support Clang-based development tools.
Installed size: 11 KB
How to install: sudo apt install libclang1
Dependencies:
- libclang1-19
libflang-dev
Ground-up implementation of a Fortran front end written in modern C++.
While it is capable of generating executables for a number of examples, some functionalities are still missing.
This package contains the flang libraries and headers.
This is a dependency package providing the default libflang-dev package.
Installed size: 11 KB
How to install: sudo apt install libflang-dev
Dependencies:
- libflang-19-dev
liblld-dev
LLD is a new, high-performance linker. It is built as a set of reusable components which highly leverage existing libraries in the larger LLVM Project.
This is a dependency package providing the default liblld-dev package.
Installed size: 13 KB
How to install: sudo apt install liblld-dev
Dependencies:
- liblld-19-dev
liblldb-dev
LLDB is a next generation, high-performance debugger. It is built as a set of reusable components which highly leverage existing libraries in the larger LLVM Project, such as the Clang expression parser and LLVM disassembler.
This package provides the header files to build extension over lldb.
Installed size: 18 KB
How to install: sudo apt install liblldb-dev
Dependencies:
- liblldb-19-dev
libllvm-ocaml-dev
LLVM is a collection of libraries and tools that make it easy to build compilers, optimizers, just-in-time code generators, and many other compiler-related programs.
This is a dependency package providing the default bindings for OCaml.
Installed size: 16 KB
How to install: sudo apt install libllvm-ocaml-dev
Dependencies:
- libllvm-19-ocaml-dev
- llvm-runtime
libomp-dev
The runtime is the part of the OpenMP implementation that your code is linked against, and that manages the multiple threads in an OpenMP program while it is executing.
This is a dependency package providing the default LLVM OpenMP dev package.
Installed size: 11 KB
How to install: sudo apt install libomp-dev
Dependencies:
- libomp-19-dev
libomp5
The runtime is the part of the OpenMP implementation that your code is linked against, and that manages the multiple threads in an OpenMP program while it is executing.
This is a dependency package providing the default LLVM OpenMP runtime.
Installed size: 11 KB
How to install: sudo apt install libomp5
Dependencies:
- libomp5-19
lld
LLD is a new, high-performance linker. It is built as a set of reusable components which highly leverage existing libraries in the larger LLVM Project.
This is a dependency package providing the lld linker.
Installed size: 20 KB
How to install: sudo apt install lld
Dependencies:
- lld-19
ld.lld
ELF linker from the LLVM project
root@kali:~# ld.lld --help
OVERVIEW: lld
USAGE: ld.lld [options] file...
OPTIONS:
-( Alias for --start-group
-) Alias for --end-group
--allow-multiple-definition
Allow multiple definitions
--allow-shlib-undefined Allow unresolved references in shared libraries (default when linking a shared library)
--android-memtag-heap Instruct the dynamic loader to enable MTE protection for the heap
--android-memtag-mode=<value>
Instruct the dynamic loader to start under MTE mode {async, sync, none}
--android-memtag-stack Instruct the dynamic loader to prepare for MTE stack instrumentation
--apply-dynamic-relocs Apply link-time values for dynamic relocations
--as-needed Only set DT_NEEDED for shared libraries if used
--auxiliary=<value> Set DT_AUXILIARY field to the specified name
--Bdynamic Link against shared libraries (default)
--be8 write a Big Endian ELF file using BE8 format (AArch32 only)
--Bno-symbolic Don't bind default visibility defined symbols locally for -shared (default)
--Bshareable Alias for --shared
--Bstatic Do not link against shared libraries
--Bsymbolic-functions Bind default visibility defined function symbols locally for -shared
--Bsymbolic-non-weak-functions
Bind default visibility defined STB_GLOBAL function symbols locally for -shared
--Bsymbolic-non-weak Bind default visibility defined STB_GLOBAL symbols locally for -shared
--Bsymbolic Bind default visibility defined symbols locally for -shared
--build-id=[fast,md5,sha1,uuid,0x<hexstring>]
Generate build ID note
--build-id Alias for --build-id=sha1
-b <value> Alias for --format
--call-graph-ordering-file=<value>
Layout sections to optimize the given callgraph
--call-graph-profile-sort=[none,hfsort,cdsort]
Reorder input sections with call graph profile using the specified algorithm (default: cdsort)
--call_shared Alias for --Bdynamic
--check-sections Check section addresses for overlaps (default)
--cmse-implib Make the output library to be a CMSE secure code import library
--color-diagnostics=[auto,always,never]
Use colors in diagnostics (default: auto)
--color-diagnostics Alias for --color-diagnostics=always
--compress-debug-sections=[none,zlib,zstd]
Compress DWARF debug sections
--compress-sections=<section-glob>={none,zlib,zstd}[:level]
Compress output sections that match the glob and do not have the SHF_ALLOC flag. The sections remain uncompressed if compressed content would be larger. The compression level is <level> (if specified) or a default speed-focused level
--cref Output cross reference table. If -Map is specified, print to the map file
--debug-names Generate a merged .debug_names section
--default-script=<value>
In the absence of --script, read this default linker script
--defsym=<symbol>=<value>
Define a symbol alias
--demangle Demangle symbol names (default)
--dependency-file=<file>
Write a dependency file
--dependent-libraries Process dependent library specifiers from input files (default)
--disable-new-dtags Disable new dynamic tags
--discard-all Delete all local symbols
--discard-locals Delete temporary local symbols
--discard-none Keep all symbols in the symbol table
--dn Alias for --Bstatic
-dT <value> Alias for --default-script
--dynamic-linker=<value>
Which dynamic linker to use
--dynamic-list=<file> Similar to --export-dynamic-symbol-list. When creating a shared object, this additionally implies -Bsymbolic but does not set DF_SYMBOLIC
--dy Alias for --Bdynamic
--EB Select the big-endian format in OUTPUT_FORMAT
--eh-frame-hdr Request creation of .eh_frame_hdr section and PT_GNU_EH_FRAME segment header
--EL Select the little-endian format in OUTPUT_FORMAT
--emit-relocs Generate relocations in output
--enable-new-dtags Enable new dynamic tags (default)
--enable-non-contiguous-regions
Spill input sections to later matching output sections to avoid memory region overflow
--end-group Ignored for compatibility with GNU unless you pass --warn-backrefs
--end-lib End a grouping of objects that should be treated as if they were together in an archive
--entry=<entry> Name of entry point symbol
--error-handling-script=<value>
Specify an error handling script
--error-limit=<value> Maximum number of errors to emit before stopping (0 = no limit)
--error-unresolved-symbols
Report unresolved symbols as errors
--exclude-libs=<value> Exclude static libraries from automatic export
--execute-only Mark executable sections unreadable
--export-dynamic-symbol-list=file
Read a list of dynamic symbol patterns. Apply --export-dynamic-symbol on each pattern
--export-dynamic-symbol=glob
(executable) Put matched symbols in the dynamic symbol table. (shared object) References to matched non-local STV_DEFAULT symbols shouldn't be bound to definitions within the shared object. Does not imply -Bsymbolic.
--export-dynamic Put symbols in the dynamic symbol table
-E Alias for --export-dynamic
-e <value> Alias for --entry
--fat-lto-objects Use the .llvm.lto section, which contains LLVM bitcode, in fat LTO object files to perform LTO.
--fatal-warnings Treat warnings as errors
--filter=<value> Set DT_FILTER field to the specified name
--fini=<symbol> Specify a finalizer function
--fix-cortex-a53-843419 Apply fixes for AArch64 Cortex-A53 erratum 843419
--fix-cortex-a8 Apply fixes for ARM Cortex-A8 erratum 657417
--force-group-allocation
Only meaningful for -r. Section groups are discarded. If two section group members are placed to the same output section, combine their relocations as well
--format=[default,elf,binary]
Change the input format of the inputs following this option
--fortran-common Search archive members for definitions to override COMMON symbols (default)
-F <value> Alias for --filter
-f <value> Alias for --auxiliary
--gc-sections Enable garbage collection of unused sections
--gdb-index Generate .gdb_index section
--gnu-unique Enable STB_GNU_UNIQUE symbol binding (default)
--hash-style=<value> Specify hash style (sysv, gnu or both)
--help Print option help
-h <value> Alias for --soname
--icf=all Enable identical code folding
--icf=none Disable identical code folding (default)
--icf=safe Enable safe identical code folding
--ignore-data-address-equality
lld can break the address equality of data
--ignore-function-address-equality
lld can break the address equality of functions
--image-base=<value> Set the base address
--in-implib=<file> Read an existing CMSE secure code import library and preserve entry function addresses in the resulting new CMSE secure code import library (optional when creating a CMSE secure image)
--init=<symbol> Specify an initializer function
--just-symbols=<value> Just link symbols
--keep-unique=<value> Do not fold this symbol during ICF
--library-path=<value> Add <dir> to the library search path
--library-path <value> Add <dir> to the library search path
--library=<value> Search for library <libname>
--library <value> Search for library <libname>
--load-pass-plugin=<value>
Load passes from plugin library
--lto-aa-pipeline=<value>
AA pipeline to run during LTO. Used in conjunction with -lto-newpm-passes
--lto-basic-block-address-map
Emit basic block address map for LTO
--lto-basic-block-sections=<value>
Enable basic block sections for LTO
--lto-CGO<cgopt-level> Codegen optimization level for LTO
--lto-cs-profile-file=<value>
Context sensitive profile file path
--lto-cs-profile-generate
Perform context sensitive PGO instrumentation
--lto-debug-pass-manager
Debug new pass manager
--lto-emit-asm Emit assembly code
--lto-emit-llvm Emit LLVM-IR bitcode
--lto-known-safe-vtables=<value>
When --lto-validate-all-vtables-have-type-infos is enabled, skip validation on these vtables (_ZTV symbols)
--lto-newpm-passes=<value>
Passes to run during LTO
--lto-O<opt-level> Optimization level for LTO
--lto-partitions=<value>
Number of LTO codegen partitions
--lto-pgo-warn-mismatch turn on warnings about profile cfg mismatch (default)
--lto-sample-profile=<value>
Sample profile file path
--lto-unique-basic-block-section-names
Give unique names to every basic block section for LTO
--lto-validate-all-vtables-have-type-infos
Validate that all vtables have type infos for LTO link
--lto-whole-program-visibility
Asserts that the LTO link has whole program visibility
--lto=[full,thin] Set LTO backend
-L <dir> Add <dir> to the library search path
-l <libname> Search for library <libname>
--Map=<value> Print a link map to the specified file
--merge-exidx-entries Enable merging .ARM.exidx entries (default)
--mllvm=<value> Additional arguments to forward to LLVM's option processing
--mmap-output-file Mmap the output file for writing (default)
-M Alias for --print-map
-m <value> Set target emulation
--nmagic Do not page align sections, link against static libraries.
--no-allow-multiple-definition
Do not allow multiple definitions (default)
--no-allow-shlib-undefined
Do not allow unresolved references in shared libraries (default when linking an executable)
--no-apply-dynamic-relocs
Do not apply link-time values for dynamic relocations (default)
--no-as-needed Always set DT_NEEDED for shared libraries (default)
--no-check-sections Do not check section addresses for overlaps
--no-color-diagnostics Alias for --color-diagnostics=never
--no-debug-names Do not generate a merged .debug_names section (default)
--no-demangle Do not demangle symbol names
--no-dependent-libraries
Ignore dependent library specifiers from input files
--no-dynamic-linker Inhibit output of .interp section
--no-eh-frame-hdr Do not create .eh_frame_hdr section
--no-execute-only Mark executable sections readable (default)
--no-export-dynamic Do not put symbols in the dynamic symbol table (default)
--no-fat-lto-objects Ignore the .llvm.lto section in relocatable object files (default).
--no-fatal-warnings Do not treat warnings as errors (default)
--no-fortran-common Do not search archive members for definitions to override COMMON symbols
--no-gc-sections Disable garbage collection of unused sections (default)
--no-gdb-index Do not generate .gdb_index section (default)
--no-gnu-unique Disable STB_GNU_UNIQUE symbol binding
--no-lto-basic-block-address-map
Do not emit basic block address map for LTO (default)
--no-lto-pgo-warn-mismatch
turn off warnings about profile cfg mismatch
--no-lto-unique-basic-block-section-names
Do not give unique names to every basic block section for LTO (default)
--no-lto-validate-all-vtables-have-type-infos
Do not validate that all vtables have type infos for LTO link
--no-lto-whole-program-visibility
Asserts that the LTO link does not have whole program visibility
--no-merge-exidx-entries
Disable merging .ARM.exidx entries
--no-mmap-output-file Do not mmap the output file for writing
--no-nmagic Page align sections (default)
--no-omagic Do not set the text data sections to be writable, page align sections (default)
--no-optimize-bb-jumps Do not remove any direct jumps at the end to the next basic block (default)
--no-pcrel-optimize (PowerPC64) Disable PC-relative optimizations
--no-pie Do not create a position independent executable (default)
--no-power10-stubs Alias for --power10-stubs=no
--no-print-gc-sections Do not list removed unused sections (default)
--no-print-icf-sections Do not list identical folded sections (default)
--no-relax-gp Disable global pointer relaxation (default)
--no-relax Disable target-specific relaxations
--no-rosegment Do not put read-only non-executable sections in their own segment
--no-toc-optimize (PowerPC64) Disable TOC related optimizations
--no-undefined-version Report version scripts that refer undefined symbols
--no-undefined Report unresolved symbols even if the linker is creating a shared library
--no-use-android-relr-tags
Use SHT_RELR / DT_RELR* tags (default)
--no-warn-backrefs Do not warn about backward symbol references to extract archive members (default)
--no-warn-common Do not warn about duplicate common symbols (default)
--no-warn-ifunc-textrel Do not warn about using ifunc symbols with text relocations (default)
--no-warn-mismatch Suppress errors for certain unknown seciton types
--no-warn-symbol-ordering
Do not warn about problems with the symbol ordering file
--no-warnings Suppress warnings and cancel --fatal-warnings
--no-whole-archive Do not force load of all members in a static library (default)
--noinhibit-exec Retain the executable output file whenever it is still usable
--non_shared Alias for --Bstatic
--nostdlib Only search directories specified on the command line
-N Alias for --omagic
-n Alias for --nmagic
--oformat=[elf,binary] Specify the binary format for the output object file
--omagic Set the text and data sections to be readable and writable, do not page align sections, link against static libraries
--opt-remarks-filename <value>
YAML output file for optimization remarks
--opt-remarks-format <value>
The format used for serializing remarks (default: YAML)
--opt-remarks-hotness-threshold=<value>
Minimum profile count required for an optimization remark to be output. Use 'auto' to apply the threshold from profile summary.
--opt-remarks-passes <value>
Regex for the passes that need to be serialized to the output file
--opt-remarks-with-hotness
Include hotness information in the optimization remarks file
--optimize-bb-jumps Remove direct jumps at the end to the next basic block
--orphan-handling=<value>
Control how orphan sections are handled when linker script used
--out-implib=<file> Output the CMSE secure code import library to <file> (required when creating a CMSE secure image)
--output=<value> Alias for -o
--output <value> Alias for -o
-O <value> Optimize output file size
-o <path> Path to file to write output
--pack-dyn-relocs=[none,android,relr,android+relr]
Pack dynamic relocations in the given format
--package-metadata=<value>
Emit package metadata note
--pcrel-optimize (PowerPC64) Enable PC-relative optimizations (default)
--pic-executable Alias for --pie
--pic-veneer Always generate position independent thunks (veneers)
--pie Create a position independent executable
--plugin-opt=-<value> Specify an LLVM option for compatibility with LLVMgold.so
--plugin-opt=cs-profile-generate
Alias for --lto-cs-profile-generate
--plugin-opt=cs-profile-path=<value>
Alias for --lto-cs-profile-file
--plugin-opt=debug-pass-manager
Alias for --lto-debug-pass-manager
--plugin-opt=disable-verify
Alias for --disable-verify
--plugin-opt=dwo_dir=<value>
Directory to store .dwo files when LTO and debug fission are used
--plugin-opt=emit-asm Alias for --lto-emit-asm
--plugin-opt=emit-llvm Alias for --lto-emit-llvm
--plugin-opt=jobs=<value>
Alias for --thinlto-jobs=
--plugin-opt=lto-partitions=<value>
Alias for --lto-partitions
--plugin-opt=obj-path=<value>
Alias for --lto-obj-path=
--plugin-opt=opt-remarks-filename=<value>
Alias for --opt-remarks-filename
--plugin-opt=opt-remarks-format=<value>
Alias for --opt-remarks-format
--plugin-opt=opt-remarks-hotness-threshold=<value>
Alias for --opt-remarks-hotness-threshold
--plugin-opt=opt-remarks-passes=<value>
Alias for --opt-remarks-passes
--plugin-opt=opt-remarks-with-hotness
Alias for --opt-remarks-with_hotness
--plugin-opt=O<value> Alias for --lto-O
--plugin-opt=sample-profile=<value>
Alias for --lto-sample-profile
--plugin-opt=save-temps Alias for --save-temps
--plugin-opt=stats-file=<value>
Filename to write LTO statistics to
--plugin-opt=thinlto-emit-imports-files
Alias for --thinlto-emit-imports-files
--plugin-opt=thinlto-index-only=<value>
Alias for --thinlto-index-only=
--plugin-opt=thinlto-index-only
Alias for --thinlto-index-only
--plugin-opt=thinlto-object-suffix-replace=<value>
Alias for --thinlto-object-suffix-replace=
--plugin-opt=thinlto-prefix-replace=<value>
Alias for --thinlto-prefix-replace=
--plugin=<value> Ignored for compatibility with GNU linkers
--pop-state Restore the states saved by --push-state
--power10-stubs=<mode> Whether to use Power10 instructions in call stubs for R_PPC64_REL24_NOTOC and TOC/NOTOC interworking (yes (default): use; no: don't use). "auto" is currently the same as "yes"
--power10-stubs Alias for --power10-stubs=auto
--print-archive-stats=<value>
Write archive usage statistics to the specified file. Print the numbers of members and extracted members for each archive
--print-gc-sections List removed unused sections
--print-icf-sections List identical folded sections
--print-map Print a link map to the standard output
--print-memory-usage Report target memory usage
--print-symbol-order=<value>
Print a symbol order specified by --call-graph-ordering-file into the specified file
--push-state Save the current state of --as-needed, -static and --whole-archive
-q Alias for --emit-relocs
--relax-gp Enable global pointer relaxation
--relax Enable target-specific relaxations if supported (default)
--relocatable Create relocatable object file
--remap-inputs-file=<file>
Each line contains 'from-glob=to-file'. An input file matching <from-glob> is remapped to <to-file>
--remap-inputs=<from-glob>=<to-file>
Remap input files matching <from-glob> to <to-file>
--reproduce=<value> Write tar file containing inputs and command to reproduce link
--retain-symbols-file=<file>
Retain only the symbols listed in the file
--rosegment Put read-only non-executable sections in their own segment (default)
--rpath=<value> Add a DT_RUNPATH to the output
--rsp-quoting=[posix,windows]
Quoting style for response files
-R <value> Alias for --rpath
-r Alias for --relocatable
--save-temps=<value> Save select intermediate LTO compilation results
--save-temps Save intermediate LTO compilation results
--script=<value> Read linker script
--section-start=<address>
Set address of section
--shared Build a shared object
--shuffle-sections=<section-glob>=<seed>
Shuffle matched sections using the given seed before mapping them to the output sections. If -1, reverse the section order. If 0, use a random seed
--soname=<value> Set DT_SONAME
--sort-section=<value> Specifies sections sorting rule when linkerscript is used
--split-stack-adjust-size=<value>
Specify adjustment to stack size when a split-stack function calls a non-split-stack function
--start-group Ignored for compatibility with GNU unless you pass --warn-backrefs
--start-lib Start a grouping of objects that should be treated as if they were together in an archive
--static Alias for --Bstatic
--strip-all Strip all symbols. Implies --strip-debug
--strip-debug Strip debugging information
--symbol-ordering-file=<value>
Layout sections to place symbols in the order specified by symbol ordering file
--sysroot=<value> Set the system root
-S Alias for --strip-debug
-s Alias for --strip-all
--target1-abs Interpret R_ARM_TARGET1 as R_ARM_ABS32 (default)
--target1-rel Interpret R_ARM_TARGET1 as R_ARM_REL32
--target2=<type> Interpret R_ARM_TARGET2 as <type>, where <type> is one of rel, abs, or got-rel
--Tbss=<value> Same as --section-start with .bss as the sectionname
--Tdata=<value> Same as --section-start with .data as the sectionname
--thinlto-cache-dir=<value>
Path to ThinLTO cached object file directory
--thinlto-cache-policy=<value>
Pruning policy for the ThinLTO cache
--thinlto-jobs=<value> Number of ThinLTO jobs. Default to --threads=
--thinlto-single-module=<value>
Specify a single module to compile in ThinLTO mode, for debugging only
--threads=<value> Number of threads. '1' disables multi-threading. By default all available hardware threads are used
--time-trace-granularity=<value>
Minimum time granularity (in microseconds) traced by time profiler
--time-trace=<file> Record time trace to <file>
--time-trace Record time trace to file next to output
--toc-optimize (PowerPC64) Enable TOC related optimizations (default)
--trace-symbol=<value> Trace references to symbols
--trace Print the names of the input files
--Ttext=<value> Same as --section-start with .text as the sectionname
-T <value> Alias for --script
-t Alias for --trace
--undefined-glob=<pattern>
Force undefined symbol during linking
--undefined-version Allow unused version in version script (disabled by default)
--undefined=<symbol> Force undefined symbol during linking
--unique Creates a separate output section for every orphan input section
--unresolved-symbols=<value>
Determine how to handle unresolved symbols
--use-android-relr-tags Use SHT_ANDROID_RELR / DT_ANDROID_RELR* tags instead of SHT_RELR / DT_RELR*
-u <value> Alias for --undefined
--verbose Verbose mode
--version-script=<value>
Read a version script
--version Display the version number and exit
--vs-diagnostics Format diagnostics for Visual Studio compatibility
-V Alias for -v
-v Display the version number
--warn-backrefs-exclude=<glob>
Glob describing an archive (or an object file within --start-lib) which should be ignored for --warn-backrefs.
--warn-backrefs Warn about backward symbol references to extract archive members
--warn-common Warn about duplicate common symbols
--warn-ifunc-textrel Warn about using ifunc symbols with text relocations
--warn-symbol-ordering Warn about problems with the symbol ordering file (default)
--warn-unresolved-symbols
Report unresolved symbols as warnings
--whole-archive Force load of all members in a static library
--why-extract=<value> Print to a file about why archive members are extracted
--wrap=<symbol> Redirect symbol references to __wrap_symbol and __real_symbol references to symbol
-w Alias for --no-warnings
-X Alias for --discard-locals
-x Alias for --discard-all
-y <value> Alias for --trace-symbol
-z <option> Linker option extensions
ld.lld: supported targets: elf
lld
ELF linker from the LLVM project
root@kali:~# man lld
LD.LLD(1) General Commands Manual LD.LLD(1)
NAME
ld.lld -- ELF linker from the LLVM project
SYNOPSIS
ld.lld [options] objfile ...
DESCRIPTION
A linker takes one or more object, archive, and library files, and com-
bines them into an output file (an executable, a shared library, or an-
other object file). It relocates code and data from the input files and
resolves symbol references between them.
ld.lld is a drop-in replacement for the GNU BFD and gold linkers. It
accepts most of the same command line arguments and linker scripts as
GNU linkers.
ld.lld currently supports i386, x86-64, ARM, AArch64, LoongArch, Pow-
erPC32, PowerPC64, MIPS32, MIPS64, RISC-V, AMDGPU, Hexagon and SPARC V9
targets. ld.lld acts as a Microsoft link.exe-compatible linker if in-
voked as lld-link and as macOS's ld if invoked as ld.ld64. All these
targets are always supported however ld.lld was built, so you can always
use ld.lld as a native linker as well as a cross linker.
OPTIONS
Many options have both a single-letter and long form. When using the
long form options other than those beginning with the letter o may be
specified using either one or two dashes preceding the option name.
Long options beginning with o require two dashes to avoid confusion with
the -o path option.
--allow-multiple-definition
Do not error if a symbol is defined multiple times. The first
definition will be used.
--allow-shlib-undefined
Allow unresolved references in shared libraries. This option is
enabled by default when linking a shared library.
--apply-dynamic-relocs
Apply link-time values for dynamic relocations.
--as-needed
Only set DT_NEEDED for shared libraries if used.
--auxiliary=value
Set the DT_AUXILIARY field to the specified name.
--Bdynamic, --dy
Link against shared libraries.
--Bstatic, --static, --dn
Do not link against shared libraries.
-Bno-symbolic
Don't bind default visibility defined symbols locally for
-shared (default).
-Bsymbolic
Bind default visibility defined symbols locally for -shared.
Also set the DF_SYMBOLIC flag.
-Bsymbolic-non-weak
Bind default visibility defined STB_GLOBAL symbols locally for
-shared.
-Bsymbolic-functions
Bind default visibility defined function symbols locally for
-shared.
-Bsymbolic-non-weak-functions
Bind default visibility defined STB_GLOBAL function symbols lo-
cally for -shared.
---be8 Write a Big Endian ELF File using BE8 format(AArch32 only)
--build-id=value
Generate a build ID note. value may be one of fast, md5, sha1,
tree, uuid, 0xhex-string, and none. tree is an alias for sha1.
Build-IDs of type fast, md5, sha1, and tree are calculated from
the object contents. fast is not intended to be cryptographi-
cally secure.
--build-id
Synonym for --build-id=sha1.
--call-graph-profile-sort=algorithm
algorithm may be:
none
Ignore call graph profile.
hfsort
Use hfsort.
cdsort
Use cdsort (default).
--color-diagnostics=value
Use colors in diagnostics. value may be one of always, auto,
and never. auto enables color if and only if output is to a
terminal.
--color-diagnostics
Alias for --color-diagnostics=auto.
--compress-debug-sections=value
Compress DWARF debug sections. The sections remain uncompressed
if compressed content would be larger. value may be
none
No compression.
zlib
The default compression level is 1 (fastest) as the debug
info usually compresses well at that level.
zstd
Use the default compression level in zstd.
--compress-sections=section-glob={none,zlib,zstd}[:level]
Compress output sections that match the glob and do not have the
SHF_ALLOC flag. The matched sections remain uncompressed if
compressed content would be larger. The compression level is
level (if specified) or a default speed-focused level. This is
like a generalized --compress-debug-sections.
--cref Output cross reference table. If -Map is specified, print to the
map file.
--debug-names
Generate a merged .debug_names section.
--default-script=file, -dT file
In the absence of --script, read this default linker script.
--defsym=symbol=expression
Define a symbol alias. expression may be another symbol or a
linker script expression. For example, `--defsym=foo=bar' or
`--defsym=foo=bar+0x100'.
--demangle
Demangle symbol names.
--disable-new-dtags
Disable new dynamic tags.
--discard-all, -x
Delete all local symbols.
--discard-locals, -X
Delete temporary local symbols.
--discard-none
Keep all symbols in the symbol table.
--dynamic-linker=value
Specify the dynamic linker to be used for a dynamically linked
executable. This is recorded in an ELF segment of type
PT_INTERP.
--dynamic-list=file
Similar to --export-dynamic-symbol-list. When creating a shared
object, implies -Bsymbolic but does not set DF_SYMBOLIC
--EB Select the big-endian format in the OUTPUT_FORMAT command.
--EL Select the little-endian format in the OUTPUT_FORMAT command.
--eh-frame-hdr
Request creation of .eh_frame_hdr section and PT_GNU_EH_FRAME
segment header.
--emit-relocs, -q
Generate relocations in the output.
--enable-new-dtags
Enable new dynamic tags.
--enable-non-contiguous-regions
Spill input sections to later matching output sections to avoid
memory region overflow.
--end-lib
End a grouping of objects that should be treated as if they were
together in an archive.
--entry=entry
Name of entry point symbol.
--error-limit=value
Maximum number of errors to emit before stopping. A value of
zero indicates that there is no limit.
--error-unresolved-symbols
Report unresolved symbols as errors.
--error-handing-script=script_path
Call script script_path upon some error, with tag as first argu-
ment, and an extra parameter as second argument. The script is
expected to return 0 on success. Any other value is considered a
generic error. tag may be missing-lib followed by the name of
the missing library. undefined-symbol followed by the name of
the undefined symbol.
--execute-only
Mark executable sections unreadable. This option is currently
only supported on AArch64.
--exclude-libs=value
Exclude static libraries from automatic export.
--export-dynamic, -E
Put symbols in the dynamic symbol table.
--export-dynamic-symbol=glob
(executable) Put matched non-local defined symbols to the dy-
namic symbol table. (shared object) References to matched non-
local STV_DEFAULT symbols shouldn't be bound to definitions
within the shared object even if they would otherwise be due to
-Bsymbolic , -Bsymbolic-functions or --dynamic-list
--export-dynamic-symbol-list=file
Read a list of dynamic symbol patterns from file. Apply
--export-dynamic-symbol on each pattern.
--fatal-warnings
Treat warnings as errors.
--filter=value, -F value
Set the DT_FILTER field to the specified value.
--fini=symbol
Specify a finalizer function.
--force-group-allocation
Only meaningful for -r. Section groups are discarded. If two
section group members are placed to the same output section,
combine their relocations as well.
--format=input-format, -b input-format
Specify the format of the inputs following this option.
input-format may be one of binary, elf, and default. default is
a synonym for elf.
--gc-sections
Enable garbage collection of unused sections.
--gdb-index
Generate .gdb_index section.
--hash-style=value
Specify hash style. value may be sysv, gnu, or both. both is
the default.
--help Print a help message.
--icf=all
Enable identical code folding.
--icf=safe
Enable safe identical code folding.
--icf=none
Disable identical code folding.
--ignore-data-address-equality
Ignore address equality of data. C/C++ requires each data to
have a unique address. This option allows lld to do unsafe op-
timization that breaks the requirement: create copies of read-
only data or merge two or more read-only data that happen to
have the same value.
--ignore-function-address-equality
Ignore address equality of functions. This option allows non-
PIC calls to a function with non-default visibility in a shared
object. The function may have different addresses within the
executable and within the shared object.
--image-base=value
Set the base address to value.
--init=symbol
Specify an initializer function.
--keep-unique=symbol
Do not fold symbol during ICF.
-l libName, --library=libName
Root name of library to use.
-L dir, --library-path=dir
Add a directory to the library search path.
--lto-aa-pipeline=value
AA pipeline to run during LTO. Used in conjunction with
--lto-newpm-passes.
--lto-newpm-passes=value
Passes to run during LTO.
--lto-Oopt-level
Optimization level for LTO.
--lto-partitions=value
Number of LTO codegen partitions.
-m value
Set target emulation.
--Map=file, -M file
Print a link map to file.
--nmagic, -n
Do not page align sections, link against static libraries.
--no-allow-shlib-undefined
Do not allow unresolved references in shared libraries. This
option is enabled by default when linking an executable.
--no-as-needed
Always set DT_NEEDED for shared libraries.
--no-color-diagnostics
Do not use colors in diagnostics.
--no-demangle
Do not demangle symbol names.
--no-dynamic-linker
Inhibit output of an .interp section.
--no-fortran-common
Do not search archive members for definitions to override COMMON
symbols.
--no-gc-sections
Disable garbage collection of unused sections.
--no-gnu-unique
Disable STB_GNU_UNIQUE symbol binding.
--no-merge-exidx-entries
Disable merging .ARM.exidx entries.
--no-nmagic
Page align sections.
--no-omagic
Do not set the text data sections to be writable, page align
sections.
--no-relax
Disable target-specific relaxations. For x86-64 this disables
R_X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX GOT optimization.
--no-rosegment
Do not put read-only non-executable sections in their own seg-
ment.
--undefined-version
Do not report version scripts that refer to undefined symbols.
--no-undefined
Report unresolved symbols even if the linker is creating a
shared library.
--no-warn-mismatch
Do not reject unknown section types.
--no-warn-symbol-ordering
Do not warn about problems with the symbol ordering file or call
graph profile.
--no-warnings, -w
Suppress warnings and cancel --fatal-warnings.
--no-whole-archive
Restores the default behavior of loading archive members.
--no-pie, --no-pic-executable
Do not create a position independent executable.
--noinhibit-exec
Retain the executable output file whenever it is still usable.
--nostdlib
Only search directories specified on the command line.
-o path
Write the output executable, library, or object to path. If not
specified, a.out is used as a default.
-Ovalue
Optimize output file size. value may be:
0 Disable string merging.
1 Enable string merging.
2 Enable string tail merging.
-O1 is the default.
--oformat=format
Specify the format for the output object file. The only sup-
ported format is binary, which produces output with no ELF
header.
--omagic, -N
Set the text and data sections to be readable and writable, do
not page align sections, link against static libraries.
--opt-remarks-filename file
Write optimization remarks in YAML format to file.
--opt-remarks-passes pass-regex
Filter optimization remarks by only allowing the passes matching
pass-regex.
--opt-remarks-with-hotness
Include hotness information in the optimization remarks file.
--orphan-handling=mode
Control how orphan sections are handled. An orphan section is
one not specifically mentioned in a linker script. mode may be:
place
Place orphan sections in suitable output sections.
warn
Place orphan sections as for place and also report a warn-
ing.
error
Place orphan sections as for place and also report an error.
place is the default.
--pack-dyn-relocs=format
Pack dynamic relocations in the given format. format may be:
none
Do not pack. Dynamic relocations are encoded in SHT_REL(A).
android
Pack dynamic relocations in SHT_ANDROID_REL(A).
relr
Pack relative relocations in SHT_RELR, and the rest of dy-
namic relocations in SHT_REL(A).
android+relr
Pack relative relocations in SHT_RELR, and the rest of dy-
namic relocations in SHT_ANDROID_REL(A).
none is the default. If --use-android-relr-tags is specified,
use SHT_ANDROID_RELR instead of SHT_RELR.
--pic-veneer
Always generate position independent thunks.
--pie, --pic-executable
Create a position independent executable.
--power10-stubs=mode
Whether to use Power10 instructions in call stubs for
R_PPC64_REL24_NOTOC and TOC/NOTOC interworking. mode may be:
yes
(default) Use.
auto
Currently the same as yes.
no Don't use.
--print-gc-sections
List removed unused sections.
--print-icf-sections
List identical folded sections.
--print-map
Print a link map to the standard output.
--print-archive-stats=file
Write archive usage statistics to the specified file. Print the
numbers of members and fetched members for each archive.
--push-state
Save the current state of --as-needed, --static, and
--whole-archive.
--pop-state
Restore the states saved by --push-state.
---relax-gp
Enable global pointer relaxation for RISC-V.
--relocatable, -r
Create relocatable object file.
--remap-inputs=from-glob=to-file
Input files matching from-glob are mapped to to-file. Use
/dev/null to ignore an input file.
--remap-inputs-file=file
Remap input files based on patterns in file. Each line in the
remap file is of the format from-glob=to-file or a comment
starting with #.
--reproduce=path
Write a tar file to path, containing all the input files needed
to reproduce the link, a text file called response.txt contain-
ing the command line options and a text file called version.txt
containing the output of ld.lld --version. The archive when un-
packed can be used to re-run the linker with the same options
and input files.
--retain-symbols-file=file
Retain only the symbols listed in the file.
--rpath=value, -R value
Add a DT_RUNPATH to the output.
--rsp-quoting=value
Quoting style for response files. The supported values are
windows and posix.
--script=file, -T file
Read linker script from file. If multiple linker scripts are
given, they are processed as if they were concatenated in the
order they appeared on the command line.
--section-start=section=address
Set address of section.
--shared, --Bsharable
Build a shared object.
--shuffle-sections=seed
Shuffle matched sections using the given seed before mapping
them to the output sections. If -1, reverse the section order.
If 0, use a random seed.
--soname=value, -h value
Set DT_SONAME to value.
--sort-common
This option is ignored for GNU compatibility.
--sort-section=value
Specifies sections sorting rule when linkerscript is used.
--start-lib
Start a grouping of objects that should be treated as if they
were together in an archive.
--strip-all, -s
Strip all symbols. Implies --strip-debug.
--strip-debug, -S
Strip debugging information.
--symbol-ordering-file=file
Lay out sections in the order specified by file.
--sysroot=value
Set the system root.
--target1-abs
Interpret R_ARM_TARGET1 as R_ARM_ABS32.
--target1-rel
Interpret R_ARM_TARGET1 as R_ARM_REL32.
--target2=type
Interpret R_ARM_TARGET2 as type, where type is one of rel, abs,
or got-rel.
--Tbss=value
Same as --section-start with .bss as the sectionname.
--Tdata=value
Same as --section-start with .data as the sectionname.
--Ttext=value
Same as --section-start with .text as the sectionname.
--thinlto-cache-dir=value
Path to ThinLTO cached object file directory.
--thinlto-cache-policy=value
Pruning policy for the ThinLTO cache.
--thinlto-jobs=value
Number of ThinLTO jobs.
--threads=N
Number of threads. all (default) means all of concurrent
threads supported. 1 disables multi-threading.
--fat-lto-objects
Use the .llvm.lto section, which contains LLVM bitcode, in fat
LTO object files to perform LTO.
--no-fat-lto-objects
Ignore the .llvm.lto section in relocatable object files (de-
fault).
--time-trace
Record time trace.
--time-trace-file=file
Write time trace output to file.
--time-trace-granularity=value
Minimum time granularity (in microseconds) traced by time pro-
filer.
--trace
Print the names of the input files.
--trace-symbol=symbol, -y symbol
Trace references to symbol.
--undefined=symbol, -u symbol
If symbol is not defined after symbol resolution, and there's a
static library that contains an object file defining the symbol,
load the member to include the object file in the output file.
--undefined-glob=pattern
Synonym for --undefined, except that it takes a glob pattern.
In a glob pattern, * matches zero or more characters, ? matches
any single character, and [...] matches the characters within
brackets. All symbols that match a given pattern are handled as
if they were given as arguments of --undefined.
--unique
Creates a separate output section for every orphan input sec-
tion.
--unresolved-symbols=value
Determine how to handle unresolved symbols.
--use-android-relr-tags
Use SHT_ANDROID_RELR / DT_ANDROID_RELR* tags instead of SHT_RELR
/ DT_RELR*.
-v, -V Display the version number and proceed with linking if object
files are specified.
--version
Display the version number and exit.
--verbose
Verbose mode.
--version-script=file
Read version script from file.
--warn-backrefs
Warn about reverse or cyclic dependencies to or between static
archives. This can be used to ensure linker invocation remains
compatible with traditional Unix-like linkers.
--warn-backrefs-exclude=glob
Glob describing an archive (or an object file within --start-
lib) which should be ignored for --warn-backrefs
--warn-common
Warn about duplicate common symbols.
--warn-ifunc-textrel
Warn about using ifunc symbols in conjunction with text reloca-
tions. Older versions of glibc library (2.28 and earlier) has a
bug that causes the segment that includes ifunc symbols to be
marked as not executable when they are relocated. As a result,
although the program compiles and links successfully, it gives
segmentation fault when the instruction pointer reaches an ifunc
symbol. Use -warn-ifunc-textrel to let lld give a warning, if
the code may include ifunc symbols, may do text relocations and
be linked with an older glibc version. Otherwise, there is no
need to use it, as the default value does not give a warning.
This flag has been introduced in late 2018, has no counter part
in ld and gold linkers, and may be removed in the future.
--warn-unresolved-symbols
Report unresolved symbols as warnings.
--whole-archive
Force load of all members in a static library.
--why-extract=file
Print to a file about why archive members are extracted.
--wrap=symbol
Redirect symbol references to __wrap_symbol and __real_symbol
references to symbol.
-z option
Linker option extensions.
dead-reloc-in-nonalloc=section_glob=value
Resolve a relocation in a matched non-SHF_ALLOC section
referencing a discarded symbol to value Accepts globs,
in the event of a section matching more than one option,
the last option takes precedence. An order of least spe-
cific to most specific match is recommended.
execstack
Make the main stack executable. Stack permissions are
recorded in the PT_GNU_STACK segment.
bti-report=[none|warning|error]
Specify how to report the missing GNU_PROP-
ERTY_AARCH64_FEATURE_1_BTI property. none is the de-
fault, linker will not report the missing property oth-
erwise will be reported as a warning or an error.
cet-report=[none|warning|error]
Specify how to report the missing GNU_PROPERTY_X86_FEA-
TURE_1_IBT or GNU_PROPERTY_X86_FEATURE_1_SHSTK proper-
ties. none is the default, linker will not report the
missing property otherwise will be reported as a warning
or an error.
pauth-report=[none|warning|error]
Specify how to report the missing GNU_PROP-
ERTY_AARCH64_FEATURE_PAUTH property. none is the de-
fault, linker will not report the missing property oth-
erwise will be reported as a warning or an error.
force-bti
Force enable AArch64 BTI instruction in PLT, warn if In-
put ELF file does not have GNU_PROPERTY_AARCH64_FEA-
TURE_1_BTI property.
force-ibt
Force enable Intel Indirect Branch Tracking in PLT, warn
if an input ELF file does not have GNU_PROPERTY_X86_FEA-
TURE_1_IBT property.
global Sets the DF_1_GLOBAL flag in the DYNAMIC section. Dif-
ferent loaders can decide how to handle this flag on
their own.
ifunc-noplt
Do not emit PLT entries for ifunc symbols. Instead,
emit text relocations referencing the resolver. This is
an experimental optimization and only suitable for
standalone environments where text relocations do not
have the usual drawbacks. This option must be combined
with the -z notext option.
initfirst
Sets the DF_1_INITFIRST flag to indicate the module
should be initialized first.
interpose
Set the DF_1_INTERPOSE flag to indicate to the runtime
linker that the object is an interposer. During symbol
resolution interposers are searched after the applica-
tion but before other dependencies.
lrodata-after-bss
Place .lrodata after .bss.
muldefs
Do not error if a symbol is defined multiple times. The
first definition will be used. This is a synonym for
--allow-multiple-definition.
nocombreloc
Disable combining and sorting multiple relocation sec-
tions.
nocopyreloc
Disable the creation of copy relocations.
nodefaultlib
Set the DF_1_NODEFLIB flag to indicate that default li-
brary search paths should be ignored.
nodelete
Set the DF_1_NODELETE flag to indicate that the object
cannot be unloaded from a process.
nodlopen
Set the DF_1_NOOPEN flag to indicate that the object may
not be opened by dlopen(3).
nognustack
Do not emit the PT_GNU_STACK segment.
norelro
Do not indicate that portions of the object should be
mapped read-only after initial relocation processing.
The object will omit the PT_GNU_RELRO segment.
notext Allow relocations against read-only segments. Sets the
DT_TEXTREL flag in the DYNAMIC section.
now Set the DF_BIND_NOW flag to indicate that the run-time
loader should perform all relocation processing as part
of object initialization. By default relocations may be
performed on demand.
origin Set the DF_ORIGIN flag to indicate that the object re-
quires $ORIGIN processing.
pac-plt
AArch64 only, use pointer authentication in PLT.
pack-relative-relocs
Similar to -pack-dyn-relocs=relr , but synthesizes the
GLIBC_ABI_DT_RELR version dependency if there is a
GLIBC_2.* version dependency. glibc ld.so rejects load-
ing a dynamically linked object without the
GLIBC_ABI_DT_RELR version dependency.
rel Use REL format for dynamic relocations.
rela Use RELA format for dynamic relocations.
retpolineplt
Emit retpoline format PLT entries as a mitigation for
CVE-2017-5715.
rodynamic
Make the .dynamic section read-only. The DT_DEBUG tag
will not be emitted.
separate-loadable-segments
separate-code
noseparate-code
Specify whether two adjacent PT_LOAD segments are al-
lowed to overlap in pages. noseparate-code (default)
allows overlap. separate-code allows overlap between
two executable segments, or two non-executable segments.
separate-loadable-segments disallows overlap.
shstk x86 only, use shadow stack.
stack-size=size
Set the main thread's stack size to size. The stack
size is recorded as the size of the size. PT_GNU_STACK
program segment.
start-stop-gc
Don't let __start_/__stop_ references retain the associ-
ated C identifier name sections (default).
nostart-stop-gc
Let __start_/__stop_ references retain the associated C
identifier name sections.
text Do not allow relocations against read-only segments.
This is the default.
wxneeded
Create a PT_OPENBSD_WXNEEDED segment.
ENVIRONMENT VARIABLES
LLD_REPRODUCE
Create a reproduce tarball with the specified filename. If
--reproduce is specified, --reproduce takes precedence.
LLD_VERSION
ld.lld creates a section named .comment containing the LLD
version string. The version string can be overridden by this
environment variable, which is useful to eliminate differences
in the binary caused by LLD version number differences.
IMPLEMENTATION NOTES
ld.lld's handing of archive files (those with a .a file extension) is
different from traditional linkers used on Unix-like systems.
Traditional linkers maintain a set of undefined symbols during linking.
The linker processes each file in the order in which it appears on the
command line, until the set of undefined symbols becomes empty. An ob-
ject file is linked into the output object when it is encountered, with
its undefined symbols added to the set. Upon encountering an archive
file a traditional linker searches the objects contained therein, and
processes those that satisfy symbols in the unresolved set.
Handling mutually dependent archives may be awkward when using a tradi-
tional linker. Archive files may have to be specified multiple times,
or the special command line options --start-group and --end-group may be
used to have the linker loop over the files in the group until no new
symbols are added to the set.
ld.lld records all symbols found in objects and archives as it iterates
over command line arguments. When ld.lld encounters an undefined symbol
that can be resolved by an object file contained in a previously
processed archive file, it immediately extracts and links it into the
output object.
With certain archive inputs ld.lld may produce different results com-
pared to traditional linkers. In practice, large bodies of third party
software have been linked with ld.lld without material issues.
The --warn-backrefs option may be used to identify a linker invocation
that may be incompatible with traditional Unix-like linker behavior.
Debian Jul 25, 2023 LD.LLD(1)
lld-link
wasm-ld
root@kali:~# wasm-ld --help
OVERVIEW: LLVM Linker
USAGE: wasm-ld [options] file...
OPTIONS:
--allow-undefined-file=<value>
Allow symbols listed in <file> to be undefined in linked binary
--allow-undefined Allow undefined symbols in linked binary. This options is equivalent to --import-undefined and --unresolved-symbols=ignore-all
--Bdynamic Link against shared libraries
--Bstatic Do not link against shared libraries (default)
--Bsymbolic Bind defined symbols locally
--build-id=[fast,sha1,uuid,0x<hexstring>]
Generate build ID note
--build-id Alias for --build-id=fast
--call_shared Alias for --Bdynamic
--check-features Check feature compatibility of linked objects (default)
--color-diagnostics=[auto,always,never]
Use colors in diagnostics (default: auto)
--color-diagnostics Alias for --color-diagnostics=always
--compress-relocations Compress the relocation targets in the code section.
--demangle Demangle symbol names (default)
--dn Alias for --Bstatic
--dy Alias for --Bdynamic
--emit-relocs Generate relocations in output
--end-lib End a grouping of objects that should be treated as if they were together in an archive
--entry <entry> Name of entry point symbol
--error-limit=<value> Maximum number of errors to emit before stopping (0 = no limit)
--error-unresolved-symbols
Report unresolved symbols as errors
--experimental-pic Enable Experimental PIC
--export-all Export all symbols (normally combined with --no-gc-sections)
--export-dynamic Put symbols in the dynamic symbol table
--export-if-defined=<value>
Force a symbol to be exported, if it is defined in the input
--export-memory=<value> Export the module's memory with the passed name
--export-memory Export the module's memory with the default name of "memory"
--export-table Export function table to the environment
--export=<value> Force a symbol to be exported
--extra-features=<value>
Comma-separated list of features to add to the default set of features inferred from input objects.
-E Alias for --export-dynamic
--fatal-warnings Treat warnings as errors
--features=<value> Comma-separated used features, inferred from input objects by default.
--gc-sections Enable garbage collection of unused sections (defualt)
--global-base=<value> Memory offset at which to place global data (Defaults to 1024)
--growable-table Remove maximum size from function table, allowing table to grow
--help Print option help
--import-memory=<module>,<name>
Import the module's memory from the passed module with the passed name.
--import-memory Import the module's memory from the default module of "env" with the name "memory".
--import-table Import function table from the environment
--import-undefined Turn undefined symbols into imports where possible
--initial-heap=<value> Initial size of the heap
--initial-memory=<value>
Initial size of the linear memory
--keep-section=<value> Preserve a section even when --strip-all is given. This is useful for compiler drivers such as clang or emcc that, for example, depend on the features section for post-link processing. Can be specified multiple times to keep multiple sections
--lto-CGO<cgopt-level> Codegen optimization level for LTO
--lto-debug-pass-manager
Debug new pass manager
--lto-O<opt-level> Optimization level for LTO
--lto-partitions=<value>
Number of LTO codegen partitions
-L <dir> Add a directory to the library search path
-l <libName> Root name of library to use
--Map=<value> Print a link map to the specified file
--max-memory=<value> Maximum size of the linear memory
--merge-data-segments Enable merging data segments (default)
--mllvm=<value> Additional arguments to forward to LLVM's option processing
-M Alias for --print-map
-m <value> Set target emulation
--no-check-features Ignore feature compatibility of linked objects
--no-color-diagnostics Alias for --color-diagnostics=never
--no-demangle Do not demangle symbol names
--no-entry Do not output any entry point
--no-export-dynamic Do not put symbols in the dynamic symbol table (default)
--no-fatal-warnings Do not treat warnings as errors (default)
--no-gc-sections Disable garbage collection of unused sections
--no-growable-memory Set maximum size of the linear memory to its initial size
--no-merge-data-segments
Disable merging data segments
--no-pie Do not create a position independent executable (default)
--no-print-gc-sections Do not list removed unused sections (default)
--no-shlib-sigcheck Do not check signatures of functions defined in shared libraries.
--no-whole-archive Do not force load of all members in a static library (default)
--non_shared Alias for --Bstatic
-O <value> Optimize output file size
-o <path> Path to file to write output
--pie Create a position independent executable
--print-gc-sections List removed unused sections
--print-map Print a link map to the standard output
--relocatable Create relocatable object file
--reproduce=<value> Dump linker invocation and input files for debugging
--rsp-quoting=[posix,windows]
Quoting style for response files
--save-temps Save intermediate LTO compilation results
--shared-memory Use shared linear memory
--shared Build a shared object
--soname=<value> Set the module name in the generated name section
--stack-first Place stack at start of linear memory rather than after data
--start-lib Start a grouping of objects that should be treated as if they were together in an archive
--static Alias for --Bstatic
--strip-all Strip all symbols
--strip-debug Strip debugging information
-S Alias for --strip-debug
-s Alias for --strip-all
--table-base=<value> Table offset at which to place address taken functions (Defaults to 1)
--thinlto-cache-dir=<value>
Path to ThinLTO cached object file directory
--thinlto-cache-policy=<value>
Pruning policy for the ThinLTO cache
--thinlto-jobs=<value> Number of ThinLTO jobs. Default to --threads=
--threads=<value> Number of threads. '1' disables multi-threading. By default all available hardware threads are used
--trace-symbol=<value> Trace references to symbols
--trace Print the names of the input files
-t Alias for --trace
--undefined=<value> Force undefined symbol during linking
--unresolved-symbols=<value>
Determine how to handle unresolved symbols
--verbose Verbose mode
--version Display the version number and exit
-v Display the version number
--warn-unresolved-symbols
Report unresolved symbols as warnings
--whole-archive Force load of all members in a static library
--why-extract=<value> Print to a file about why archive members are extracted
--wrap=<symbol>=<symbol>
Use wrapper functions for symbol
-y <value> Alias for --trace-symbol
-z <option> Linker option extensions
lldb
LLDB is a next generation, high-performance debugger. It is built as a set of reusable components which highly leverage existing libraries in the larger LLVM Project, such as the Clang expression parser and LLVM disassembler.
This is a dependency package providing the default version of lldb.
Installed size: 21 KB
How to install: sudo apt install lldb
Dependencies:
- lldb-19
lldb
Manual page for lldb 19
root@kali:~# lldb -h
OVERVIEW: LLDB
USAGE: lldb [options]
ATTACHING:
--attach-name <name> Tells the debugger to attach to a process with the given name.
--attach-pid <pid> Tells the debugger to attach to a process with the given pid.
-n <value> Alias for --attach-name
-p <value> Alias for --attach-pid
--wait-for Tells the debugger to wait for a process with the given pid or name to launch before attaching.
-w Alias for --wait-for
COMMANDS:
--batch Tells the debugger to run the commands from -s, -S, -o & -O, and then quit.
-b Alias for --batch
-K <value> Alias for --source-on-crash
-k <value> Alias for --one-line-on-crash
--local-lldbinit Allow the debugger to parse the .lldbinit files in the current working directory, unless --no-lldbinit is passed.
--no-lldbinit Do not automatically parse any '.lldbinit' files.
--one-line-before-file <command>
Tells the debugger to execute this one-line lldb command before any file provided on the command line has been loaded.
--one-line-on-crash <command>
When in batch mode, tells the debugger to run this one-line lldb command if the target crashes.
--one-line <command> Tells the debugger to execute this one-line lldb command after any file provided on the command line has been loaded.
-O <value> Alias for --one-line-before-file
-o <value> Alias for --one-line
-Q Alias for --source-quietly
--source-before-file <file>
Tells the debugger to read in and execute the lldb commands in the given file, before any file has been loaded.
--source-on-crash <file>
When in batch mode, tells the debugger to source this file of lldb commands if the target crashes.
--source-quietly Tells the debugger not to echo commands while sourcing files or one-line commands provided on the command line.
--source <file> Tells the debugger to read in and execute the lldb commands in the given file, after any file has been loaded.
-S <value> Alias for --source-before-file
-s <value> Alias for --source
-x Alias for --no-lldbinit
OPTIONS:
--arch <architecture> Tells the debugger to use the specified architecture when starting and running the program.
-a <value> Alias for --arch
--core <filename> Tells the debugger to use the full path to <filename> as the core file.
-c <value> Alias for --core
--debug Tells the debugger to print out extra information for debugging itself.
-d Alias for --debug
--editor Tells the debugger to open source files using the host's "external editor" mechanism.
-e Alias for --editor
--file <filename> Tells the debugger to use the file <filename> as the program to be debugged.
-f <value> Alias for --file
--help Prints out the usage information for the LLDB debugger.
-h Alias for --help
--no-use-colors Do not use colors.
--version Prints out the current version number of the LLDB debugger.
-v Alias for --version
-X Alias for --no-use-color
REPL:
-r=<flags> Alias for --repl=<flags>
--repl-language <language>
Chooses the language for the REPL.
--repl=<flags> Runs lldb in REPL mode with a stub process with the given flags.
--repl Runs lldb in REPL mode with a stub process.
-R <value> Alias for --repl-language
-r Alias for --repl
SCRIPTING:
-l <value> Alias for --script-language
--print-script-interpreter-info
Prints out a json dictionary with information about the scripting language interpreter.
--python-path Prints out the path to the lldb.py file for this version of lldb.
-P Alias for --python-path
--script-language <language>
Tells the debugger to use the specified scripting language for user-defined scripts.
EXAMPLES:
The debugger can be started in several modes.
Passing an executable as a positional argument prepares lldb to debug the
given executable. To disambiguate between arguments passed to lldb and
arguments passed to the debugged executable, arguments starting with a - must
be passed after --.
lldb --arch x86_64 /path/to/program program argument -- --arch armv7
For convenience, passing the executable after -- is also supported.
lldb --arch x86_64 -- /path/to/program program argument --arch armv7
Passing one of the attach options causes lldb to immediately attach to the
given process.
lldb -p <pid>
lldb -n <process-name>
Passing --repl starts lldb in REPL mode.
lldb -r
Passing --core causes lldb to debug the core file.
lldb -c /path/to/core
Command options can be combined with these modes and cause lldb to run the
specified commands before or after events, like loading the file or crashing,
in the order provided on the command line.
lldb -O 'settings set stop-disassembly-count 20' -o 'run' -o 'bt'
lldb -S /source/before/file -s /source/after/file
lldb -K /source/before/crash -k /source/after/crash
Note: In REPL mode no file is loaded, so commands specified to run after
loading the file (via -o or -s) will be ignored.
lldb-argdumper
root@kali:~# lldb-argdumper -h
{"arguments":["-h"]}
lldb-server
root@kali:~# lldb-server -h
Usage:
lldb-server v[ersion]
lldb-server g[dbserver] [options]
lldb-server p[latform] [options]
Invoke subcommand for additional help
llvm
LLVM is a collection of libraries and tools that make it easy to build compilers, optimizers, just-in-time code generators, and many other compiler-related programs.
This is a dependency package providing the default llvm package.
Installed size: 110 KB
How to install: sudo apt install llvm
Dependencies:
- llvm-19
- llvm-runtime
bugpoint
Automatic test case reduction tool
root@kali:~# bugpoint -h
OVERVIEW: LLVM automatic testcase reducer. See
http://llvm.org/cmds/bugpoint.html for more information.
USAGE: bugpoint [options] --args <program arguments>... --tool-args <tool arguments>... --safe-tool-args <safe-tool arguments>... --gcc-tool-args <gcc-tool arguments>... --opt-args <opt arguments>... <input llvm ll/bc files>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
--Xlinker=<string> - Additional arguments to pass to the linker
--aarch64-neon-syntax=<value> - Choose style of NEON code to emit from AArch64 backend:
=generic - Emit generic NEON assembly
=apple - Emit Apple-style NEON assembly
--aarch64-use-aa - Enable the use of AA during codegen.
--abort-on-max-devirt-iterations-reached - Abort when the max iterations for devirtualization CGSCC repeat pass is reached
--abs-tolerance=<number> - Absolute error tolerated
--additional-so=<string> - Additional shared objects to load into executing programs
--allow-ginsert-as-artifact - Allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
--amdgpu-atomic-optimizer-strategy=<value> - Select DPP or Iterative strategy for scan
=DPP - Use DPP operations for scan
=Iterative - Use Iterative approach for scan
=None - Disable atomic optimizer
--amdgpu-bypass-slow-div - Skip 64-bit divide for dynamic 32-bit values
--amdgpu-disable-loop-alignment - Do not align and prefetch loops
--amdgpu-dpp-combine - Enable DPP combiner
--amdgpu-dump-hsa-metadata - Dump AMDGPU HSA Metadata
--amdgpu-enable-merge-m0 - Merge and hoist M0 initializations
--amdgpu-enable-power-sched - Enable scheduling to minimize mAI power bursts
--amdgpu-kernarg-preload-count=<uint> - How many kernel arguments to preload onto SGPRs
--amdgpu-promote-alloca-to-vector-limit=<uint> - Maximum byte size to consider promote alloca to vector
--amdgpu-sdwa-peephole - Enable SDWA peepholer
--amdgpu-use-aa-in-codegen - Enable the use of AA during codegen.
--amdgpu-verify-hsa-metadata - Verify AMDGPU HSA Metadata
--amdgpu-vgpr-index-mode - Use GPR indexing mode instead of movrel for vector indexing
--append-exit-code - Append the exit code to the output so it gets diff'd too
--args <string>... - <program arguments>...
--arm-add-build-attributes -
--arm-implicit-it=<value> - Allow conditional instructions outdside of an IT block
=always - Accept in both ISAs, emit implicit ITs in Thumb
=never - Warn in ARM, reject in Thumb
=arm - Accept in ARM, reject in Thumb
=thumb - Warn in ARM, emit implicit ITs in Thumb
--asm-show-inst - Emit internal instruction representation to assembly file
--atomic-counter-update-promoted - Do counter update using atomic fetch add for promoted counters only
--atomic-first-counter - Use atomic fetch add for first counter in a function (usually the entry counter)
--bounds-checking-single-trap - Use one trap block per function
--bounds-checking-unique-traps - Always use one trap per check
--bpf-stack-size=<int> - Specify the BPF stack size limit
--cfg-hide-cold-paths=<number> - Hide blocks with relative frequency below the given value
--cfg-hide-deoptimize-paths -
--cfg-hide-unreachable-paths -
--check-functions-filter=<regex> - Only emit checks for arguments of functions whose names match the given regular expression
--compile-command=<string> - Command to compile the bitcode (use with -compile-custom) (default: llc)
--cost-kind=<value> - Target cost kind
=throughput - Reciprocal throughput
=latency - Instruction latency
=code-size - Code size
=size-latency - Code size and latency
--crel - Use CREL relocation format for ELF
--cs-profile-generate - Perform context sensitive PGO instrumentation
--cs-profile-path=<string> - Context sensitive profile file path
--debug-info-correlate - Use debug info to correlate profiles. (Deprecated, use -profile-correlate=debug-info)
--debugify-func-limit=<ulong> - Set max number of processed functions per pass.
--debugify-level=<value> - Kind of debug info to add
=locations - Locations only
=location+variables - Locations and Variables
--debugify-quiet - Suppress verbose debugify output
--disable-attribute-remove - Do not remove function attributes
--disable-auto-upgrade-debug-info - Disable autoupgrade of debug info
--disable-block-extraction - Don't extract blocks when searching for miscompilations
--disable-dce - Do not use the -dce pass to reduce testcases
--disable-global-remove - Do not remove global variables
--disable-i2p-p2i-opt - Disables inttoptr/ptrtoint roundtrip optimization
--disable-loop-extraction - Don't extract loops when searching for miscompilations
--disable-namedmd-remove - Do not remove global named metadata
--disable-pass-list-reduction - Skip pass list reduction steps
--disable-promote-alloca-to-lds - Disable promote alloca to LDS
--disable-promote-alloca-to-vector - Disable promote alloca to vector
--disable-simplifycfg - Do not use the -simplifycfg pass to reduce testcases
--disable-strip-debug-types - Do not strip debug type info metadata
--disable-strip-debuginfo - Do not strip debug info metadata
--do-counter-promotion - Do counter register promotion
--dot-cfg-mssa=<file name for generated dot file> - file name for generated dot file
--dwarf-version=<int> - Dwarf version
--dwarf64 - Generate debugging info in the 64-bit DWARF format
--emit-compact-unwind-non-canonical - Whether to try to emit Compact Unwind for non canonical entries.
--emit-dwarf-unwind=<value> - Whether to emit DWARF EH frame entries.
=always - Always emit EH frame entries
=no-compact-unwind - Only emit EH frame entries when compact unwind is not available
=default - Use target platform default
--emscripten-cxx-exceptions-allowed=<string> - The list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
--enable-cse-in-irtranslator - Should enable CSE in irtranslator
--enable-cse-in-legalizer - Should enable CSE in Legalizer
--enable-emscripten-cxx-exceptions - WebAssembly Emscripten-style exception handling
--enable-emscripten-sjlj - WebAssembly Emscripten-style setjmp/longjmp handling
--enable-gvn-hoist - Enable the GVN hoisting pass (default = off)
--enable-gvn-memdep -
--enable-gvn-sink - Enable the GVN sinking pass (default = off)
--enable-jump-table-to-switch - Enable JumpTableToSwitch pass (default = off)
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loop-simplifycfg-term-folding -
--enable-name-compression - Enable name/filename string compression
--enable-pgo-force-function-attrs - Enable pass to set function attributes based on PGO profiles
--enable-split-backedge-in-load-pre -
--enable-split-loopiv-heuristic - Enable loop iv regalloc heuristic
--enable-valgrind - Run optimizations through valgrind
--enable-vtable-profile-use - If ThinLTO and WPD is enabled and this option is true, vtable profiles will be used by ICP pass for more efficient indirect call sequence. If false, type profiles won't be used.
--enable-vtable-value-profiling - If true, the virtual table address will be instrumented to know the types of a C++ pointer. The information is used in indirect call promotion to do selective vtable-based comparison.
--exec-command=<string> - Command to execute the bitcode (use with -run-custom) (default: simulate)
--expand-variadics-override=<value> - Override the behaviour of expand-variadics
=unspecified - Use the implementation defaults
=disable - Disable the pass entirely
=optimize - Optimise without changing ABI
=lowering - Change variadic calling convention
--experimental-debug-variable-locations - Use experimental new value-tracking variable locations
--experimental-debuginfo-iterators - Enable communicating debuginfo positions through iterators, eliminating intrinsics. Has no effect if --preserve-input-debuginfo-format=true.
--fatal-warnings - Treat warnings as errors
--fdpic - Use the FDPIC ABI
--find-bugs - Run many different optimization sequences on program to find bugs
--force-tail-folding-style=<value> - Force the tail folding style
=none - Disable tail folding
=data - Create lane mask for data only, using active.lane.mask intrinsic
=data-without-lane-mask - Create lane mask with compare/stepvector
=data-and-control - Create lane mask using active.lane.mask intrinsic, and use it for both data and control flow
=data-and-control-without-rt-check - Similar to data-and-control, but remove the runtime check
=data-with-evl - Use predicated EVL instructions for tail folding. If EVL is unsupported, fallback to data-without-lane-mask.
--fs-profile-debug-bw-threshold=<uint> - Only show debug message if the source branch weight is greater than this value.
--fs-profile-debug-prob-diff-threshold=<uint> - Only show debug message if the branch probility is greater than this value (in percentage).
--gcc=<string> - The gcc binary to use.
--gcc-tool-args <string>... - <gcc-tool arguments>...
--generate-merged-base-profiles - When generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
--gpsize=<uint> - Global Pointer Addressing Size. The default size is 8.
--hash-based-counter-split - Rename counter variable of a comdat function based on cfg hash
--hexagon-add-build-attributes -
--hexagon-rdf-limit=<uint> -
--hot-cold-split - Enable hot-cold splitting pass
--hwasan-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--hwasan-random-rate=<number> - Probability value in the range [0.0, 1.0] to keep instrumentation of a function.
--import-all-index - Import all external functions in index.
--incremental-linker-compatible - When used with filetype=obj, emit an object file which can be used with an incremental linker
--input=<string> - Filename to pipe in as stdin (default: /dev/null)
--instcombine-code-sinking - Enable code sinking
--instcombine-guard-widening-window=<uint> - How wide an instruction window to bypass looking for another guard
--instcombine-max-num-phis=<uint> - Maximum number phis to handle in intptr/ptrint folding
--instcombine-max-sink-users=<uint> - Maximum number of undroppable users for instruction sinking
--instcombine-maxarray-size=<uint> - Maximum array size considered when doing a combine
--instcombine-negator-enabled - Should we attempt to sink negations?
--instcombine-negator-max-depth=<uint> - What is the maximal lookup depth when trying to check for viability of negation sinking.
--instrprof-atomic-counter-update-all - Make all profile counter updates atomic (for testing only)
--internalize-public-api-file=<filename> - A file containing list of symbol names to preserve
--internalize-public-api-list=<list> - A list of symbol names to preserve
--iterative-counter-promotion - Allow counter promotion across the whole loop nest.
--keep-main - Force function reduction to keep main
--lint-abort-on-error - In the Lint pass, abort on errors.
--load=<pluginfilename> - Load the specified plugin
--lower-allow-check-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--lower-allow-check-random-rate=<number> - Probability value in the range [0.0, 1.0] of unconditional pseudo-random checks.
--lto-aix-system-assembler=<path> - Path to a system assembler, picked up on AIX only
--lto-embed-bitcode=<value> - Embed LLVM bitcode in object files produced by LTO
=none - Do not embed
=optimized - Embed after all optimization passes
=post-merge-pre-opt - Embed post merge, but before optimizations
--lto-pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--lto-pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--lto-pass-remarks-output=<filename> - Output filename for pass remarks
--matrix-default-layout=<value> - Sets the default matrix layout
=column-major - Use column-major layout
=row-major - Use row-major layout
--matrix-print-after-transpose-opt -
--max-counter-promotions=<int> - Max number of allowed counter promotions
--max-counter-promotions-per-loop=<uint> - Max number counter promotions per loop to avoid increasing register pressure too much
--mc-relax-all - When used with filetype=obj, relax all fixups in the emitted object file
--mcabac - tbd
--merror-missing-parenthesis - Error for missing parenthesis around predicate registers
--merror-noncontigious-register - Error for register names that aren't contigious
--mhvx - Enable Hexagon Vector eXtensions
--mhvx=<value> - Enable Hexagon Vector eXtensions
=v60 - Build for HVX v60
=v62 - Build for HVX v62
=v65 - Build for HVX v65
=v66 - Build for HVX v66
=v67 - Build for HVX v67
=v68 - Build for HVX v68
=v69 - Build for HVX v69
=v71 - Build for HVX v71
=v73 - Build for HVX v73
--mips-compact-branches=<value> - MIPS Specific: Compact branch policy.
=never - Do not use compact branches if possible.
=optimal - Use compact branches where appropriate (default).
=always - Always use compact branches if possible.
--mips16-constant-islands - Enable mips16 constant islands.
--mips16-hard-float - Enable mips16 hard float.
--mir-strip-debugify-only - Should mir-strip-debug only strip debug info from debugified modules by default
--misexpect-tolerance=<uint> - Prevents emitting diagnostics when profile counts are within N% of the threshold..
--mlimit=<MBytes> - Maximum amount of memory to use. 0 disables check. Defaults to 400MB (800MB under valgrind, 0 with sanitizers).
--mno-compound - Disable looking for compound instructions for Hexagon
--mno-fixup - Disable fixing up resolved relocations for Hexagon
--mno-ldc1-sdc1 - Expand double precision loads and stores to their single precision counterparts
--mno-pairing - Disable looking for duplex instructions for Hexagon
--mtriple=<string> - Override target triple for module
--mwarn-missing-parenthesis - Warn for missing parenthesis around predicate registers
--mwarn-noncontigious-register - Warn for register names that arent contigious
--mwarn-sign-mismatch - Warn for mismatching a signed and unsigned value
--no-deprecated-warn - Suppress all deprecated warnings
--no-discriminators - Disable generation of discriminator information.
--no-type-check - Suppress type errors (Wasm)
--no-warn - Suppress all warnings
--nvptx-sched4reg - NVPTX Specific: schedule for register pressue
--object-size-offset-visitor-max-visit-instructions=<uint> - Maximum number of instructions for ObjectSizeOffsetVisitor to look at
--opt-args <string>... - <opt arguments>...
--opt-command=<string> - Path to opt. (default: search path for 'opt'.)
--output=<string> - Specify a reference program output (for miscompilation detection)
--output-prefix=<string> - Prefix to use for outputs (default: 'bugpoint')
--pgo-block-coverage - Use this option to enable basic block coverage instrumentation
--pgo-temporal-instrumentation - Use this option to enable temporal instrumentation
--pgo-view-block-coverage-graph - Create a dot file of CFGs with block coverage inference information
--poison-checking-function-local - Check that returns are non-poison (for testing)
Passes available:
--aa - Function Alias Analysis Results
--always-inline - Inliner for always_inline functions
--assumption-cache-tracker - Assumption Cache Tracker
--barrier - A No-Op Barrier Pass
--basic-aa - Basic Alias Analysis (stateless AA impl)
--basiccg - CallGraph Construction
--block-freq - Block Frequency Analysis
--branch-prob - Branch Probability Analysis
--break-crit-edges - Break critical edges in CFG
--canon-freeze - Canonicalize Freeze Instructions in Loops
--check-debugify - Check debug info from -debugify
--check-debugify-function - Check debug info from -debugify-function
--consthoist - Constant Hoisting
--cycles - Cycle Info Analysis
--da - Dependence Analysis
--dce - Dead Code Elimination
--deadargelim - Dead Argument Elimination
--deadarghaX0r - Dead Argument Hacking (BUGPOINT USE ONLY; DO NOT USE)
--debugify - Attach debug info to everything
--debugify-function - Attach debug info to a function
--domfrontier - Dominance Frontier Construction
--domtree - Dominator Tree Construction
--dot-callgraph - Print call graph to 'dot' file
--dot-dom - Print dominance tree of function to 'dot' file
--dot-dom-only - Print dominance tree of function to 'dot' file (with no function bodies)
--dot-postdom - Print postdominance tree of function to 'dot' file
--dot-postdom-only - Print postdominance tree of function to 'dot' file (with no function bodies)
--dot-regions - Print regions of function to 'dot' file
--dot-regions-only - Print regions of function to 'dot' file (with no function bodies)
--dot-scops - Polly - Print Scops of function
--dot-scops-only - Polly - Print Scops of function (with no function bodies)
--early-cse - Early CSE
--early-cse-memssa - Early CSE w/ MemorySSA
--external-aa - External Alias Analysis
--fix-irreducible - Convert irreducible control-flow into natural loops
--flattencfg - Flatten the CFG
--globals-aa - Globals Alias Analysis
--gvn - Global Value Numbering
--infer-address-spaces - Infer address spaces
--instcombine - Combine redundant instructions
--instsimplify - Remove redundant instructions
--ir-similarity-identifier - ir-similarity-identifier
--iv-users - Induction Variable Users
--lazy-block-freq - Lazy Block Frequency Analysis
--lazy-branch-prob - Lazy Branch Probability Analysis
--lazy-value-info - Lazy Value Information Analysis
--lcssa - Loop-Closed SSA Form Pass
--lcssa-verification - LCSSA Verifier
--licm - Loop Invariant Code Motion
--load-store-vectorizer - Vectorize load and store instructions
--loop-data-prefetch - Loop Data Prefetch
--loop-extract - Extract loops into new functions
--loop-extract-single - Extract at most one loop into a new function
--loop-reduce - Loop Strength Reduction
--loop-simplify - Canonicalize natural loops
--loop-unroll - Unroll loops
--loops - Natural Loop Information
--lower-constant-intrinsics - Lower constant intrinsics
--lower-global-dtors - Lower @llvm.global_dtors via `__cxa_atexit`
--loweratomic - Lower atomic intrinsics to non-atomic form
--lowerinvoke - Lower invoke and unwind, for unwindless code generators
--lowerswitch - Lower SwitchInst's to branches
--mem2reg - Promote Memory to Register
--memdep - Memory Dependence Analysis
--memoryssa - Memory SSA
--mergeicmps - Merge contiguous icmps into a memcmp
--module-summary-analysis - Module Summary Analysis
--module-summary-info - Module summary info
--nary-reassociate - Nary reassociation
--opt-remark-emitter - Optimization Remark Emitter
--partially-inline-libcalls - Partially inline calls to library functions
--phi-values - Phi Values Analysis
--place-backedge-safepoints-impl - Place Backedge Safepoints
--polly-ast - Polly - Generate an AST from the SCoP (isl)
--polly-canonicalize - Polly - Run canonicalization passes
--polly-codegen - Polly - Create LLVM-IR from SCoPs
--polly-dce - Polly - Remove dead iterations
--polly-delicm - Polly - DeLICM/DePRE
--polly-dependences - Polly - Calculate dependences
--polly-detect - Polly - Detect static control parts (SCoPs)
--polly-dump-module - Polly - Dump Module
--polly-export-jscop - Polly - Export Scops as JSON (Writes a .jscop file for each Scop)
--polly-flatten-schedule - Polly - Flatten schedule
--polly-function-dependences - Polly - Calculate dependences for all the SCoPs of a function
--polly-function-scops - Polly - Create polyhedral description of all Scops of a function
--polly-import-jscop - Polly - Import Scops from JSON (Reads a .jscop file for each Scop)
--polly-mse - Polly - Maximal static expansion of SCoP
--polly-opt-isl - Polly - Optimize schedule of SCoP
--polly-optree - Polly - Forward operand tree
--polly-prepare - Polly - Prepare code for polly
--polly-print-ast - Polly - Print the AST from a SCoP (isl)
--polly-print-delicm - Polly - Print DeLICM/DePRE
--polly-print-dependences - Polly - Print dependences
--polly-print-detect - Polly - Print static control parts (SCoPs)
--polly-print-flatten-schedule - Polly - Print flattened schedule
--polly-print-function-dependences - Polly - Print dependences for all the SCoPs of a function
--polly-print-function-scops - Polly - Print polyhedral description of all Scops of a function
--polly-print-import-jscop - Polly - Print Scop import result
--polly-print-opt-isl - Polly - Print optimizer schedule of SCoP
--polly-print-optree - Polly - Print forward operand tree result
--polly-print-scops - Polly - Print polyhedral description of Scops
--polly-print-simplify - Polly - Print Simplify actions
--polly-prune-unprofitable - Polly - Prune unprofitable SCoPs
--polly-scop-inliner - inline functions based on how much of the function is a scop.
--polly-scops - Polly - Create polyhedral description of Scops
--polly-simplify - Polly - Simplify
--polyhedral-info - Polly - Interface to polyhedral analysis engine
--post-inline-ee-instrument - Instrument function entry/exit with calls to e.g. mcount() (post inlining)
--postdomtree - Post-Dominator Tree Construction
--print-function - Print function to stderr
--print-module - Print module to stderr
--print-polyhedral-info - Polly - Print interface to polyhedral analysis engine analysis
--profile-summary-info - Profile summary info
--reassociate - Reassociate expressions
--regions - Detect single entry single exit regions
--scalar-evolution - Scalar Evolution Analysis
--scalarize-masked-mem-intrin - Scalarize unsupported masked memory intrinsics
--scev-aa - ScalarEvolution-based Alias Analysis
--scoped-noalias-aa - Scoped NoAlias Alias Analysis
--separate-const-offset-from-gep - Split GEPs to a variadic base and a constant offset for better CSE
--simplifycfg - Simplify the CFG
--sink - Code sinking
--slsr - Straight line strength reduction
--speculative-execution - Speculatively execute instructions
--sroa - Scalar Replacement Of Aggregates
--stack-safety - Stack Safety Analysis
--stack-safety-local - Stack Safety Local Analysis
--structurizecfg - Structurize the CFG
--tailcallelim - Tail Call Elimination
--targetlibinfo - Target Library Information
--tbaa - Type-Based Alias Analysis
--tlshoist - TLS Variable Hoist
--tti - Target Transform Information
--uniformity - Uniformity Analysis
--unify-loop-exits - Fixup each natural loop to have a single exit block
--verify - Module Verifier
--verify-safepoint-ir - Safepoint IR Verifier
--view-callgraph - View call graph
--view-dom - View dominance tree of function
--view-dom-only - View dominance tree of function (with no function bodies)
--view-postdom - View postdominance tree of function
--view-postdom-only - View postdominance tree of function (with no function bodies)
--view-regions - View regions of function
--view-regions-only - View regions of function (with no function bodies)
--view-scops - Polly - View Scops of function
--view-scops-only - Polly - View Scops of function (with no function bodies)
--print-pipeline-passes - Print a '-passes' compatible string describing the pipeline (best-effort only).
--profile-correlate=<value> - Use debug info or binary file to correlate profiles.
=<empty> - No profile correlation
=debug-info - Use debug info to correlate
=binary - Use binary to correlate
--promote-alloca-vector-loop-user-weight=<uint> - The bonus weight of users of allocas within loop when sorting profitable allocas
--r600-ir-structurize - Use StructurizeCFG IR pass
--rel-tolerance=<number> - Relative error tolerated
--remote-client=<string> - Remote execution client (rsh/ssh)
--remote-extra-options=<string> - Remote execution (rsh/ssh) extra options
--remote-host=<string> - Remote execution (rsh/ssh) host
--remote-port=<string> - Remote execution (rsh/ssh) port
--remote-user=<string> - Remote execution (rsh/ssh) user id
--replace-funcs-with-null - When stubbing functions, replace all uses will null
--riscv-add-build-attributes -
--riscv-use-aa - Enable the use of AA during codegen.
Specify the "test" i.e. suspect back-end:
--auto - Use best guess
--run-int - Execute with the interpreter
--run-jit - Execute with JIT
--run-llc - Compile with LLC
--run-llc-ia - Compile with LLC with integrated assembler
--compile-custom - Use -compile-command to define a command to compile the bitcode. Useful to avoid linking.
--run-custom - Use -exec-command to define a command to execute the bitcode. Useful for cross-compilation.
--runtime-counter-relocation - Enable relocating counters at runtime.
Specify "safe" i.e. known-good backend:
--safe-auto - Use best guess
--safe-run-llc - Compile with LLC
--safe-run-custom - Use -exec-command to define a command to execute the bitcode. Useful for cross-compilation.
--safe-path=<string> - Specify the path to the "safe" backend program
--safe-tool-args <string>... - <safe-tool arguments>...
--safepoint-ir-verifier-print-only -
--sample-profile-check-record-coverage=<N> - Emit a warning if less than N% of records in the input profile are matched to the IR.
--sample-profile-check-sample-coverage=<N> - Emit a warning if less than N% of samples in the input profile are matched to the IR.
--sample-profile-max-propagate-iterations=<uint> - Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
--sampled-instr-burst-duration=<uint> - Set the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. This number of samples will be recorded for each 'sampled-instr-period' count update. Setting to 1 enables simple sampling, in which case it is recommended to set 'sampled-instr-period' to a prime number.
--sampled-instr-period=<uint> - Set the profile instrumentation sample period. For each sample period, a fixed number of consecutive samples will be recorded. The number is controlled by 'sampled-instr-burst-duration' flag. The default sample period of 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow.
--sampled-instrumentation - Do PGO instrumentation sampling
--save-temp-labels - Don't discard temporary labels
--save-temps - Save temporary files
--silence-passes - Suppress output of running passes (both stdout and stderr)
--skip-ret-exit-block - Suppress counter promotion if exit blocks contain ret.
--speculative-counter-promotion-max-exiting=<uint> - The max number of exiting blocks of a loop to allow speculative counter promotion
--speculative-counter-promotion-to-loop - When the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
--summary-file=<string> - The summary file to use for function importing.
--sve-tail-folding=<string> - Control the use of vectorisation using tail-folding for SVE where the option is specified in the form (Initial)[+(Flag1|Flag2|...)]:
disabled (Initial) No loop types will vectorize using tail-folding
default (Initial) Uses the default tail-folding settings for the target CPU
all (Initial) All legal loop types will vectorize using tail-folding
simple (Initial) Use tail-folding for simple loops (not reductions or recurrences)
reductions Use tail-folding for loops containing reductions
noreductions Inverse of above
recurrences Use tail-folding for loops containing fixed order recurrences
norecurrences Inverse of above
reverse Use tail-folding for loops requiring reversed predicates
noreverse Inverse of above
--tail-predication=<value> - MVE tail-predication pass options
=disabled - Don't tail-predicate loops
=enabled-no-reductions - Enable tail-predication, but not for reduction loops
=enabled - Enable tail-predication, including reduction loops
=force-enabled-no-reductions - Enable tail-predication, but not for reduction loops, and force this which might be unsafe
=force-enabled - Enable tail-predication, including reduction loops, and force this which might be unsafe
--thinlto-assume-merged - Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
--threads=<int> -
--timeout=<seconds> - Number of seconds program is allowed to run before it is killed (default is 300s), 0 disables timeout
--tool-args <string>... - <tool arguments>...
--type-based-intrinsic-cost - Calculate intrinsics cost based only on argument types
--use-undef - Use undef when generating programs.
--verbose-errors - Print the output of crashing program
--verify-region-info - Verify region info (time consuming)
--vp-counters-per-site=<number> - The average number of profile counters allocated per value profiling site.
--vp-static-alloc - Do static counter allocation for value profiler
--wasm-enable-eh - WebAssembly exception handling
--wasm-enable-exnref - WebAssembly exception handling (exnref)
--wasm-enable-sjlj - WebAssembly setjmp/longjmp handling
--write-experimental-debuginfo - Write debug info in the new non-intrinsic format. Has no effect if --preserve-input-debuginfo-format=true.
--x86-align-branch=<string> - Specify types of branches to align (plus separated list of types):
jcc indicates conditional jumps
fused indicates fused conditional jumps
jmp indicates direct unconditional jumps
call indicates direct and indirect calls
ret indicates rets
indirect indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint> - Control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches.
--x86-branches-within-32B-boundaries - Align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
--x86-pad-max-prefix-size=<uint> - Maximum number of prefixes to use for padding
--x86-relax-relocations - Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF
--x86-sse2avx - Specify that the assembler should encode SSE instructions with VEX prefix
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Polly Options:
Configure the polly loop optimizer
--polly - Enable the polly optimizer (with -O1, -O2 or -O3)
--polly-2nd-level-tiling - Enable a 2nd level loop of loop tiling
--polly-ast-print-accesses - Print memory access functions
--polly-context=<isl parameter set> - Provide additional constraints on the context parameters
--polly-dce-precise-steps=<int> - The number of precise steps between two approximating iterations. (A value of -1 schedules another approximation stage before the actual dead code elimination.
--polly-delicm-max-ops=<int> - Maximum number of isl operations to invest for lifetime analysis; 0=no limit
--polly-detect-full-functions - Allow the detection of full functions
--polly-dump-after - Dump module after Polly transformations into a file suffixed with "-after"
--polly-dump-after-file=<string> - Dump module after Polly transformations to the given file
--polly-dump-before - Dump module before Polly transformations into a file suffixed with "-before"
--polly-dump-before-file=<string> - Dump module before Polly transformations to the given file
--polly-enable-simplify - Simplify SCoP after optimizations
--polly-ignore-func=<string> - Ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided.
--polly-isl-arg=<argument> - Option passed to ISL
--polly-matmul-opt - Perform optimizations of matrix multiplications based on pattern matching
--polly-on-isl-error-abort - Abort if an isl error is encountered
--polly-only-func=<string> - Only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided.
--polly-only-region=<identifier> - Only run on certain regions (The provided identifier must appear in the name of the region's entry block
--polly-only-scop-detection - Only run scop detection, but no other optimizations
--polly-optimized-scops - Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree
--polly-parallel - Generate thread parallel code (isl codegen only)
--polly-parallel-force - Force generation of thread parallel code ignoring any cost model
--polly-pattern-matching-based-opts - Perform optimizations based on pattern matching
--polly-postopts - Apply post-rescheduling optimizations such as tiling (requires -polly-reschedule)
--polly-pragma-based-opts - Apply user-directed transformation from metadata
--polly-pragma-ignore-depcheck - Skip the dependency check for pragma-based transformations
--polly-process-unprofitable - Process scops that are unlikely to benefit from Polly optimizations.
--polly-register-tiling - Enable register tiling
--polly-report - Print information about the activities of Polly
--polly-reschedule - Optimize SCoPs using ISL
--polly-show - Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions)
--polly-show-only - Highlight the code regions that will be optimized in a (CFG only BBs)
--polly-stmt-granularity=<value> - Algorithm to use for splitting basic blocks into multiple statements
=bb - One statement per basic block
=scalar-indep - Scalar independence heuristic
=store - Store-level granularity
--polly-tc-opt - Perform optimizations of tensor contractions based on pattern matching
--polly-tiling - Enable loop tiling
--polly-vectorizer=<value> - Select the vectorization strategy
=none - No Vectorization
=stripmine - Strip-mine outer loops for the loop-vectorizer to trigger
dsymutil
Manipulate archived DWARF debug symbol files
root@kali:~# dsymutil -h
OVERVIEW: manipulate archived DWARF debug symbol files.
dsymutil links the DWARF debug information found in the object files
for the executable <input file> by using debug symbols information
contained in its symbol table.
USAGE: dsymutil [options] <input files>
Dsymutil Options:
--accelerator <accelerator type>
Specify the desired type of accelerator table. Valid options are 'Apple' (.apple_names, .apple_namespaces, .apple_types, .apple_objc), 'Dwarf' (.debug_names), 'Pub' (.debug_pubnames, .debug_pubtypes), 'Default' and 'None'
--arch <arch> Link DWARF debug information only for specified CPU architecturetypes. This option can be specified multiple times, once for eachdesired architecture. All CPU architectures will be linked bydefault.
--build-variant-suffix <suffix=buildvariant>
Specify the build variant suffix used to build the executabe file.
--dump-debug-map Parse and dump the debug map to standard output. No DWARF link will take place.
-D <path> Specify a directory that contain dSYM files to search for.
--fat64 Use a 64-bit header when emitting universal binaries.
--flat Produce a flat dSYM file (not a bundle).
-f Alias for --flat
--gen-reproducer Generate a reproducer consisting of the input object files. Alias for --reproducer=GenerateOnExit.
--help Prints this help output.
-h Alias for --help
-j <threads> Alias for --num-threads
--keep-function-for-static
Make a static variable keep the enclosing function even if it would have been omitted otherwise.
--linker <DWARF linker type>
Specify the desired type of DWARF linker. Defaults to 'classic'
--no-odr Do not use ODR (One Definition Rule) for type uniquing.
--no-output Do the link in memory, but do not emit the result file.
--no-swiftmodule-timestamp
Don't check timestamp for swiftmodule files.
--num-threads <threads> Specifies the maximum number of simultaneous threads to use when linking multiple architectures.
--object-prefix-map <prefix=remapped>
Remap object file paths (but no source paths) before processing.Use this for Clang objects where the module cache location wasremapped using -fdebug-prefix-map; to help dsymutilfind the Clang module cache.
--oso-prepend-path <path>
Specify a directory to prepend to the paths of object files.
--out <filename> Alias for -o
-o <filename> Specify the output file. Defaults to <input file>.dwarf
--quiet Enable quiet mode.
-q Alias for --quiet
--remarks-drop-without-debug
Drop remarks without valid debug locations. Without this flags, all remarks are kept.
--remarks-output-format <format>
Specify the format to be used when serializing the linked remarks.
--remarks-prepend-path <path>
Specify a directory to prepend to the paths of the external remark files.
--reproducer <mode> Specify the reproducer generation mode. Valid options are 'GenerateOnExit', 'GenerateOnCrash', 'Off'.
--statistics Print statistics about the contribution of each object file to the linked debug info. This prints a table after linking with the object file name, the size of the debug info in the object file (in bytes) and the size contributed (in bytes) to the linked dSYM. The table is sorted by the output size listing the object files with the largest contribution first.
--symtab Dumps the symbol table found in executable or object file(s) and exits.
-S Output textual assembly instead of a binary dSYM companion file.
-s Alias for --symtab
--toolchain <toolchain> Embed toolchain information in dSYM bundle.
--update Updates existing dSYM files to contain the latest accelerator tables and other DWARF optimizations.
--use-reproducer <path> Use the object files from the given reproducer path.
-u Alias for --update
--verbose Enable verbose mode.
--verify-dwarf <verification mode>
Run the DWARF verifier on the input and/or output. Valid options are 'none, 'input', 'output', 'all' or 'auto' which runs the output verifier only if input verification passed.
--verify Alias for --verify-dwarf=output
--version Prints the dsymutil version.
-v Alias for --version
-y Treat the input file is a YAML debug map rather than a binary.
llc
LLVM static compiler
root@kali:~# llc -h
OVERVIEW: llvm system compiler
USAGE: llc [options] <input bitcode>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
-I <string> - include search path
-O <char> - Optimization level. [-O0, -O1, -O2, or -O3] (default = '-O2')
--aarch64-neon-syntax=<value> - Choose style of NEON code to emit from AArch64 backend:
=generic - Emit generic NEON assembly
=apple - Emit Apple-style NEON assembly
--aarch64-use-aa - Enable the use of AA during codegen.
--abort-on-max-devirt-iterations-reached - Abort when the max iterations for devirtualization CGSCC repeat pass is reached
--addrsig - Emit an address-significance table
--align-loops=<uint> - Default alignment for loops
--allow-ginsert-as-artifact - Allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
--amdgpu-atomic-optimizer-strategy=<value> - Select DPP or Iterative strategy for scan
=DPP - Use DPP operations for scan
=Iterative - Use Iterative approach for scan
=None - Disable atomic optimizer
--amdgpu-bypass-slow-div - Skip 64-bit divide for dynamic 32-bit values
--amdgpu-disable-loop-alignment - Do not align and prefetch loops
--amdgpu-dpp-combine - Enable DPP combiner
--amdgpu-dump-hsa-metadata - Dump AMDGPU HSA Metadata
--amdgpu-enable-merge-m0 - Merge and hoist M0 initializations
--amdgpu-enable-power-sched - Enable scheduling to minimize mAI power bursts
--amdgpu-kernarg-preload-count=<uint> - How many kernel arguments to preload onto SGPRs
--amdgpu-promote-alloca-to-vector-limit=<uint> - Maximum byte size to consider promote alloca to vector
--amdgpu-sdwa-peephole - Enable SDWA peepholer
--amdgpu-use-aa-in-codegen - Enable the use of AA during codegen.
--amdgpu-verify-hsa-metadata - Verify AMDGPU HSA Metadata
--amdgpu-vgpr-index-mode - Use GPR indexing mode instead of movrel for vector indexing
--arm-add-build-attributes -
--arm-implicit-it=<value> - Allow conditional instructions outdside of an IT block
=always - Accept in both ISAs, emit implicit ITs in Thumb
=never - Warn in ARM, reject in Thumb
=arm - Accept in ARM, reject in Thumb
=thumb - Warn in ARM, emit implicit ITs in Thumb
--asm-show-inst - Emit internal instruction representation to assembly file
--asm-verbose - Add comments to directives.
--atomic-counter-update-promoted - Do counter update using atomic fetch add for promoted counters only
--atomic-first-counter - Use atomic fetch add for first counter in a function (usually the entry counter)
--basic-block-address-map - Emit the basic block address map section
--basic-block-sections=<all | <function list (file)> | labels | none> - Emit basic blocks into separate sections
--bounds-checking-single-trap - Use one trap block per function
--bounds-checking-unique-traps - Always use one trap per check
--bpf-stack-size=<int> - Specify the BPF stack size limit
--cfg-hide-cold-paths=<number> - Hide blocks with relative frequency below the given value
--cfg-hide-deoptimize-paths -
--cfg-hide-unreachable-paths -
--check-functions-filter=<regex> - Only emit checks for arguments of functions whose names match the given regular expression
--code-model=<value> - Choose code model
=tiny - Tiny code model
=small - Small code model
=kernel - Kernel code model
=medium - Medium code model
=large - Large code model
--cost-kind=<value> - Target cost kind
=throughput - Reciprocal throughput
=latency - Instruction latency
=code-size - Code size
=size-latency - Code size and latency
--crel - Use CREL relocation format for ELF
--cs-profile-generate - Perform context sensitive PGO instrumentation
--cs-profile-path=<string> - Context sensitive profile file path
--data-sections - Emit data into separate sections
--debug-entry-values - Enable debug info for the debug entry values.
--debug-info-correlate - Use debug info to correlate profiles. (Deprecated, use -profile-correlate=debug-info)
--debugger-tune=<value> - Tune debug info for a particular debugger
=gdb - gdb
=lldb - lldb
=dbx - dbx
=sce - SCE targets (e.g. PS4)
--debugify-func-limit=<ulong> - Set max number of processed functions per pass.
--debugify-level=<value> - Kind of debug info to add
=locations - Locations only
=location+variables - Locations and Variables
--debugify-quiet - Suppress verbose debugify output
--denormal-fp-math=<value> - Select which denormal numbers the code is permitted to require
=ieee - IEEE 754 denormal numbers
=preserve-sign - the sign of a flushed-to-zero number is preserved in the sign of 0
=positive-zero - denormals are flushed to positive zero
=dynamic - denormals have unknown treatment
--denormal-fp-math-f32=<value> - Select which denormal numbers the code is permitted to require for float
=ieee - IEEE 754 denormal numbers
=preserve-sign - the sign of a flushed-to-zero number is preserved in the sign of 0
=positive-zero - denormals are flushed to positive zero
=dynamic - denormals have unknown treatment
--disable-auto-upgrade-debug-info - Disable autoupgrade of debug info
--disable-i2p-p2i-opt - Disables inttoptr/ptrtoint roundtrip optimization
--disable-promote-alloca-to-lds - Disable promote alloca to LDS
--disable-promote-alloca-to-vector - Disable promote alloca to vector
--disable-simplify-libcalls - Disable simplify-libcalls
--disable-tail-calls - Never emit tail calls
--do-counter-promotion - Do counter register promotion
--dot-cfg-mssa=<file name for generated dot file> - file name for generated dot file
--dwarf-version=<int> - Dwarf version
--dwarf64 - Generate debugging info in the 64-bit DWARF format
--emit-call-site-info - Emit call site debug information, if debug information is enabled.
--emit-compact-unwind-non-canonical - Whether to try to emit Compact Unwind for non canonical entries.
--emit-dwarf-unwind=<value> - Whether to emit DWARF EH frame entries.
=always - Always emit EH frame entries
=no-compact-unwind - Only emit EH frame entries when compact unwind is not available
=default - Use target platform default
--emscripten-cxx-exceptions-allowed=<string> - The list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
--emulated-tls - Use emulated TLS model
--enable-approx-func-fp-math - Enable FP math optimizations that assume approx func
--enable-cse-in-irtranslator - Should enable CSE in irtranslator
--enable-cse-in-legalizer - Should enable CSE in Legalizer
--enable-emscripten-cxx-exceptions - WebAssembly Emscripten-style exception handling
--enable-emscripten-sjlj - WebAssembly Emscripten-style setjmp/longjmp handling
--enable-gvn-hoist - Enable the GVN hoisting pass (default = off)
--enable-gvn-memdep -
--enable-gvn-sink - Enable the GVN sinking pass (default = off)
--enable-jmc-instrument - Instrument functions with a call to __CheckForDebuggerJustMyCode
--enable-jump-table-to-switch - Enable JumpTableToSwitch pass (default = off)
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loop-simplifycfg-term-folding -
--enable-name-compression - Enable name/filename string compression
--enable-new-pm - Enable the new pass manager
--enable-no-infs-fp-math - Enable FP math optimizations that assume no +-Infs
--enable-no-nans-fp-math - Enable FP math optimizations that assume no NaNs
--enable-no-signed-zeros-fp-math - Enable FP math optimizations that assume the sign of 0 is insignificant
--enable-no-trapping-fp-math - Enable setting the FP exceptions build attribute not to use exceptions
--enable-pgo-force-function-attrs - Enable pass to set function attributes based on PGO profiles
--enable-split-backedge-in-load-pre -
--enable-split-loopiv-heuristic - Enable loop iv regalloc heuristic
--enable-tlsdesc - Enable the use of TLS Descriptors
--enable-unsafe-fp-math - Enable optimizations that may decrease FP precision
--enable-vtable-profile-use - If ThinLTO and WPD is enabled and this option is true, vtable profiles will be used by ICP pass for more efficient indirect call sequence. If false, type profiles won't be used.
--enable-vtable-value-profiling - If true, the virtual table address will be instrumented to know the types of a C++ pointer. The information is used in indirect call promotion to do selective vtable-based comparison.
--exception-model=<value> - exception model
=default - default exception handling model
=dwarf - DWARF-like CFI based exception handling
=sjlj - SjLj exception handling
=arm - ARM EHABI exceptions
=wineh - Windows exception model
=wasm - WebAssembly exception handling
--expand-variadics-override=<value> - Override the behaviour of expand-variadics
=unspecified - Use the implementation defaults
=disable - Disable the pass entirely
=optimize - Optimise without changing ABI
=lowering - Change variadic calling convention
--experimental-debug-variable-locations - Use experimental new value-tracking variable locations
--experimental-debuginfo-iterators - Enable communicating debuginfo positions through iterators, eliminating intrinsics. Has no effect if --preserve-input-debuginfo-format=true.
--fatal-warnings - Treat warnings as errors
--fdpic - Use the FDPIC ABI
--filetype=<value> - Choose a file type (not all types are supported by all targets):
=asm - Emit an assembly ('.s') file
=obj - Emit a native object ('.o') file
=null - Emit nothing, for performance testing
--float-abi=<value> - Choose float ABI type
=default - Target default float ABI type
=soft - Soft float ABI (implied by -soft-float)
=hard - Hard float ABI (uses FP registers)
--force-dwarf-frame-section - Always emit a debug frame section.
--force-tail-folding-style=<value> - Force the tail folding style
=none - Disable tail folding
=data - Create lane mask for data only, using active.lane.mask intrinsic
=data-without-lane-mask - Create lane mask with compare/stepvector
=data-and-control - Create lane mask using active.lane.mask intrinsic, and use it for both data and control flow
=data-and-control-without-rt-check - Similar to data-and-control, but remove the runtime check
=data-with-evl - Use predicated EVL instructions for tail folding. If EVL is unsupported, fallback to data-without-lane-mask.
--fp-contract=<value> - Enable aggressive formation of fused FP ops
=fast - Fuse FP ops whenever profitable
=on - Only fuse 'blessed' FP ops.
=off - Only fuse FP ops when the result won't be affected.
--frame-pointer=<value> - Specify frame pointer elimination optimization
=all - Disable frame pointer elimination
=non-leaf - Disable frame pointer elimination for non-leaf frame
=reserved - Enable frame pointer elimination, but reserve the frame pointer register
=none - Enable frame pointer elimination
--fs-profile-debug-bw-threshold=<uint> - Only show debug message if the source branch weight is greater than this value.
--fs-profile-debug-prob-diff-threshold=<uint> - Only show debug message if the branch probility is greater than this value (in percentage).
--function-sections - Emit functions into separate sections
--generate-merged-base-profiles - When generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
--gpsize=<uint> - Global Pointer Addressing Size. The default size is 8.
--hash-based-counter-split - Rename counter variable of a comdat function based on cfg hash
--hexagon-add-build-attributes -
--hexagon-rdf-limit=<uint> -
--hot-cold-split - Enable hot-cold splitting pass
--hwasan-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--hwasan-random-rate=<number> - Probability value in the range [0.0, 1.0] to keep instrumentation of a function.
--ignore-xcoff-visibility - Not emit the visibility attribute for asm in AIX OS or give all symbols 'unspecified' visibility in XCOFF object file
--import-all-index - Import all external functions in index.
--incremental-linker-compatible - When used with filetype=obj, emit an object file which can be used with an incremental linker
--instcombine-code-sinking - Enable code sinking
--instcombine-guard-widening-window=<uint> - How wide an instruction window to bypass looking for another guard
--instcombine-max-num-phis=<uint> - Maximum number phis to handle in intptr/ptrint folding
--instcombine-max-sink-users=<uint> - Maximum number of undroppable users for instruction sinking
--instcombine-maxarray-size=<uint> - Maximum array size considered when doing a combine
--instcombine-negator-enabled - Should we attempt to sink negations?
--instcombine-negator-max-depth=<uint> - What is the maximal lookup depth when trying to check for viability of negation sinking.
--instrprof-atomic-counter-update-all - Make all profile counter updates atomic (for testing only)
--internalize-public-api-file=<filename> - A file containing list of symbol names to preserve
--internalize-public-api-list=<list> - A list of symbol names to preserve
--iterative-counter-promotion - Allow counter promotion across the whole loop nest.
--large-data-threshold=<ulong> - Choose large data threshold for x86_64 medium code model
--lint-abort-on-error - In the Lint pass, abort on errors.
--load=<pluginfilename> - Load the specified plugin
--lower-allow-check-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--lower-allow-check-random-rate=<number> - Probability value in the range [0.0, 1.0] of unconditional pseudo-random checks.
--lto-aix-system-assembler=<path> - Path to a system assembler, picked up on AIX only
--lto-embed-bitcode=<value> - Embed LLVM bitcode in object files produced by LTO
=none - Do not embed
=optimized - Embed after all optimization passes
=post-merge-pre-opt - Embed post merge, but before optimizations
--lto-pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--lto-pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--lto-pass-remarks-output=<filename> - Output filename for pass remarks
--march=<string> - Architecture to generate code for (see --version)
--matrix-default-layout=<value> - Sets the default matrix layout
=column-major - Use column-major layout
=row-major - Use row-major layout
--matrix-print-after-transpose-opt -
--mattr=<a1,+a2,-a3,...> - Target specific attributes (-mattr=help for details)
--max-counter-promotions=<int> - Max number of allowed counter promotions
--max-counter-promotions-per-loop=<uint> - Max number counter promotions per loop to avoid increasing register pressure too much
--mc-relax-all - When used with filetype=obj, relax all fixups in the emitted object file
--mcabac - tbd
--mcpu=<cpu-name> - Target a specific cpu type (-mcpu=help for details)
--meabi=<value> - Set EABI type (default depends on triple):
=default - Triple default EABI version
=4 - EABI version 4
=5 - EABI version 5
=gnu - EABI GNU
--merror-missing-parenthesis - Error for missing parenthesis around predicate registers
--merror-noncontigious-register - Error for register names that aren't contigious
--mhvx - Enable Hexagon Vector eXtensions
--mhvx=<value> - Enable Hexagon Vector eXtensions
=v60 - Build for HVX v60
=v62 - Build for HVX v62
=v65 - Build for HVX v65
=v66 - Build for HVX v66
=v67 - Build for HVX v67
=v68 - Build for HVX v68
=v69 - Build for HVX v69
=v71 - Build for HVX v71
=v73 - Build for HVX v73
--mips-compact-branches=<value> - MIPS Specific: Compact branch policy.
=never - Do not use compact branches if possible.
=optimal - Use compact branches where appropriate (default).
=always - Always use compact branches if possible.
--mips16-constant-islands - Enable mips16 constant islands.
--mips16-hard-float - Enable mips16 hard float.
--mir-strip-debugify-only - Should mir-strip-debug only strip debug info from debugified modules by default
--misexpect-tolerance=<uint> - Prevents emitting diagnostics when profile counts are within N% of the threshold..
--mno-compound - Disable looking for compound instructions for Hexagon
--mno-fixup - Disable fixing up resolved relocations for Hexagon
--mno-ldc1-sdc1 - Expand double precision loads and stores to their single precision counterparts
--mno-pairing - Disable looking for duplex instructions for Hexagon
--mtriple=<string> - Override target triple for module
--mwarn-missing-parenthesis - Warn for missing parenthesis around predicate registers
--mwarn-noncontigious-register - Warn for register names that arent contigious
--mwarn-sign-mismatch - Warn for mismatching a signed and unsigned value
--mxcoff-roptr - When set to true, const objects with relocatable address values are put into the RO data section.
--no-deprecated-warn - Suppress all deprecated warnings
--no-discriminators - Disable generation of discriminator information.
--no-integrated-as - Disable integrated assembler
--no-type-check - Suppress type errors (Wasm)
--no-warn - Suppress all warnings
--nozero-initialized-in-bss - Don't place zero-initialized symbols into bss section
--nvptx-sched4reg - NVPTX Specific: schedule for register pressue
-o <filename> - Output filename
--object-size-offset-visitor-max-visit-instructions=<uint> - Maximum number of instructions for ObjectSizeOffsetVisitor to look at
--pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--pass-remarks-output=<filename> - Output filename for pass remarks
--passes=<string> - A textual description of the pass pipeline. To have analysis passes available before a certain pass, add 'require<foo-analysis>'.
--pgo-block-coverage - Use this option to enable basic block coverage instrumentation
--pgo-temporal-instrumentation - Use this option to enable temporal instrumentation
--pgo-view-block-coverage-graph - Create a dot file of CFGs with block coverage inference information
--poison-checking-function-local - Check that returns are non-poison (for testing)
--print-pipeline-passes - Print a '-passes' compatible string describing the pipeline (best-effort only).
--profile-correlate=<value> - Use debug info or binary file to correlate profiles.
=<empty> - No profile correlation
=debug-info - Use debug info to correlate
=binary - Use binary to correlate
--promote-alloca-vector-loop-user-weight=<uint> - The bonus weight of users of allocas within loop when sorting profitable allocas
--r600-ir-structurize - Use StructurizeCFG IR pass
--relocation-model=<value> - Choose relocation model
=static - Non-relocatable code
=pic - Fully relocatable, position independent code
=dynamic-no-pic - Relocatable external references, non-relocatable code
=ropi - Code and read-only data relocatable, accessed PC-relative
=rwpi - Read-write data relocatable, accessed relative to static base
=ropi-rwpi - Combination of ropi and rwpi
--riscv-add-build-attributes -
--riscv-use-aa - Enable the use of AA during codegen.
--run-pass=<pass-name> - Run compiler only for specified passes (comma separated list)
--runtime-counter-relocation - Enable relocating counters at runtime.
--safepoint-ir-verifier-print-only -
--sample-profile-check-record-coverage=<N> - Emit a warning if less than N% of records in the input profile are matched to the IR.
--sample-profile-check-sample-coverage=<N> - Emit a warning if less than N% of samples in the input profile are matched to the IR.
--sample-profile-max-propagate-iterations=<uint> - Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
--sampled-instr-burst-duration=<uint> - Set the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. This number of samples will be recorded for each 'sampled-instr-period' count update. Setting to 1 enables simple sampling, in which case it is recommended to set 'sampled-instr-period' to a prime number.
--sampled-instr-period=<uint> - Set the profile instrumentation sample period. For each sample period, a fixed number of consecutive samples will be recorded. The number is controlled by 'sampled-instr-burst-duration' flag. The default sample period of 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow.
--sampled-instrumentation - Do PGO instrumentation sampling
--save-temp-labels - Don't discard temporary labels
--separate-named-sections - Use separate unique sections for named sections
--skip-ret-exit-block - Suppress counter promotion if exit blocks contain ret.
--speculative-counter-promotion-max-exiting=<uint> - The max number of exiting blocks of a loop to allow speculative counter promotion
--speculative-counter-promotion-to-loop - When the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
--split-dwarf-file=<string> - Specify the name of the .dwo file to encode in the DWARF output
--split-dwarf-output=<filename> - .dwo output filename
--split-machine-functions - Split out cold basic blocks from machine functions based on profile information
--stack-size-section - Emit a section containing stack size metadata
--stack-symbol-ordering - Order local stack symbols.
--stackrealign - Force align the stack to the minimum alignment
--strict-dwarf - use strict dwarf
--summary-file=<string> - The summary file to use for function importing.
--sve-tail-folding=<string> - Control the use of vectorisation using tail-folding for SVE where the option is specified in the form (Initial)[+(Flag1|Flag2|...)]:
disabled (Initial) No loop types will vectorize using tail-folding
default (Initial) Uses the default tail-folding settings for the target CPU
all (Initial) All legal loop types will vectorize using tail-folding
simple (Initial) Use tail-folding for simple loops (not reductions or recurrences)
reductions Use tail-folding for loops containing reductions
noreductions Inverse of above
recurrences Use tail-folding for loops containing fixed order recurrences
norecurrences Inverse of above
reverse Use tail-folding for loops requiring reversed predicates
noreverse Inverse of above
--swift-async-fp=<value> - Determine when the Swift async frame pointer should be set
=auto - Determine based on deployment target
=always - Always set the bit
=never - Never set the bit
--tail-predication=<value> - MVE tail-predication pass options
=disabled - Don't tail-predicate loops
=enabled-no-reductions - Enable tail-predication, but not for reduction loops
=enabled - Enable tail-predication, including reduction loops
=force-enabled-no-reductions - Enable tail-predication, but not for reduction loops, and force this which might be unsafe
=force-enabled - Enable tail-predication, including reduction loops, and force this which might be unsafe
--tailcallopt - Turn fastcc calls into tail calls by (potentially) changing ABI.
--thinlto-assume-merged - Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
--thread-model=<value> - Choose threading model
=posix - POSIX thread model
=single - Single thread model
--threads=<int> -
--time-trace - Record time trace
--time-trace-file=<filename> - Specify time trace file destination
--tls-size=<uint> - Bit size of immediate TLS offsets
--type-based-intrinsic-cost - Calculate intrinsics cost based only on argument types
--unique-basic-block-section-names - Give unique names to every basic block section
--unique-section-names - Give unique names to every section
--use-ctors - Use .ctors instead of .init_array.
--use-undef - Use undef when generating programs.
--vec-extabi - Enable the AIX Extended Altivec ABI.
--verify-region-info - Verify region info (time consuming)
--vp-counters-per-site=<number> - The average number of profile counters allocated per value profiling site.
--vp-static-alloc - Do static counter allocation for value profiler
--wasm-enable-eh - WebAssembly exception handling
--wasm-enable-exnref - WebAssembly exception handling (exnref)
--wasm-enable-sjlj - WebAssembly setjmp/longjmp handling
--write-experimental-debuginfo - Write debug info in the new non-intrinsic format. Has no effect if --preserve-input-debuginfo-format=true.
-x <string> - Input language ('ir' or 'mir')
--x86-align-branch=<string> - Specify types of branches to align (plus separated list of types):
jcc indicates conditional jumps
fused indicates fused conditional jumps
jmp indicates direct unconditional jumps
call indicates direct and indirect calls
ret indicates rets
indirect indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint> - Control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches.
--x86-branches-within-32B-boundaries - Align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
--x86-pad-max-prefix-size=<uint> - Maximum number of prefixes to use for padding
--x86-relax-relocations - Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF
--x86-sse2avx - Specify that the assembler should encode SSE instructions with VEX prefix
--xcoff-traceback-table - Emit the XCOFF traceback table
--xray-function-index - Emit xray_fn_idx section
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Polly Options:
Configure the polly loop optimizer
--polly - Enable the polly optimizer (with -O1, -O2 or -O3)
--polly-2nd-level-tiling - Enable a 2nd level loop of loop tiling
--polly-ast-print-accesses - Print memory access functions
--polly-context=<isl parameter set> - Provide additional constraints on the context parameters
--polly-dce-precise-steps=<int> - The number of precise steps between two approximating iterations. (A value of -1 schedules another approximation stage before the actual dead code elimination.
--polly-delicm-max-ops=<int> - Maximum number of isl operations to invest for lifetime analysis; 0=no limit
--polly-detect-full-functions - Allow the detection of full functions
--polly-dump-after - Dump module after Polly transformations into a file suffixed with "-after"
--polly-dump-after-file=<string> - Dump module after Polly transformations to the given file
--polly-dump-before - Dump module before Polly transformations into a file suffixed with "-before"
--polly-dump-before-file=<string> - Dump module before Polly transformations to the given file
--polly-enable-simplify - Simplify SCoP after optimizations
--polly-ignore-func=<string> - Ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided.
--polly-isl-arg=<argument> - Option passed to ISL
--polly-matmul-opt - Perform optimizations of matrix multiplications based on pattern matching
--polly-on-isl-error-abort - Abort if an isl error is encountered
--polly-only-func=<string> - Only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided.
--polly-only-region=<identifier> - Only run on certain regions (The provided identifier must appear in the name of the region's entry block
--polly-only-scop-detection - Only run scop detection, but no other optimizations
--polly-optimized-scops - Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree
--polly-parallel - Generate thread parallel code (isl codegen only)
--polly-parallel-force - Force generation of thread parallel code ignoring any cost model
--polly-pattern-matching-based-opts - Perform optimizations based on pattern matching
--polly-postopts - Apply post-rescheduling optimizations such as tiling (requires -polly-reschedule)
--polly-pragma-based-opts - Apply user-directed transformation from metadata
--polly-pragma-ignore-depcheck - Skip the dependency check for pragma-based transformations
--polly-process-unprofitable - Process scops that are unlikely to benefit from Polly optimizations.
--polly-register-tiling - Enable register tiling
--polly-report - Print information about the activities of Polly
--polly-reschedule - Optimize SCoPs using ISL
--polly-show - Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions)
--polly-show-only - Highlight the code regions that will be optimized in a (CFG only BBs)
--polly-stmt-granularity=<value> - Algorithm to use for splitting basic blocks into multiple statements
=bb - One statement per basic block
=scalar-indep - Scalar independence heuristic
=store - Store-level granularity
--polly-tc-opt - Perform optimizations of tensor contractions based on pattern matching
--polly-tiling - Enable loop tiling
--polly-vectorizer=<value> - Select the vectorization strategy
=none - No Vectorization
=stripmine - Strip-mine outer loops for the loop-vectorizer to trigger
llvm-PerfectShuffle
llvm-addr2line
A drop-in replacement for addr2line
root@kali:~# llvm-addr2line -h
OVERVIEW: llvm-addr2line
USAGE: llvm-addr2line [options] addresses...
OPTIONS:
--addresses Show address before line information
--adjust-vma=<offset> Add specified offset to object file addresses
-a Alias for --addresses
--basenames Strip directory names from paths
--build-id=<value> Build ID used to look up the object file
--cache-size=<value> Max size in bytes of the in-memory binary cache.
--color=<value> Whether to use color when symbolizing log markup: always, auto, never
--color Use color when symbolizing log markup.
-C Alias for --demangle
--debug-file-directory=<dir>
Path to directory where to look for debug files
--debuginfod Use debuginfod to find debug binaries
-demangle=false Alias for --no-demangle
-demangle=true Alias for --demangle
--demangle Demangle function names
--dia Use the DIA library to access symbols (Windows only)
--dwp=<file> Path to DWP file to be use for any split CUs
-e=<file> Alias for --obj
--exe=<file> Alias for --obj
--exe <file> Alias for --obj
-e <file> Alias for --obj
-f=<value> Alias for --functions=
--fallback-debug-path=<dir>
Fallback path for debug binaries
--filter-markup Filter symbolizer markup from stdin.
--functions=<value> Print function name for a given address
--functions Print function name for a given address
-f Alias for --functions
--help Display this help
--inlines Print all inlined frames for a given address
--inlining=false Alias for --no-inlines
--inlining=true Alias for --inlines
--inlining Alias for --inlines
-i Alias for --inlines
--no-debuginfod Don't use debuginfod to find debug binaries
--no-demangle Don't demangle function names
--no-inlines Do not print inlined frames
--no-untag-addresses Remove memory tags from addresses before symbolization
--obj=<file> Path to object file to be symbolized (if not provided, object file should be specified for each input line)
--output-style=style Specify print style. Supported styles: LLVM, GNU, JSON
--pretty-print Make the output more human friendly
--print-address Alias for --addresses
--print-source-context-lines=<value>
Print N lines of source file context
-p Alias for --pretty-print
--relative-address Interpret addresses as addresses relative to the image base
--relativenames Strip the compilation directory from paths
-s Alias for --basenames
--verbose Print verbose line info
--version Display the version
-v Alias for --version
llvm-symbolizer Mach-O Specific Options:
--default-arch=<value> Default architecture (for multi-arch objects)
--dsym-hint=<dir> Path to .dSYM bundles to search for debug info for the object files
Pass @FILE as argument to read options from FILE.
llvm-ar
LLVM archiver
root@kali:~# llvm-ar -h
OVERVIEW: LLVM Archiver
USAGE: llvm-ar [options] [-]<operation>[modifiers] [relpos] [count] <archive> [files]
llvm-ar -M [<mri-script]
OPTIONS:
--format - archive format to create
=default - default
=gnu - gnu
=darwin - darwin
=bsd - bsd
=bigarchive - big archive (AIX OS)
=coff - coff
--plugin=<string> - ignored for compatibility
-h --help - display this help and exit
--output - the directory to extract archive members to
--rsp-quoting - quoting style for response files
=posix - posix
=windows - windows
--thin - create a thin archive
--version - print the version and exit
-X{32|64|32_64|any} - object mode (only for AIX OS)
@<file> - read options from <file>
OPERATIONS:
d - delete [files] from the archive
m - move [files] in the archive
p - print contents of [files] found in the archive
q - quick append [files] to the archive
r - replace or insert [files] into the archive
s - act as ranlib
t - display list of files in archive
x - extract [files] from the archive
MODIFIERS:
[a] - put [files] after [relpos]
[b] - put [files] before [relpos] (same as [i])
[c] - do not warn if archive had to be created
[D] - use zero for timestamps and uids/gids (default)
[h] - display this help and exit
[i] - put [files] before [relpos] (same as [b])
[l] - ignored for compatibility
[L] - add archive's contents
[N] - use instance [count] of name
[o] - preserve original dates
[O] - display member offsets
[P] - use full names when matching (implied for thin archives)
[s] - create an archive index (cf. ranlib)
[S] - do not build a symbol table
[T] - deprecated, use --thin instead
[u] - update only [files] newer than archive contents
[U] - use actual timestamps and uids/gids
[v] - be verbose about actions taken
[V] - display the version and exit
llvm-as
LLVM assembler
root@kali:~# llvm-as -h
OVERVIEW: llvm .ll -> .bc assembler
USAGE: llvm-as [options] <input .llvm file>
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-as Options:
--data-layout=<layout-string> - data layout string to use
--disable-output - Disable output
-f - Enable binary output on terminals
--module-hash - Emit module hash
-o <filename> - Override output filename
llvm-bcanalyzer
LLVM bitcode analyzer
root@kali:~# llvm-bcanalyzer -h
OVERVIEW: llvm-bcanalyzer file analyzer
USAGE: llvm-bcanalyzer [options] <input bitcode>
OPTIONS:
BC Analyzer Options:
--block-info=<string> - Use the BLOCK_INFO from the given file
--check-hash=<string> - Check module hash using the argument as a string table
--disable-histogram - Do not print per-code histogram
--dump - Dump low level bitcode trace
--dump-blockinfo - Include BLOCKINFO details in low level dump
--non-symbolic - Emit numeric info in dump even if symbolic info is available
--show-binary-blobs - Print binary blobs using hex escapes
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-c-test
root@kali:~# llvm-c-test -h
llvm-c-test command
Commands:
* --module-dump
Read bitcode from stdin - print disassembly
* --lazy-module-dump
Lazily read bitcode from stdin - print disassembly
* --new-module-dump
Read bitcode from stdin - print disassembly
* --lazy-new-module-dump
Lazily read bitcode from stdin - print disassembly
* --module-list-functions
Read bitcode from stdin - list summary of functions
* --module-list-globals
Read bitcode from stdin - list summary of globals
* --targets-list
List available targets
* --object-list-sections
Read object file from stdin - list sections
* --object-list-symbols
Read object file from stdin - list symbols (like nm)
* --disassemble
Read lines of triple, hex ascii machine code from stdin - print disassembly
* --calc
Read lines of name, rpn from stdin - print generated module
* --get-di-tag
Run test for getting MDNode dwarf tag
* --di-type-get-name
Run test for getting MDNode type name
* --replace-md-operand
Run test for replacing MDNode operands
* --is-a-value-as-metadata
Run test for checking if LLVMValueRef is a ValueAsMetadata
* --echo
Read bitcode file from stdin - print it back out
* --test-diagnostic-handler
Read bitcode file from stdin with a diagnostic handler set
* --test-dibuilder
Run tests for the DIBuilder C API - print generated module
llvm-cat
root@kali:~# llvm-cat -h
OVERVIEW: Module concatenation
USAGE: llvm-cat [options] <input files>
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-cat Options:
-b - Whether to perform binary concatenation
-o <filename> - Output filename
llvm-cfi-verify
root@kali:~# llvm-cfi-verify -h
OVERVIEW: Identifies whether Control Flow Integrity protects all indirect control flow instructions in the provided object file, DSO or binary.
Note: Anything statically linked into the provided file *must* be compiled with '-g'. This can be relaxed through the '--ignore-dwarf' flag.
USAGE: llvm-cfi-verify [options] <input file> [ignorelist file]
OPTIONS:
CFI Verify Options:
--blame-context=<uint> - Print the blame context (if possible) for BAD instructions. This specifies the number of lines of context to include, where zero disables this feature.
--blame-context-all=<uint> - Prints the blame context (if possible) for ALL instructions. This specifies the number of lines of context for non-BAD instructions (see --blame-context). If --blame-context is unspecified, it prints this number of contextual lines for BAD instructions as well.
--print-graphs - Print graphs around indirect CF instructions in DOT format.
--summarize - Print the summary only.
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-config
Print LLVM compilation options
root@kali:~# llvm-config --help
usage: llvm-config <OPTION>... [<COMPONENT>...]
Get various configuration information needed to compile programs which use
LLVM. Typically called from 'configure' scripts. Examples:
llvm-config --cxxflags
llvm-config --ldflags
llvm-config --libs engine bcreader scalaropts
Options:
--assertion-mode Print assertion mode of LLVM tree (ON or OFF).
--bindir Directory containing LLVM executables.
--build-mode Print build mode of LLVM tree (e.g. Debug or Release).
--build-system Print the build system used to build LLVM (e.g. `cmake` or `gn`).
--cflags C compiler flags for files that include LLVM headers.
--cmakedir Directory containing LLVM CMake modules.
--components List of all possible components.
--cppflags C preprocessor flags for files that include LLVM headers.
--cxxflags C++ compiler flags for files that include LLVM headers.
--has-rtti Print whether or not LLVM was built with rtti (YES or NO).
--help Print a summary of llvm-config arguments.
--host-target Target triple used to configure LLVM.
--ignore-libllvm Ignore libLLVM and link component libraries instead.
--includedir Directory containing LLVM headers.
--ldflags Print Linker flags.
--libdir Directory containing LLVM libraries.
--libfiles Fully qualified library filenames for makefile depends.
--libnames Bare library names for in-tree builds.
--libs Libraries needed to link against LLVM components.
--link-shared Link the components as shared libraries.
--link-static Link the component libraries statically.
--obj-root Print the object root used to build LLVM.
--prefix Print the installation prefix.
--shared-mode Print how the provided components can be collectively linked (`shared` or `static`).
--system-libs System Libraries needed to link against LLVM components.
--targets-built List of all targets currently built.
--version Print LLVM version.
Typical components:
all All LLVM libraries (default).
engine Either a native JIT or a bitcode interpreter.
llvm-cov
Emit coverage information
root@kali:~# llvm-cov -h
Usage: llvm-cov {export|gcov|report|show} [OPTION]...
Shows code coverage information.
Subcommands:
export: Export instrprof file to structured format.
gcov: Work with the gcov format.
report: Summarize instrprof style coverage information.
show: Annotate source files using instrprof style coverage.
llvm-cvtres
root@kali:~# llvm-cvtres -h
OVERVIEW: Resource Converter
USAGE: llvm-cvtres [options] file...
OPTIONS:
/DEFINE:symbol Not implemented
/FOLDDUPS: Not implemented
/HELP Display available options
/MACHINE:{ARM|ARM64|EBC|IA64|X64|X86}
Machine architecture
/NOLOGO Not implemented
/OUT:filename Output file
/READONLY Not implemented
/TIMESTAMP:<value> Timestamp for coff header, defaults to current time
/VERBOSE Use verbose output
llvm-cxxdump
root@kali:~# llvm-cxxdump -h
OVERVIEW: LLVM C++ ABI Data Dumper
USAGE: llvm-cxxdump [options] <input object files>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-cxxfilt
LLVM symbol name demangler
root@kali:~# llvm-cxxfilt -h
OVERVIEW: LLVM symbol undecoration tool
USAGE: llvm-cxxfilt [options] <mangled>
OPTIONS:
-_ Alias for --strip-underscore
--format=<value> Specify mangling format. Currently ignored because only 'gnu' is supported
--help Display this help
-h Alias for --help
--no-params Skip function parameters and return types
--no-strip-underscore Don't strip the leading underscore
-n Alias for --no-strip-underscore
-p Alias for --no-params
--strip-underscore Strip the leading underscore
-s Alias for --format
--types Attempt to demangle types as well as function names
-t Alias for --types
--version Display the version
Pass @FILE as argument to read options from FILE.
llvm-diff
LLVM structural ‘diff’
root@kali:~# llvm-diff -h
USAGE: llvm-diff [options] <first file> <second file> <globals to compare>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-dis
LLVM disassembler
root@kali:~# llvm-dis -h
OVERVIEW: llvm .bc -> .ll disassembler
USAGE: llvm-dis [options] [input bitcode]...
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Disassembler Options:
-f - Enable binary output on terminals
--materialize-metadata - Load module without materializing metadata, then materialize only the metadata
-o <filename> - Override output filename
--show-annotations - Add informational comments to the .ll file
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-dlltool
root@kali:~# llvm-dlltool -h
OVERVIEW: llvm-dlltool
USAGE: llvm-dlltool [options] file...
OPTIONS:
-D <value> Specify the input DLL Name
-d <value> Input .def File
-f <value> Assembler Flags
-k Kill @n Symbol from export
-l <value> Generate an import lib
-m <value> Set target machine
--no-leading-underscore Don't add leading underscores on symbols
-N <value> Input native .def File on ARM64EC
-S <value> Assembler
-t <value> Prefix for temporary files (ignored)
TARGETS: i386, i386:x86-64, arm, arm64, arm64ec
llvm-dwarfdump
Manual page for llvm-dwarfdump 19
root@kali:~# llvm-dwarfdump -h
OVERVIEW: pretty-print DWARF debug information in object files and debug info archives.
USAGE: llvm-dwarfdump [options] <input object files or .dSYM bundles>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Section-specific Dump Options:
These control which sections are dumped. Where applicable these parameters take an optional =<offset> argument to dump only the entry at the specified offset.
-a - Alias for --all
--all - Dump all debug info sections
--apple-names - Dump the .apple_names section
--apple-namespaces - Dump the .apple_namespaces section
--apple-objc - Dump the .apple_objc section
--apple-types - Dump the .apple_types section
--debug-abbrev - Dump the .debug_abbrev section
--debug-addr - Dump the .debug_addr section
--debug-aranges - Dump the .debug_aranges section
--debug-cu-index - Dump the .debug_cu_index section
--debug-frame[=<offset>] - Dump the .debug_frame section
--debug-gnu-pubnames - Dump the .debug_gnu_pubnames section
--debug-gnu-pubtypes - Dump the .debug_gnu_pubtypes section
--debug-info[=<offset>] - Dump the .debug_info section
--debug-line[=<offset>] - Dump the .debug_line section
--debug-line-str - Dump the .debug_line_str section
--debug-loc[=<offset>] - Dump the .debug_loc section
--debug-loclists[=<offset>] - Dump the .debug_loclists section
--debug-macro - Dump the .debug_macro section
--debug-names - Dump the .debug_names section
--debug-pubnames - Dump the .debug_pubnames section
--debug-pubtypes - Dump the .debug_pubtypes section
--debug-ranges - Dump the .debug_ranges section
--debug-rnglists - Dump the .debug_rnglists section
--debug-str - Dump the .debug_str section
--debug-str-offsets - Dump the .debug_str_offsets section
--debug-tu-index - Dump the .debug_tu_index section
--debug-types[=<offset>] - Dump the .debug_types section
--eh-frame - Alias for --debug-frame
--gdb-index - Dump the .gdb_index section
Specific Options:
-F - Alias for --show-form.
--arch=<string> - Dump debug information for the specified CPU architecture only. Architectures may be specified by name or by number. This option can be specified multiple times, once for each desired architecture.
-c - Alias for --show-children.
--diff - Emit diff-friendly output by omitting offsets and addresses.
--dwo - Dump the non skeleton DIE in the .dwo or .dwp file after dumping the skeleton DIE from the main executable. This allows dumping the .dwo files with resolved addresses.
--error-display=<value> - Set the level of detail and summary to display when verifying (implies --verify)
=quiet - Only display whether errors occurred.
=summary - Display only a summary of the errors found.
=details - Display each error in detail but no summary.
=full - Display each error as well as a summary. [default]
-f - Alias for --find.
--find=<name> - Search for the exact match for <name> in the accelerator tables and print the matching debug information entries. When no accelerator tables are available, the slower but more complete -name option can be used instead.
--find-all-apple - Print every debug information entry in the accelerator tables.
-i - Alias for --ignore-case.
--ignore-case - Ignore case distinctions when using --name.
--lookup=<address> - Lookup <address> in the debug information and print out any available file, function, block and line table details.
-n - Alias for --name
--name=<pattern> - Find and print all debug info entries whose name (DW_AT_name attribute) matches the exact text in <pattern>. When used with the the -regex option <pattern> is interpreted as a regular expression.
-o <filename> - Redirect output to the specified file.
-p - Alias for --show-parents.
--parent-recurse-depth=<N> - Only recurse to a depth of N when displaying parents of debug info entries.
--quiet - Use with -verify to not emit to STDOUT.
-r - Alias for --recurse-depth.
--recurse-depth=<N> - Only recurse to a depth of N when displaying children of debug info entries.
--regex - Treat any <pattern> strings as regular expressions when searching with --name. If --ignore-case is also specified, the regular expression becomes case-insensitive.
--show-children - Show a debug info entry's children when selectively printing entries.
--show-form - Show DWARF form types after the DWARF attribute types.
--show-parents - Show a debug info entry's parents when selectively printing entries.
--show-section-sizes - Show the sizes of all debug sections, expressed in bytes.
--show-sources - Show the sources across all compilation units.
--statistics - Emit JSON-formatted debug info quality metrics.
--summarize-types - Abbreviate the description of type unit entries.
-u - Alias for --uuid.
--uuid - Show the UUID for each architecture.
-v - Alias for --verbose.
--verbose - Print more low-level encoding details.
--verify - Verify the DWARF debug info.
--verify-json=<filename.json> - Output JSON-formatted error summary to the specified file. (Implies --verify)
-x - Alias for --regex
Pass @FILE as argument to read options from FILE.
llvm-dwp
root@kali:~# llvm-dwp -h
OVERVIEW: merge split dwarf (.dwo) files
USAGE: llvm-dwp [options] <input files>
OPTIONS:
-continue-on-cu-index-overflow=<value>
default = continue, This turns an error when offset
for .debug_*.dwo sections overfolws into a warning. = soft-stop, This produces a
truncated but valid DWP file, discarding any DWO files that would not fit within
the 32 bit/4GB limits of the format.
-e <filename> Specify the executable/library files to get the list of *.dwo from.
-help Display this help
-h Alias for --help
-o <filename> Specify the output file.
-version Display the version of this program
llvm-exegesis
LLVM Machine Instruction Benchmark
root@kali:~# llvm-exegesis -h
OVERVIEW: llvm host machine instruction characteristics measurment and analysis.
USAGE: llvm-exegesis [options]
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-exegesis analysis options:
--analysis-clustering=<value> - the clustering algorithm to use
=dbscan - use DBSCAN/OPTICS algorithm
=naive - one cluster per opcode
--analysis-clustering-epsilon=<number> - epsilon for benchmark point clustering
--analysis-clusters-output-file=<string> -
--analysis-display-unstable-clusters - if there is more than one benchmark for an opcode, said benchmarks may end up not being clustered into the same cluster if the measured performance characteristics are different. by default all such opcodes are filtered out. this flag will instead show only such unstable opcodes
--analysis-inconsistencies-output-file=<string> -
--analysis-inconsistency-epsilon=<number> - epsilon for detection of when the cluster is different from the LLVM schedule profile values
--analysis-numpoints=<uint> - minimum number of points in an analysis cluster (dbscan only)
--analysis-override-benchmark-triple-and-cpu - By default, we analyze the benchmarks for the triple/CPU they were measured for, but if you want to analyze them for some other combination (specified via -mtriple/-mcpu), you can pass this flag.
llvm-exegesis benchmark options:
--analysis-filter=<value> - Filter the benchmarks before analysing them
=all - Keep all benchmarks (default)
=reg-only - Keep only those benchmarks that do *NOT* involve memory
=mem-only - Keep only the benchmarks that *DO* involve memory
--benchmark-phase=<value> - it is possible to stop the benchmarking process after some phase
=prepare-snippet - Only generate the minimal instruction sequence
=prepare-and-assemble-snippet - Same as prepare-snippet, but also dumps an excerpt of the sequence (hex encoded)
=assemble-measured-code - Same as prepare-and-assemble-snippet, but also creates the full sequence that can be dumped to a file using --dump-object-to-disk
=measure - Same as prepare-measured-code, but also runs the measurement (default)
--benchmark-repeat-count=<uint> - The number of times to repeat measurements on the benchmark k before aggregating the results
--dump-object-to-disk[=<string>] - dumps the generated benchmark object to disk and prints a message to access it
--execution-mode=<value> - Selects the execution mode to use for running snippets
=inprocess - Executes the snippets within the same process
=subprocess - Spawns a subprocess for each snippet execution, allows for the use of memory annotations
--ignore-invalid-sched-class - ignore instructions that do not define a sched class
--loop-body-size=<uint> - when repeating the instruction snippet by looping over it, duplicate the snippet until the loop body contains at least this many instruction
--max-configs-per-opcode=<uint> - allow to snippet generator to generate at most that many configs
--measurements-print-progress - Produce progress indicator when performing measurements
--min-instructions=<uint> - The minimum number of instructions that should be included in the snippet
--opcode-index=<int> - opcode to measure, by index, or -1 to measure all opcodes
--opcode-name=<string> - comma-separated list of opcodes to measure, by name
--repetition-mode=<value> - how to repeat the instruction snippet
=duplicate - Duplicate the snippet
=loop - Loop over the snippet
=min - All of the above and take the minimum of measurements
=middle-half-duplicate - Middle half duplicate mode
=middle-half-loop - Middle half loop mode
--result-aggregation-mode=<value> - How to aggregate multi-values result
=min - Keep min reading
=max - Keep max reading
=mean - Compute mean of all readings
=min-variance - Keep readings set with min-variance
--snippets-file=<string> - code snippets to measure
--use-dummy-perf-counters - Do not read real performance counters, use dummy values (for testing)
--validation-counter=<value> - The name of a validation counter to run concurrently with the main counter to validate benchmarking assumptions
=instructions-retired - Count retired instructions
=l1d-cache-load-misses - Count L1D load cache misses
=l1d-cache-store-misses - Count L1D store cache misses
=l1i-cache-load-misses - Count L1I load cache misses
=data-tlb-load-misses - Count DTLB load misses
=data-tlb-store-misses - Count DTLB store misses
=instruction-tlb-load-misses - Count ITLB load misses
=branch-prediction-misses - Branch prediction misses
--x86-disable-upper-sse-registers - Disable XMM8-XMM15 register usage
--x86-lbr-sample-period=<uint> - The sample period (nbranches/sample), used for LBR sampling
llvm-exegesis options:
--benchmarks-file=<string> - File to read (analysis mode) or write (latency/uops/inverse_throughput modes) benchmark results. “-” uses stdin/stdout.
--mcpu=<cpu-name> - Target a specific cpu type (-mcpu=help for details)
--mode=<value> - the mode to run
=latency - Instruction Latency
=inverse_throughput - Instruction Inverse Throughput
=uops - Uop Decomposition
=analysis - Analysis
--mtriple=<string> - Target triple. See -version for available targets
llvm-extract
Extract a function from an LLVM module
root@kali:~# llvm-extract -h
OVERVIEW: llvm extractor
USAGE: llvm-extract [options] <input bitcode file>
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-extract Options:
--alias=<alias> - Specify alias to extract
--bb=<function:bb1[;bb2...]> - Specify <function, basic block1[;basic block2...]> pairs to extract.
Each pair will create a function.
If multiple basic blocks are specified in one pair,
the first block in the sequence should dominate the rest.
eg:
--bb=f:bb1;bb2 will extract one function with both bb1 and bb2;
--bb=f:bb1 --bb=f:bb2 will extract two functions, one with bb1, one with bb2.
--delete - Delete specified Globals from Module
-f - Enable binary output on terminals
--func=<function> - Specify function to extract
--glob=<global> - Specify global to extract
--keep-const-init - Keep initializers of constants
-o <filename> - Specify output filename
--ralias=<ralias> - Specify alias(es) to extract using a regular expression
--recursive - Recursively extract all called functions
--rfunc=<rfunction> - Specify function(s) to extract using a regular expression
--rglob=<rglobal> - Specify global(s) to extract using a regular expression
llvm-lib
LLVM lib.exe compatible library tool
root@kali:~# man llvm-lib
LLVM-LIB(1) LLVM LLVM-LIB(1)
NAME
llvm-lib - LLVM lib.exe compatible library tool
SYNOPSIS
llvm-lib [/libpath:<path>] [/out:<output>] [/llvmlibthin] [/ignore]
[/machine] [/nologo] [files...]
DESCRIPTION
The llvm-lib command is intended to be a lib.exe compatible tool. See -
https://msdn.microsoft.com/en-us/library/7ykb2k5f for the general de-
scription.
llvm-lib has the following extensions:
o Bitcode files in symbol tables. llvm-lib includes symbols from both
bitcode files and regular object files in the symbol table.
o Creating thin archives. The /llvmlibthin option causes llvm-lib to
create thin archive that contain only the symbol table and the header
for the various members. These files are much smaller, but are not
compatible with link.exe (lld can handle them).
AUTHOR
Maintained by the LLVM Team (https://llvm.org/).
COPYRIGHT
2003-2025, LLVM Project
15 2025-03-14 LLVM-LIB(1)
llvm-link
LLVM bitcode linker
root@kali:~# llvm-link -h
OVERVIEW: llvm linker
USAGE: llvm-link [options] <input bitcode files>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Link Options:
--disable-debug-info-type-map - Don't use a uniquing type map for debug info
--disable-lazy-loading - Disable lazy module loading
-f - Enable binary output on terminals
--import=<function:filename> - Pair of function name and filename, where function should be imported from bitcode in filename
--internalize - Internalize linked symbols
-o <filename> - Override output filename
--only-needed - Link only needed symbols
--override=<filename> - input bitcode file which can override previously defined symbol(s)
--summary-index=<filename> - Module summary index filename
--suppress-warnings - Suppress all linking warnings
-v - Print information about actions taken
llvm-lto
root@kali:~# llvm-lto -h
OVERVIEW: llvm LTO linker
USAGE: llvm-lto [options] <input bitcode files>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
LTO Options:
-O <char> - Optimization level. [-O0, -O1, -O2, or -O3] (default = '-O2')
--check-for-objc - Only check if the module has objective-C defined in it
--disable-verify - Do not run the verifier during the optimization pipeline
--dso-symbol=<string> - Symbol to put in the symtab in the resulting dso
--exported-symbol=<string> - List of symbols to export from the resulting object file
-j <uint> - Number of backend threads
--list-dependent-libraries-only - Instead of running LTO, list the dependent libraries in each IR file
--list-symbols-only - Instead of running LTO, list the symbols in each IR file
--lto-freestanding - Enable Freestanding (disable builtins / TLI) during LTO
-o <filename> - Override output filename
--print-macho-cpu-only - Instead of running LTO, print the mach-o cpu in each IR file
--restore-linkage - Restore original linkage of globals prior to CodeGen
--save-linked-module - Write linked LTO module to file before optimize
--save-merged-module - Write merged LTO module to file before CodeGen
--set-merged-module - Use the first input module as the merged module
--thinlto - Only write combined global index for ThinLTO backends
--thinlto-action=<value> - Perform a single ThinLTO stage:
=thinlink - ThinLink: produces the index by linking only the summaries.
=distributedindexes - Produces individual indexes for distributed backends.
=emitimports - Emit imports files for distributed backends.
=promote - Perform pre-import promotion (requires -thinlto-index).
=import - Perform both promotion and cross-module importing (requires -thinlto-index).
=internalize - Perform internalization driven by -exported-symbol (requires -thinlto-index).
=optimize - Perform ThinLTO optimizations.
=codegen - CodeGen (expected to match llc)
=run - Perform ThinLTO end-to-end
--thinlto-cache-dir=<string> - Enable ThinLTO caching.
--thinlto-cache-entry-expiration=<uint> - Set ThinLTO cache entry expiration time.
--thinlto-cache-max-size-bytes=<ulong> - Set ThinLTO cache pruning directory maximum size in bytes.
--thinlto-cache-max-size-files=<int> - Set ThinLTO cache pruning directory maximum number of files.
--thinlto-cache-pruning-interval=<int> - Set ThinLTO cache pruning interval.
--thinlto-index=<string> - Provide the index produced by a ThinLink, required to perform the promotion and/or importing.
--thinlto-index-stats - Print statistic for the index in every input files
--thinlto-module-id=<string> - For the module ID for the file to process, useful to match what is in the index.
--thinlto-prefix-replace=<string> - Control where files for distributed backends are created. Expects 'oldprefix;newprefix' and if path prefix of output file is oldprefix it will be replaced with newprefix.
--thinlto-save-objects=<string> - Save ThinLTO generated object files using filenames created in the given directory.
--thinlto-save-temps=<string> - Save ThinLTO temp files using filenames created by adding suffixes to the given file path prefix.
--use-diagnostic-handler - Use a diagnostic handler to test the handler interface
llvm-lto2
root@kali:~# llvm-lto2 -h
Available subcommands: dump-symtab run
llvm-mc
Manual page for llvm-mc 19
root@kali:~# llvm-mc -h
OVERVIEW: llvm machine code playground
USAGE: llvm-mc [options] <input file>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
MC Options:
-I <directory> - Directory of include files
-M <string> - Disassembler options
--arch=<string> - Target arch to assemble for, see -version for available targets
Action to perform:
--as-lex - Lex tokens from a .s file
--assemble - Assemble a .s file (default)
--disassemble - Disassemble strings of hex bytes
--mdis - Marked up disassembly of strings of hex bytes
--cdis - Colored disassembly of strings of hex bytes
--compress-debug-sections=<value> - Choose DWARF debug sections compression:
=none - No compression
=zlib - Use zlib
=zstd - Use zstd
--defsym=<string> - Defines a symbol to be an integer constant
--fdebug-compilation-dir=<string> - Specifies the debug info's compilation dir
--fdebug-prefix-map=<= separated key-value pairs> - Map file source paths in debug info
--filetype=<value> - Choose an output file type:
=asm - Emit an assembly ('.s') file
=null - Don't emit anything (for timing purposes)
=obj - Emit a native object ('.o') file
-g - Generate dwarf debugging info for assembly source files
--large-code-model - Create cfi directives that assume the code might be more than 2gb away
--main-file-name=<string> - Specifies the name we should consider the input file
--masm-hexfloats - Enable MASM-style hex float initializers (3F800000r)
--masm-integers - Enable binary and hex masm integers (0b110 and 0ABCh)
--mattr=<a1,+a2,-a3,...> - Target specific attributes (-mattr=help for details)
--mcpu=<cpu-name> - Target a specific cpu type (-mcpu=help for details)
--motorola-integers - Enable binary and hex Motorola integers (%110 and $ABC)
-n - Don't assume assembly file starts in the text section
--no-exec-stack - File doesn't need an exec stack
-o <filename> - Output filename
--output-asm-variant=<uint> - Syntax variant to use for output printing
--position-independent - Position independent
--preserve-comments - Preserve Comments in outputted assembly
--print-imm-hex - Prefer hex format for immediate values
--show-encoding - Show instruction encodings
--show-inst - Show internal instruction representation
--show-inst-operands - Show instructions operands as parsed
--split-dwarf-file=<filename> - DWO output filename
--triple=<string> - Target triple to assemble for, see -version for available targets
llvm-mca
LLVM Machine Code Analyzer
root@kali:~# llvm-mca -h
OVERVIEW: llvm machine code performance analyzer.
USAGE: llvm-mca [options] <input file>
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Tool Options:
--dispatch=<uint> - Override the processor dispatch width
--instruction-tables - Print instruction tables
--iterations=<uint> - Number of iterations to run
--json - Print the output in json format
--lqueue=<uint> - Size of the load queue
--march=<string> - Target architecture. See -version for available targets
--mattr=<a1,+a2,-a3,...> - Target specific attributes (-mattr=help for details)
--mcpu=<cpu-name> - Target a specific cpu type (-mcpu=help for details)
--mtriple=<string> - Target triple. See -version for available targets
--noalias - If set, assume that loads and stores do not alias
-o <filename> - Output filename
--output-asm-variant=<int> - Syntax variant to use for output printing
--print-imm-hex - Prefer hex format when printing immediate values
--register-file-size=<uint> - Maximum number of physical registers which can be used for register mappings
--squeue=<uint> - Size of the store queue
View Options:
--all-stats - Print all hardware statistics
--all-views - Print all views including hardware statistics
--bottleneck-analysis - Enable bottleneck analysis (disabled by default)
--disable-cb - Disable custom behaviour (use the default class which does nothing).
--disable-im - Disable instrumentation manager (use the default class which ignores instruments.).
--dispatch-stats - Print dispatch statistics
--instruction-info - Print the instruction info view (enabled by default)
--register-file-stats - Print register file statistics
--resource-pressure - Print the resource pressure view (enabled by default)
--retire-stats - Print retire control unit statistics
--scheduler-stats - Print scheduler statistics
--show-barriers - Print memory barrier information in the instruction info view
--show-encoding - Print encoding information in the instruction info view
--skip-unsupported-instructions=<value> - Force analysis to continue in the presence of unsupported instructions
=none - Exit with an error when an instruction is unsupported for any reason (default)
=lack-sched - Skip instructions on input which lack scheduling information
=parse-failure - Skip lines on the input which fail to parse for any reason
=any - Skip instructions or lines on input which are unsupported for any reason
--timeline - Print the timeline view
--timeline-max-cycles=<uint> - Maximum number of cycles in the timeline view, or 0 for unlimited. Defaults to 80 cycles
--timeline-max-iterations=<uint> - Maximum number of iterations to print in timeline view
llvm-modextract
root@kali:~# llvm-modextract -h
OVERVIEW: Module extractor
USAGE: llvm-modextract [options] <input bitcode>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Modextract Options:
-b - Whether to perform binary extraction
-n <index> - Index of module to extract
-o <filename> - Output filename
llvm-mt
root@kali:~# llvm-mt -h
OVERVIEW: Manifest Tool
USAGE: llvm-mt [options] file...
OPTIONS:
/canonicalize: Not supported
/category Not supported
/check_for_duplicates: Not supported
/dll:dll Not supported
/hashupdate:file Not supported
/hashupdate Not supported
/identity:identity Not supported
/inputresource:file Not supported
/makecdfs: Not supported
/managedassemblyname:assembly
Not supported
/manifest manifest Used to specify each manifest that need to be processed
/nodependency Not supported
/nologo No effect as this tool never writes copyright data. Included for parity
/notify_update Exit with a special exit code if the output file has changed
/out:manifest Name of the output manifest. If this is skipped and only one manifest is being operated upon by the tool, that manifest is modified in place
/outputresource:file Not supported
/outputresource Not supported
/replacements:file Not supported
/rgs:script Not supported
/tlb:file Not supported
/updateresource:file Not supported
/validate_file_hashes: Not supported
/validate_manifest Not supported
/verbose Not supported
llvm-nm
List LLVM bitcode and object file’s symbol table
root@kali:~# llvm-nm -h
OVERVIEW: LLVM symbol table dumper
USAGE: llvm-nm [options] <input object files>
OPTIONS:
-A Alias for --print-file-name
-a Alias for --debug-syms
-B Alias for --format=bsd
-C Alias for --demangle
--debug-syms Show all symbols, even debugger only
--defined-only Show only defined symbols
--demangle Demangle C++ symbol names
--dynamic Display dynamic symbols instead of normal symbols
-D Alias for --dynamic
--export-symbols Export symbol list for all inputs
--extern-only Show only external symbols
--format=<format> Specify output format: bsd (default), posix, sysv, darwin, just-symbols
-f <format> Alias for --format
-g Alias for --extern-only
--help Display this help
-h Alias for --help
-j Alias for --format=just-symbols
--line-numbers Use debugging information to print symbols' filenames and line numbers
-l Alias for --line-numbers
-m Alias for --format=darwin
--no-demangle Don't demangle symbol names
--no-llvm-bc Disable LLVM bitcode reader
--no-sort Show symbols in order encountered
--no-weak Show only non-weak symbols
--numeric-sort Sort symbols by address
-n Alias for --numeric-sort
-o Alias for --print-file-name
--portability Alias for --format=posix
--print-armap Print the archive map
--print-file-name Precede each symbol with the object file it came from
--print-size Show symbol size as well as address
-P Alias for --format=posix
-p Alias for --no-sort
--quiet Suppress 'no symbols' diagnostic
--radix=<radix> Radix (o/d/x) for printing symbol Values
--reverse-sort Sort in reverse order
-r Alias for --reverse-sort
--size-sort Sort symbols by size
--special-syms Do not filter special symbols from the output
-S Alias for --print-size
-t <radix> Alias for --radix
--undefined-only Show only undefined symbols
-U Alias for --defined-only
-u Alias for --undefined-only
--version Display the version
-V Alias for --version
-v Alias for --numeric-sort
-W Alias for --no-weak
-X <value> Specifies the type of ELF, XCOFF, or IR object file to examine. The value must be one of: 32, 64, 32_64, any (default)
llvm-nm Mach-O Specific Options:
--add-dyldinfo Add symbols from the dyldinfo not already in the symbol table
--add-inlinedinfo Add symbols from the inlined libraries, TBD only
--arch=<value> architecture(s) from a Mach-O file to dump
--dyldinfo-only Show only symbols from the dyldinfo
--no-dyldinfo Don't add any symbols from the dyldinfo
-s Dump only symbols from this segment and section name
-x Print symbol entry in hex
llvm-nm XCOFF Specific Options:
--no-rsrc Exclude resource file symbols (__rsrc) from the export symbol list.
Pass @FILE as argument to read options from FILE.
llvm-objcopy
Object copying and editing tool
root@kali:~# llvm-objcopy -h
OVERVIEW: llvm-objcopy tool
USAGE: llvm-objcopy [options] input [output]
OPTIONS:
--add-gnu-debuglink=debug-file
Add a .gnu_debuglink for <debug-file>
--add-section=section=file
Add a section named <section> with the contents of <file>
--add-symbol=name=[section:]value[,flags]
Add new symbol <name> to .symtab. Accepted flags: global, local, weak, default, hidden, protected, file, section, object, function, indirect-function. Accepted but ignored for compatibility: debug, constructor, warning, indirect, synthetic, unique-object, before
--adjust-start <value> Alias for --change-start
--allow-broken-links Allow the tool to remove sections even if it would leave invalid section references. The appropriate sh_link fields will be set to zero.
--binary-architecture=<value>
Ignored for compatibility
-B <value> Alias for --binary-architecture
--change-section-lma=*{+|-}val
Shift LMA of non-zero-sized sections in the program header by <val>
--change-start=incr Add <incr> to the start address. Can be specified multiple times, all values will be applied cumulatively
--compress-debug-sections=format
Compress DWARF debug sections using specified format. Supported formats: zlib, zstd. Select zlib if <format> is omitted
--compress-sections=<section-glob>=<format>
Compress or decompress sections using specified format. Supported formats: zlib, zstd. Specify 'none' for decompression
--decompress-debug-sections
Decompress DWARF debug sections
--disable-deterministic-archives
Disable deterministic mode when operating on archives (use real values for UIDs, GIDs, and timestamps).
--discard-all Remove most local symbols. Different file formats may limit this to a subset. For ELF, file and section symbols are not discarded. Additionally, remove all debug sections
--discard-locals Remove local symbols starting with .L
--dump-section=section=file
Dump contents of section named <section> into file <file>
-D Alias for --enable-deterministic-archives
--enable-deterministic-archives
Enable deterministic mode when operating on archives (use zero for UIDs, GIDs, and timestamps).
--extract-dwo Remove all sections that are not DWARF .dwo sections from file
--extract-main-partition
Extract main partition from the input file
--extract-partition=name
Extract named partition from input file
-F <value> Alias for --target
--gap-fill=value Fill the gaps between sections with <value> instead of zero. <value> must be an unsigned 8-bit integer. This option is only supported for ELF input and binary output
--globalize-symbol=symbol
Mark <symbol> as global
--globalize-symbols=filename
Read a list of symbols from <filename> and mark defined symbols with those names as global
-G <value> Alias for --keep-global-symbol
-g Alias for --strip-debug
--input-target=format Read the input as the specified format
-I <value> Alias for --input-target
-j <value> Alias for --only-section
--keep-file-symbols Keep symbols of type STT_FILE, even if they would otherwise be stripped
--keep-global-symbol=symbol
Mark all symbols local, except for symbols with the name <symbol>. Can be specified multiple times to ignore multiple symbols
--keep-global-symbols=filename
Read a list of symbols from <filename> and run as if --keep-global-symbol=<symbol> is set for each one. <filename> contains one symbol per line and may contain comments beginning with '#'. Leading and trailing whitespace is stripped from each line. May be repeated to read symbols from many files
--keep-section=section Keep <section>
--keep-symbol=symbol When removing symbols, do not remove <symbol>
--keep-symbols=filename Read a list of symbols from <filename> and run as if --keep-symbol=<symbol> is set for each one. <filename> contains one symbol per line and may contain comments beginning with '#'. Leading and trailing whitespace is stripped from each line. May be repeated to read symbols from many files
-K <value> Alias for --keep-symbol
--localize-hidden Mark all symbols that have hidden or internal visibility as local
--localize-symbol=symbol
Mark any defined non-common symbol named <symbol> as local
--localize-symbols=filename
Read a list of names from <filename> and mark any defined non-common symbols with those names as local
-L <value> Alias for --localize-symbol
--new-symbol-visibility=<value>
Specify the visibility of symbols automatically created when using binary input or --add-symbol. The default is 'default'
--no-verify-note-sections
Don't validate note sections
-N <value> Alias for --strip-symbol
--only-keep-debug Produce a debug file as the output that only preserves contents of sections useful for debugging purposes
--only-section=section Remove all but <section>
--output-target=format Write the output as the specified format
-O <value> Alias for --output-target
--pad-to=address Pad the output up to the load address <address>, using a value of zero or the value specified by the --gap-fill option. This option is only supported for ELF input and binary output
--prefix-alloc-sections=prefix
Add <prefix> to the start of every allocated section name
--prefix-symbols=prefix Add <prefix> to the start of every symbol name
--preserve-dates Preserve access and modification timestamps
-p Alias for --preserve-dates
--redefine-sym=old=new Change the name of a symbol old to new
--redefine-syms=filename
Read a list of symbol pairs from <filename> and run as if --redefine-sym=<old>=<new> is set for each one. <filename> contains two symbols per line separated with whitespace and may contain comments beginning with '#'. Leading and trailing whitespace is stripped from each line. May be repeated to read symbols from many files
--regex Permit regular expressions in name comparison
--remove-section=section
Remove <section>
--remove-symbol-prefix=prefix
Remove <prefix> from the start of every symbol name. No-op for symbols that do not start with <prefix>
--rename-section=old=new[,flag1,...]
Rename sections called <old> to <new>, and apply any specified <flag> values. See --set-section-flags for a list of supported flags
-R <value> Alias for --remove-section
--set-section-alignment=section=align
Set alignment for a given section
--set-section-flags=section=flag1[,flag2,...]
Set section properties based on the specified <flags>. Supported flag names are: alloc, load, noload, readonly, exclude, debug, code, data, rom, share, contents, merge, strings, large
--set-section-type=section=type
Set the type of section <section> to the integer <type>
--set-start=addr Set the start address to <addr>. Overrides any previous --change-start or --adjust-start values
--set-symbol-visibility=symbol=visibility
Change the visibility of a symbol to the specified value
--set-symbols-visibility=filename=visibility
Read a list of symbols from <filename> and change their visibility to the specified value. Visibility values: default, internal, hidden, protected
--skip-symbol=symbol Do not change parameters of symbol <symbol> when executing other options that can change the symbol's name, binding or visibility
--skip-symbols=filename Read a list of symbols from <filename> and run as if --skip-symbol=<symbol> is set for each one. <filename> contains one symbol per line and may contain comments beginning with '#'. Leading and trailing whitespace is stripped from each line. May be repeated to read symbols from many files
--split-dwo=dwo-file Equivalent to --extract-dwo and <dwo-file> as the output file and no other options, and then --strip-dwo on the input file
--strip-all-gnu Remove all symbols, debug sections and relocations. Compatible with GNU's --strip-all
--strip-all For ELF, remove all symbols and non-alloc sections not within segments, except for .gnu.warning*, .ARM.attribute, and the section name table. For COFF and Mach-O, remove all symbols, debug sections, and relocations
--strip-debug Remove all debug sections
--strip-dwo Remove all DWARF .dwo sections
--strip-non-alloc Remove all non-allocated sections that are not within segments
--strip-sections Remove all section headers and all section data not within segments
--strip-symbol=symbol Strip <symbol>
--strip-symbols=filename
Remove all symbols whose names appear in the file <filename>
--strip-unneeded-symbol=symbol
Remove all symbols named <symbol> that are local or undefined and are not required by any relocation
--strip-unneeded-symbols=filename
Remove all symbols whose names appear in the file <file>, if they are local or undefined and are not required by any relocation
--strip-unneeded Remove all symbols not needed by relocations
-S Alias for --strip-all
--target=<value> Equivalent to --input-target and --output-target for the specified format
--update-section=name=file
Replace the contents of section <name> with contents from a file <file>
-U Alias for --disable-deterministic-archives
--verify-note-sections Validate note sections
--version Print the version and exit.
-V Alias for --version
--weaken-symbol=symbol Mark global symbols named <symbol> as weak
--weaken-symbols=filename
Read a list of symbols from <filename> and mark global symbols with those names as weak
--weaken Mark all defined global symbols as weak
--wildcard Allow wildcard syntax for symbol-related flags. Incompatible with --regex. Allows using '*' to match any number of characters, '?' to match any single character, '' to escape special characters, and '[]' to define character classes. Wildcards beginning with '!' will prevent a match, for example "-N '*' -N '!x'" will strip all symbols except for "x".
-W <value> Alias for --weaken-symbol
-w Alias for --wildcard
-X Alias for --discard-locals
-x Alias for --discard-all
OPTIONS (COFF specific):
--subsystem=name[:version]
Set the PE subsystem, and optionally subsystem version
OPTIONS (Mach-O specific):
--keep-undefined Do not remove undefined symbols
Pass @FILE as argument to read options from FILE.
llvm-objdump
Manual page for llvm-objdump 19
root@kali:~# llvm-objdump --help
OVERVIEW: llvm object file dumper
USAGE: llvm-objdump [options] <input object files>
OPTIONS:
--adjust-vma=offset Increase the displayed address by the specified offset
--all-headers Display all available header information, relocation entries and the symbol table
--arch-name=<value> Target arch to disassemble for, see --version for available targets
--archive-headers Display archive header information
-a Alias for --archive-headers
--build-id=<hex> Build ID to look up. Once found, added as an input file
-C Alias for --demangle
--debug-file-directory=<dir>
Path to directory where to look for debug files
--debug-vars-indent=<value>
Distance to indent the source-level variable display, relative to the start of the disassembly
--debug-vars=<value> Print the locations (in registers or memory) of source-level variables alongside disassembly. Supported formats: ascii, unicode (default)
--debuginfod Use debuginfod to find debug files
--demangle Demangle symbol names
--disassemble-all Disassemble all sections found in the input files
--disassemble-symbols=<value>
List of symbols to disassemble. Accept demangled names when --demangle is specified, otherwise accept mangled names
--disassemble-zeroes Do not skip blocks of zeroes when disassembling
--disassembler-color=mode
Enable or disable disassembler color output. Valid options are "on", "off" and "terminal" (default)
--disassembler-options=options
Pass target specific disassembler options
--disassemble Disassemble all executable sections found in the input files
--dwarf=<value> Dump the specified DWARF debug sections. The only supported value is 'frames'
--dynamic-reloc Display the dynamic relocation entries in the file
--dynamic-syms Display the contents of the dynamic symbol table
-D Alias for --disassemble-all
-d Alias for --disassemble
--fault-map-section Display the content of the fault map section
--file-headers Display the contents of the overall file header
--full-contents Display the content of each section
-f Alias for --file-headers
--headers Alias for --section-headers
--help Display available options (--help-hidden for more)
-h Alias for --section-headers
-j <value> Alias for --section
--line-numbers When disassembling, display source line numbers. Implies --disassemble
-l Alias for --line-numbers
--macho Use MachO specific object file parser
--mattr=a1,+a2,-a3,... Target specific attributes (--mattr=help for details)
--mcpu=cpu-name Target a specific cpu type (--mcpu=help for details)
-mllvm <arg> Specify an argument to forward to LLVM's CommandLine library
-M <value> Alias for --disassembler-options=
-m Alias for --macho
--no-addresses Alias for --no-leading-addr
--no-debuginfod Don't use debuginfod to find debug files
--no-leading-addr When disassembling, do not print leading addresses for instructions or inline relocations
--no-print-imm-hex Do not use hex format for immediate values
--no-show-raw-insn When disassembling instructions, do not print the instruction bytes.
--offloading Display the content of the offloading section
--prefix-strip=prefix Strip out initial directories from absolute paths. No effect without --prefix
--prefix=prefix Add prefix to absolute paths
--pretty-pgo-analysis-map
Display PGO analysis values with formatting rather than raw numbers
--print-imm-hex Use hex format for immediate values (default)
--private-headers Display format specific file headers
-p Alias for --private-headers
--raw-clang-ast Dump the raw binary contents of the clang AST section
--reloc Display the relocation entries in the file
-R Alias for --dynamic-reloc
-r Alias for --reloc
--section-headers Display summaries of the headers for each section.
--section=<value> Operate on the specified sections only. With --macho dump segment,section
--show-all-symbols Show all symbols during disassembly, even if multiple symbols are defined at the same location
--show-lma Display LMA column when dumping ELF section headers
--source When disassembling, display source interleaved with the disassembly. Implies --disassemble
--start-address=address Set the start address for disassembling, printing relocations and printing symbols
--stop-address=address Set the stop address for disassembling, printing relocations and printing symbols
--symbol-description Add symbol description for disassembly. This option is for XCOFF files only
--symbolize-operands Symbolize instruction operands when disassembling
--syms Display the symbol table
-S Alias for --source
-s Alias for --full-contents
--traceback-table Decode traceback table in disassembly. Implies --disassemble. This option is for XCOFF files only
--triple=<value> Target triple to disassemble for, see --version for available targets
-T Alias for --dynamic-syms
-t Alias for --syms
--unwind-info Display unwind information
-u Alias for --unwind-info
--version Display the version of this program
-v Alias for --version
--wide Ignored for compatibility with GNU objdump
--x86-asm-syntax=att Emit AT&T-style disassembly
--x86-asm-syntax=intel Emit Intel-style disassembly
-x Alias for --all-headers
-z Alias for --disassemble-zeroes
llvm-objdump MachO Specific Options:
--arch=<value> architecture(s) from a Mach-O file to dump
--archive-member-offsets
Print the offset to each archive member for Mach-O archives (requires --macho and --archive-headers)
--bind Display mach-o binding info
--chained-fixups Print chained fixup information (requires --macho)
--data-in-code Print the data in code table for Mach-O objects (requires --macho)
--dis-symname <value> disassemble just this symbol's instructions (requires --macho)
--dsym=<value> Use .dSYM file for debug info
--dyld-info Print bind and rebase information used by dyld to resolve external references in a final linked binary (requires --macho)
--dylib-id Print the shared library's id for the dylib Mach-O file (requires --macho)
--dylibs-used Print the shared libraries used for linked Mach-O files (requires --macho)
--exports-trie Display mach-o exported symbols
--full-leading-addr Print full leading address
--function-starts=<value>
Print the function starts table for Mach-O objects. Options: addrs (default), names, both (requires --macho)
-g Print line information from debug info if available
--indirect-symbols Print indirect symbol table for Mach-O objects (requires --macho)
--info-plist Print the info plist section as strings for Mach-O objects (requires --macho)
--lazy-bind Display mach-o lazy binding info
--link-opt-hints Print the linker optimization hints for Mach-O objects (requires --macho)
--no-leading-headers Print no leading headers
--no-symbolic-operands do not symbolic operands when disassembling (requires --macho)
--non-verbose Print the info for Mach-O objects in non-verbose or numeric form (requires --macho)
--objc-meta-data Print the Objective-C runtime meta data for Mach-O files (requires --macho)
--private-header Display only the first format specific file header
--rebase Display mach-o rebasing info
--rpaths Print the runtime search paths for the Mach-O file (requires --macho)
--universal-headers Print Mach-O universal headers (requires --macho)
--weak-bind Display mach-o weak binding info
Pass @FILE as argument to read options from FILE.
llvm-opt-report
Llvm-opt-report-18 (1) - generate optimization report from YAML
root@kali:~# llvm-opt-report -h
OVERVIEW: A tool to generate an optimization report from YAML optimization record files.
USAGE: llvm-opt-report [options] <input>
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-opt-report options:
--format=<string> - The format of the remarks.
--no-demangle - Don't demangle function names
-o <string> - Output file
-r <string> - Root for relative input paths
-s - Don't include vectorization factors, etc.
llvm-pdbutil
PDB File forensics and diagnostics
root@kali:~# llvm-pdbutil -h
OVERVIEW: LLVM PDB Dumper
USAGE: llvm-pdbutil [subcommand] [options]
SUBCOMMANDS:
bytes - Dump raw bytes from the PDB file
diadump - Dump debug information using a DIA-like API
dump - Dump MSF and CodeView debug info
explain - Explain the meaning of a file offset
export - Write binary data from a stream to a file
merge - Merge multiple PDBs into a single PDB
pdb2yaml - Generate a detailed YAML description of a PDB File
pretty - Dump semantic information about types and symbols
yaml2pdb - Generate a PDB file from a YAML description
Type "llvm-pdbutil <subcommand> --help" to get more help on a specific subcommand
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-profdata
Profile data tool
root@kali:~# llvm-profdata -h
OVERVIEW: LLVM profile data
USAGE: llvm-profdata [subcommand] [options]
SUBCOMMANDS:
merge - Takes several profiles and merge them together. See detailed documentation in https://llvm.org/docs/CommandGuide/llvm-profdata.html#profdata-merge
order - Reads temporal profiling traces from a profile and outputs a function order that reduces the number of page faults for those traces. See detailed documentation in https://llvm.org/docs/CommandGuide/llvm-profdata.html#profdata-order
overlap - Computes and displays the overlap between two profiles. See detailed documentation in https://llvm.org/docs/CommandGuide/llvm-profdata.html#profdata-overlap
show - Takes a profile data file and displays the profiles. See detailed documentation in https://llvm.org/docs/CommandGuide/llvm-profdata.html#profdata-show
Type "llvm-profdata <subcommand> --help" to get more help on a specific subcommand
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
--aarch64-neon-syntax=<value> - Choose style of NEON code to emit from AArch64 backend:
=generic - Emit generic NEON assembly
=apple - Emit Apple-style NEON assembly
--aarch64-use-aa - Enable the use of AA during codegen.
--abort-on-max-devirt-iterations-reached - Abort when the max iterations for devirtualization CGSCC repeat pass is reached
--allow-ginsert-as-artifact - Allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
--amdgpu-atomic-optimizer-strategy=<value> - Select DPP or Iterative strategy for scan
=DPP - Use DPP operations for scan
=Iterative - Use Iterative approach for scan
=None - Disable atomic optimizer
--amdgpu-bypass-slow-div - Skip 64-bit divide for dynamic 32-bit values
--amdgpu-disable-loop-alignment - Do not align and prefetch loops
--amdgpu-dpp-combine - Enable DPP combiner
--amdgpu-dump-hsa-metadata - Dump AMDGPU HSA Metadata
--amdgpu-enable-merge-m0 - Merge and hoist M0 initializations
--amdgpu-enable-power-sched - Enable scheduling to minimize mAI power bursts
--amdgpu-kernarg-preload-count=<uint> - How many kernel arguments to preload onto SGPRs
--amdgpu-promote-alloca-to-vector-limit=<uint> - Maximum byte size to consider promote alloca to vector
--amdgpu-sdwa-peephole - Enable SDWA peepholer
--amdgpu-use-aa-in-codegen - Enable the use of AA during codegen.
--amdgpu-verify-hsa-metadata - Verify AMDGPU HSA Metadata
--amdgpu-vgpr-index-mode - Use GPR indexing mode instead of movrel for vector indexing
--arm-add-build-attributes -
--arm-implicit-it=<value> - Allow conditional instructions outdside of an IT block
=always - Accept in both ISAs, emit implicit ITs in Thumb
=never - Warn in ARM, reject in Thumb
=arm - Accept in ARM, reject in Thumb
=thumb - Warn in ARM, emit implicit ITs in Thumb
--asm-show-inst - Emit internal instruction representation to assembly file
--atomic-counter-update-promoted - Do counter update using atomic fetch add for promoted counters only
--atomic-first-counter - Use atomic fetch add for first counter in a function (usually the entry counter)
--bounds-checking-single-trap - Use one trap block per function
--bounds-checking-unique-traps - Always use one trap per check
--bpf-stack-size=<int> - Specify the BPF stack size limit
--cfg-hide-cold-paths=<number> - Hide blocks with relative frequency below the given value
--cfg-hide-deoptimize-paths -
--cfg-hide-unreachable-paths -
--check-functions-filter=<regex> - Only emit checks for arguments of functions whose names match the given regular expression
--cost-kind=<value> - Target cost kind
=throughput - Reciprocal throughput
=latency - Instruction latency
=code-size - Code size
=size-latency - Code size and latency
--crel - Use CREL relocation format for ELF
--cs-profile-generate - Perform context sensitive PGO instrumentation
--cs-profile-path=<string> - Context sensitive profile file path
--debug-info-correlate - Use debug info to correlate profiles. (Deprecated, use -profile-correlate=debug-info)
--debugify-func-limit=<ulong> - Set max number of processed functions per pass.
--debugify-level=<value> - Kind of debug info to add
=locations - Locations only
=location+variables - Locations and Variables
--debugify-quiet - Suppress verbose debugify output
--disable-auto-upgrade-debug-info - Disable autoupgrade of debug info
--disable-i2p-p2i-opt - Disables inttoptr/ptrtoint roundtrip optimization
--disable-promote-alloca-to-lds - Disable promote alloca to LDS
--disable-promote-alloca-to-vector - Disable promote alloca to vector
--do-counter-promotion - Do counter register promotion
--dot-cfg-mssa=<file name for generated dot file> - file name for generated dot file
--dwarf-version=<int> - Dwarf version
--dwarf64 - Generate debugging info in the 64-bit DWARF format
--emit-compact-unwind-non-canonical - Whether to try to emit Compact Unwind for non canonical entries.
--emit-dwarf-unwind=<value> - Whether to emit DWARF EH frame entries.
=always - Always emit EH frame entries
=no-compact-unwind - Only emit EH frame entries when compact unwind is not available
=default - Use target platform default
--emscripten-cxx-exceptions-allowed=<string> - The list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
--enable-cse-in-irtranslator - Should enable CSE in irtranslator
--enable-cse-in-legalizer - Should enable CSE in Legalizer
--enable-emscripten-cxx-exceptions - WebAssembly Emscripten-style exception handling
--enable-emscripten-sjlj - WebAssembly Emscripten-style setjmp/longjmp handling
--enable-gvn-hoist - Enable the GVN hoisting pass (default = off)
--enable-gvn-memdep -
--enable-gvn-sink - Enable the GVN sinking pass (default = off)
--enable-jump-table-to-switch - Enable JumpTableToSwitch pass (default = off)
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loop-simplifycfg-term-folding -
--enable-name-compression - Enable name/filename string compression
--enable-pgo-force-function-attrs - Enable pass to set function attributes based on PGO profiles
--enable-split-backedge-in-load-pre -
--enable-split-loopiv-heuristic - Enable loop iv regalloc heuristic
--enable-vtable-profile-use - If ThinLTO and WPD is enabled and this option is true, vtable profiles will be used by ICP pass for more efficient indirect call sequence. If false, type profiles won't be used.
--enable-vtable-value-profiling - If true, the virtual table address will be instrumented to know the types of a C++ pointer. The information is used in indirect call promotion to do selective vtable-based comparison.
--expand-variadics-override=<value> - Override the behaviour of expand-variadics
=unspecified - Use the implementation defaults
=disable - Disable the pass entirely
=optimize - Optimise without changing ABI
=lowering - Change variadic calling convention
--experimental-debug-variable-locations - Use experimental new value-tracking variable locations
--experimental-debuginfo-iterators - Enable communicating debuginfo positions through iterators, eliminating intrinsics. Has no effect if --preserve-input-debuginfo-format=true.
--fatal-warnings - Treat warnings as errors
--fdpic - Use the FDPIC ABI
--force-tail-folding-style=<value> - Force the tail folding style
=none - Disable tail folding
=data - Create lane mask for data only, using active.lane.mask intrinsic
=data-without-lane-mask - Create lane mask with compare/stepvector
=data-and-control - Create lane mask using active.lane.mask intrinsic, and use it for both data and control flow
=data-and-control-without-rt-check - Similar to data-and-control, but remove the runtime check
=data-with-evl - Use predicated EVL instructions for tail folding. If EVL is unsupported, fallback to data-without-lane-mask.
--fs-profile-debug-bw-threshold=<uint> - Only show debug message if the source branch weight is greater than this value.
--fs-profile-debug-prob-diff-threshold=<uint> - Only show debug message if the branch probility is greater than this value (in percentage).
--generate-merged-base-profiles - When generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
--gpsize=<uint> - Global Pointer Addressing Size. The default size is 8.
--hash-based-counter-split - Rename counter variable of a comdat function based on cfg hash
--hexagon-add-build-attributes -
--hexagon-rdf-limit=<uint> -
--hot-cold-split - Enable hot-cold splitting pass
--hwasan-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--hwasan-random-rate=<number> - Probability value in the range [0.0, 1.0] to keep instrumentation of a function.
--import-all-index - Import all external functions in index.
--incremental-linker-compatible - When used with filetype=obj, emit an object file which can be used with an incremental linker
--instcombine-code-sinking - Enable code sinking
--instcombine-guard-widening-window=<uint> - How wide an instruction window to bypass looking for another guard
--instcombine-max-num-phis=<uint> - Maximum number phis to handle in intptr/ptrint folding
--instcombine-max-sink-users=<uint> - Maximum number of undroppable users for instruction sinking
--instcombine-maxarray-size=<uint> - Maximum array size considered when doing a combine
--instcombine-negator-enabled - Should we attempt to sink negations?
--instcombine-negator-max-depth=<uint> - What is the maximal lookup depth when trying to check for viability of negation sinking.
--instrprof-atomic-counter-update-all - Make all profile counter updates atomic (for testing only)
--internalize-public-api-file=<filename> - A file containing list of symbol names to preserve
--internalize-public-api-list=<list> - A list of symbol names to preserve
--iterative-counter-promotion - Allow counter promotion across the whole loop nest.
--lint-abort-on-error - In the Lint pass, abort on errors.
--lower-allow-check-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--lower-allow-check-random-rate=<number> - Probability value in the range [0.0, 1.0] of unconditional pseudo-random checks.
--lto-aix-system-assembler=<path> - Path to a system assembler, picked up on AIX only
--lto-embed-bitcode=<value> - Embed LLVM bitcode in object files produced by LTO
=none - Do not embed
=optimized - Embed after all optimization passes
=post-merge-pre-opt - Embed post merge, but before optimizations
--lto-pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--lto-pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--lto-pass-remarks-output=<filename> - Output filename for pass remarks
--matrix-default-layout=<value> - Sets the default matrix layout
=column-major - Use column-major layout
=row-major - Use row-major layout
--matrix-print-after-transpose-opt -
--max-counter-promotions=<int> - Max number of allowed counter promotions
--max-counter-promotions-per-loop=<uint> - Max number counter promotions per loop to avoid increasing register pressure too much
--mc-relax-all - When used with filetype=obj, relax all fixups in the emitted object file
--mcabac - tbd
--merror-missing-parenthesis - Error for missing parenthesis around predicate registers
--merror-noncontigious-register - Error for register names that aren't contigious
--mhvx - Enable Hexagon Vector eXtensions
--mhvx=<value> - Enable Hexagon Vector eXtensions
=v60 - Build for HVX v60
=v62 - Build for HVX v62
=v65 - Build for HVX v65
=v66 - Build for HVX v66
=v67 - Build for HVX v67
=v68 - Build for HVX v68
=v69 - Build for HVX v69
=v71 - Build for HVX v71
=v73 - Build for HVX v73
--mips-compact-branches=<value> - MIPS Specific: Compact branch policy.
=never - Do not use compact branches if possible.
=optimal - Use compact branches where appropriate (default).
=always - Always use compact branches if possible.
--mips16-constant-islands - Enable mips16 constant islands.
--mips16-hard-float - Enable mips16 hard float.
--mir-strip-debugify-only - Should mir-strip-debug only strip debug info from debugified modules by default
--misexpect-tolerance=<uint> - Prevents emitting diagnostics when profile counts are within N% of the threshold..
--mno-compound - Disable looking for compound instructions for Hexagon
--mno-fixup - Disable fixing up resolved relocations for Hexagon
--mno-ldc1-sdc1 - Expand double precision loads and stores to their single precision counterparts
--mno-pairing - Disable looking for duplex instructions for Hexagon
--mwarn-missing-parenthesis - Warn for missing parenthesis around predicate registers
--mwarn-noncontigious-register - Warn for register names that arent contigious
--mwarn-sign-mismatch - Warn for mismatching a signed and unsigned value
--no-deprecated-warn - Suppress all deprecated warnings
--no-discriminators - Disable generation of discriminator information.
--no-type-check - Suppress type errors (Wasm)
--no-warn - Suppress all warnings
--nvptx-sched4reg - NVPTX Specific: schedule for register pressue
--object-size-offset-visitor-max-visit-instructions=<uint> - Maximum number of instructions for ObjectSizeOffsetVisitor to look at
--pgo-block-coverage - Use this option to enable basic block coverage instrumentation
--pgo-temporal-instrumentation - Use this option to enable temporal instrumentation
--pgo-view-block-coverage-graph - Create a dot file of CFGs with block coverage inference information
--poison-checking-function-local - Check that returns are non-poison (for testing)
--print-pipeline-passes - Print a '-passes' compatible string describing the pipeline (best-effort only).
--profile-correlate=<value> - Use debug info or binary file to correlate profiles.
=<empty> - No profile correlation
=debug-info - Use debug info to correlate
=binary - Use binary to correlate
--promote-alloca-vector-loop-user-weight=<uint> - The bonus weight of users of allocas within loop when sorting profitable allocas
--r600-ir-structurize - Use StructurizeCFG IR pass
--riscv-add-build-attributes -
--riscv-use-aa - Enable the use of AA during codegen.
--runtime-counter-relocation - Enable relocating counters at runtime.
--safepoint-ir-verifier-print-only -
--sample-profile-check-record-coverage=<N> - Emit a warning if less than N% of records in the input profile are matched to the IR.
--sample-profile-check-sample-coverage=<N> - Emit a warning if less than N% of samples in the input profile are matched to the IR.
--sample-profile-max-propagate-iterations=<uint> - Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
--sampled-instr-burst-duration=<uint> - Set the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. This number of samples will be recorded for each 'sampled-instr-period' count update. Setting to 1 enables simple sampling, in which case it is recommended to set 'sampled-instr-period' to a prime number.
--sampled-instr-period=<uint> - Set the profile instrumentation sample period. For each sample period, a fixed number of consecutive samples will be recorded. The number is controlled by 'sampled-instr-burst-duration' flag. The default sample period of 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow.
--sampled-instrumentation - Do PGO instrumentation sampling
--save-temp-labels - Don't discard temporary labels
--skip-ret-exit-block - Suppress counter promotion if exit blocks contain ret.
--speculative-counter-promotion-max-exiting=<uint> - The max number of exiting blocks of a loop to allow speculative counter promotion
--speculative-counter-promotion-to-loop - When the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
--summary-file=<string> - The summary file to use for function importing.
--sve-tail-folding=<string> - Control the use of vectorisation using tail-folding for SVE where the option is specified in the form (Initial)[+(Flag1|Flag2|...)]:
disabled (Initial) No loop types will vectorize using tail-folding
default (Initial) Uses the default tail-folding settings for the target CPU
all (Initial) All legal loop types will vectorize using tail-folding
simple (Initial) Use tail-folding for simple loops (not reductions or recurrences)
reductions Use tail-folding for loops containing reductions
noreductions Inverse of above
recurrences Use tail-folding for loops containing fixed order recurrences
norecurrences Inverse of above
reverse Use tail-folding for loops requiring reversed predicates
noreverse Inverse of above
--tail-predication=<value> - MVE tail-predication pass options
=disabled - Don't tail-predicate loops
=enabled-no-reductions - Enable tail-predication, but not for reduction loops
=enabled - Enable tail-predication, including reduction loops
=force-enabled-no-reductions - Enable tail-predication, but not for reduction loops, and force this which might be unsafe
=force-enabled - Enable tail-predication, including reduction loops, and force this which might be unsafe
--thinlto-assume-merged - Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
--threads=<int> -
--type-based-intrinsic-cost - Calculate intrinsics cost based only on argument types
--use-undef - Use undef when generating programs.
--verify-region-info - Verify region info (time consuming)
--vp-counters-per-site=<number> - The average number of profile counters allocated per value profiling site.
--vp-static-alloc - Do static counter allocation for value profiler
--wasm-enable-eh - WebAssembly exception handling
--wasm-enable-exnref - WebAssembly exception handling (exnref)
--wasm-enable-sjlj - WebAssembly setjmp/longjmp handling
--write-experimental-debuginfo - Write debug info in the new non-intrinsic format. Has no effect if --preserve-input-debuginfo-format=true.
--x86-align-branch=<string> - Specify types of branches to align (plus separated list of types):
jcc indicates conditional jumps
fused indicates fused conditional jumps
jmp indicates direct unconditional jumps
call indicates direct and indirect calls
ret indicates rets
indirect indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint> - Control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches.
--x86-branches-within-32B-boundaries - Align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
--x86-pad-max-prefix-size=<uint> - Maximum number of prefixes to use for padding
--x86-relax-relocations - Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF
--x86-sse2avx - Specify that the assembler should encode SSE instructions with VEX prefix
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Polly Options:
Configure the polly loop optimizer
--polly - Enable the polly optimizer (with -O1, -O2 or -O3)
--polly-2nd-level-tiling - Enable a 2nd level loop of loop tiling
--polly-ast-print-accesses - Print memory access functions
--polly-context=<isl parameter set> - Provide additional constraints on the context parameters
--polly-dce-precise-steps=<int> - The number of precise steps between two approximating iterations. (A value of -1 schedules another approximation stage before the actual dead code elimination.
--polly-delicm-max-ops=<int> - Maximum number of isl operations to invest for lifetime analysis; 0=no limit
--polly-detect-full-functions - Allow the detection of full functions
--polly-dump-after - Dump module after Polly transformations into a file suffixed with "-after"
--polly-dump-after-file=<string> - Dump module after Polly transformations to the given file
--polly-dump-before - Dump module before Polly transformations into a file suffixed with "-before"
--polly-dump-before-file=<string> - Dump module before Polly transformations to the given file
--polly-enable-simplify - Simplify SCoP after optimizations
--polly-ignore-func=<string> - Ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided.
--polly-isl-arg=<argument> - Option passed to ISL
--polly-matmul-opt - Perform optimizations of matrix multiplications based on pattern matching
--polly-on-isl-error-abort - Abort if an isl error is encountered
--polly-only-func=<string> - Only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided.
--polly-only-region=<identifier> - Only run on certain regions (The provided identifier must appear in the name of the region's entry block
--polly-only-scop-detection - Only run scop detection, but no other optimizations
--polly-optimized-scops - Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree
--polly-parallel - Generate thread parallel code (isl codegen only)
--polly-parallel-force - Force generation of thread parallel code ignoring any cost model
--polly-pattern-matching-based-opts - Perform optimizations based on pattern matching
--polly-postopts - Apply post-rescheduling optimizations such as tiling (requires -polly-reschedule)
--polly-pragma-based-opts - Apply user-directed transformation from metadata
--polly-pragma-ignore-depcheck - Skip the dependency check for pragma-based transformations
--polly-process-unprofitable - Process scops that are unlikely to benefit from Polly optimizations.
--polly-register-tiling - Enable register tiling
--polly-report - Print information about the activities of Polly
--polly-reschedule - Optimize SCoPs using ISL
--polly-show - Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions)
--polly-show-only - Highlight the code regions that will be optimized in a (CFG only BBs)
--polly-stmt-granularity=<value> - Algorithm to use for splitting basic blocks into multiple statements
=bb - One statement per basic block
=scalar-indep - Scalar independence heuristic
=store - Store-level granularity
--polly-tc-opt - Perform optimizations of tensor contractions based on pattern matching
--polly-tiling - Enable loop tiling
--polly-vectorizer=<value> - Select the vectorization strategy
=none - No Vectorization
=stripmine - Strip-mine outer loops for the loop-vectorizer to trigger
llvm-ranlib
Manual page for llvm-ranlib 19
root@kali:~# llvm-ranlib -h
OVERVIEW: LLVM ranlib
Generate an index for archives
USAGE: llvm-ranlib archive...
OPTIONS:
-h --help - Display available options
-V --version - Display the version of this program
-D - Use zero for timestamps and uids/gids (default)
-U - Use actual timestamps and uids/gids
-X{32|64|32_64|any} - Specify which archive symbol tables should be generated if they do not already exist (AIX OS only)
llvm-rc
root@kali:~# llvm-rc -h
OVERVIEW: LLVM Resource Converter
USAGE: llvm-rc [options] file...
OPTIONS:
/? Display this help and exit.
/C <value> Set the codepage used for input strings.
/dry-run Don't compile the input; only try to parse it.
/D <value> Define a symbol for the C preprocessor.
/FO <value> Change the output file location.
/H Display this help and exit.
/I <value> Add an include path.
/LN <value> Set the default language name.
/L <value> Set the default language identifier.
/no-preprocess Don't try to preprocess the input file.
/N Null-terminate all strings in the string table.
/U <value> Undefine a symbol for the C preprocessor.
/V Be verbose.
/X Ignore 'include' variable.
/Y Suppress warnings on duplicate resource IDs.
llvm-readelf
GNU-style LLVM Object Reader
root@kali:~# llvm-readelf --help
OVERVIEW: LLVM Object Reader
USAGE: llvm-readelf [options] <input object files>
OPTIONS:
--addrsig Display address-significance table
--all Equivalent to setting: --file-header, --program-headers, --section-headers, --symbols, --relocations, --dynamic-table, --notes, --version-info, --unwind, --section-groups and --histogram
--arch-specific Display architecture-specific information
-A Alias for --arch-specific
-a Alias for --all
--bb-addr-map Display the BB address map section
--cg-profile Display call graph profile section
-C Alias for --demangle
--decompress Dump decompressed section content when used with -x or -p
--demangle Demangle symbol names
--dependent-libraries Display the dependent libraries section
--dt Alias for --dyn-syms
--dyn-relocations Display the dynamic relocation entries in the file
--dyn-symbols Alias for --dyn-syms
--dyn-syms Display the dynamic symbol table
--dynamic Alias for --dynamic-table
--expand-relocs Expand each shown relocation to multiple lines
--extra-sym-info Display extra information when showing symbols
-e Alias for --headers
--file-header Display file header
--headers Equivalent to setting: --file-header, --program-headers, --section-headers
--help Display this help
--hex-dump=<name or index>
Display the specified section(s) as hexadecimal bytes
-h Alias for --file-header
-l Alias for --program-headers
--no-demangle Do not demangle symbol names (default)
-n Alias for --notes
--pretty-pgo-analysis-map
Display PGO analysis values with formatting rather than raw numbers
--pretty-print Pretty print JSON output
-p <name or index> Alias for --string-dump
--relocations Alias for --relocs
--relocs Display the relocation entries in the file
-r Alias for --relocs
--sd Alias for --section-data
--section-data Display section data for each section shown. This option has no effect for GNU style output
--section-details Display the section details
--section-headers Display section headers
--section-mapping Display the section to segment mapping
--section-relocations Display relocations for each section shown. This option has no effect for GNU style output
--section-symbols Display symbols for each section shown. This option has no effect for GNU style output
--sections Alias for --section-headers
--sort-symbols=<value> Specify the keys to sort the symbols before displaying symtab
--sr Alias for --section-relocations
--stack-sizes Display contents of all stack sizes sections. This option has no effect for GNU style output
--stackmap Display contents of stackmap section
--string-dump=<name or index>
Display the specified section(s) as a list of strings
--string-table Display the string table (only for XCOFF now)
--st Alias for --section-symbols
--symbols Display the symbol table. Also display the dynamic symbol table when using GNU output style for ELF
--syms Alias for --symbols
-S Alias for --section-headers
-s Alias for --symbols
-t Alias for --section-details
--unwind Display unwind information
-u Alias for --unwind
--version Display the version
--wide Ignored for GNU readelf compatibility
-W Ignored for GNU readelf compatibility
-x <name or index> Alias for --hex-dump
-z Alias for --decompress
OPTIONS (ELF specific):
--dynamic-table Display the dynamic section table
-d Alias for --dynamic-table
--elf-linker-options Display the .linker-options section
--elf-output-style=<value>
Specify ELF dump style: LLVM, GNU, JSON
--gnu-hash-table Display the GNU hash table for dynamic symbols
-g Alias for --section-groups
--hash-symbols Display the dynamic symbols derived from the hash section
--hash-table Display .hash section
--histogram Display bucket list histogram for hash sections
-I Alias for --histogram
--memtag Display memory tagging metadata (modes, Android notes, global descriptors)
--needed-libs Display the needed libraries
--notes Display notes
--program-headers Display program headers
--section-groups Display section groups
--segments Alias for --program-headers
--version-info Display version sections
-V Alias for --version-info
-X Alias for --extra-sym-info
OPTIONS (Mach-O specific):
--macho-data-in-code Display Data in Code command
--macho-dysymtab Display Dysymtab command
--macho-indirect-symbols
Display indirect symbols
--macho-linker-options Display linker options
--macho-segment Display Segment command
--macho-version-min Display version min command
OPTIONS (PE/COFF specific):
--codeview-ghash Enable global hashing for CodeView type stream de-duplication
--codeview-merged-types Display the merged CodeView type stream
--codeview-subsection-bytes
Dump raw contents of codeview debug sections and records
--codeview Display CodeView debug information
--coff-basereloc Display .reloc section
--coff-debug-directory Display debug directory
--coff-directives Display .drectve section
--coff-exports Display export table
--coff-imports Display import table
--coff-load-config Display load config
--coff-resources Display .rsrc section
--coff-tls-directory Display TLS directory
OPTIONS (XCOFF specific):
--auxiliary-header Display the auxiliary header
--exception-section Display the exception section entries
--loader-section-header Display the loader section header
--loader-section-relocations
Display the loader section relocation entries
--loader-section-symbols
Display the loader section symbol table
Pass @FILE as argument to read options from FILE.
llvm-readobj
LLVM Object Reader
root@kali:~# llvm-readobj --help
OVERVIEW: LLVM Object Reader
USAGE: llvm-readobj [options] <input object files>
OPTIONS:
--addrsig Display address-significance table
--all Equivalent to setting: --file-header, --program-headers, --section-headers, --symbols, --relocations, --dynamic-table, --notes, --version-info, --unwind, --section-groups and --histogram
--arch-specific Display architecture-specific information
-A Alias for --arch-specific
-a Alias for --all
--bb-addr-map Display the BB address map section
--cg-profile Display call graph profile section
-C Alias for --demangle
--decompress Dump decompressed section content when used with -x or -p
--demangle Demangle symbol names
--dependent-libraries Display the dependent libraries section
--dt Alias for --dyn-syms
--dyn-relocations Display the dynamic relocation entries in the file
--dyn-symbols Alias for --dyn-syms
--dyn-syms Display the dynamic symbol table
--dynamic Alias for --dynamic-table
--expand-relocs Expand each shown relocation to multiple lines
--extra-sym-info Display extra information when showing symbols
-e Alias for --headers
--file-header Display file header
--headers Equivalent to setting: --file-header, --program-headers, --section-headers
--help Display this help
--hex-dump=<name or index>
Display the specified section(s) as hexadecimal bytes
-h Alias for --file-header
-l Alias for --program-headers
--no-demangle Do not demangle symbol names (default)
-n Alias for --notes
--pretty-pgo-analysis-map
Display PGO analysis values with formatting rather than raw numbers
--pretty-print Pretty print JSON output
-p <name or index> Alias for --string-dump
--relocations Alias for --relocs
--relocs Display the relocation entries in the file
-r Alias for --relocs
--sd Alias for --section-data
--section-data Display section data for each section shown. This option has no effect for GNU style output
--section-details Display the section details
--section-headers Display section headers
--section-mapping Display the section to segment mapping
--section-relocations Display relocations for each section shown. This option has no effect for GNU style output
--section-symbols Display symbols for each section shown. This option has no effect for GNU style output
--sections Alias for --section-headers
--sort-symbols=<value> Specify the keys to sort the symbols before displaying symtab
--sr Alias for --section-relocations
--stack-sizes Display contents of all stack sizes sections. This option has no effect for GNU style output
--stackmap Display contents of stackmap section
--string-dump=<name or index>
Display the specified section(s) as a list of strings
--string-table Display the string table (only for XCOFF now)
--st Alias for --section-symbols
--symbols Display the symbol table. Also display the dynamic symbol table when using GNU output style for ELF
--syms Alias for --symbols
-S Alias for --section-headers
-s Alias for --symbols
-t Alias for --section-details
--unwind Display unwind information
-u Alias for --unwind
--version Display the version
--wide Ignored for GNU readelf compatibility
-W Ignored for GNU readelf compatibility
-x <name or index> Alias for --hex-dump
-z Alias for --decompress
OPTIONS (ELF specific):
--dynamic-table Display the dynamic section table
-d Alias for --dynamic-table
--elf-linker-options Display the .linker-options section
--elf-output-style=<value>
Specify ELF dump style: LLVM, GNU, JSON
--gnu-hash-table Display the GNU hash table for dynamic symbols
-g Alias for --section-groups
--hash-symbols Display the dynamic symbols derived from the hash section
--hash-table Display .hash section
--histogram Display bucket list histogram for hash sections
-I Alias for --histogram
--memtag Display memory tagging metadata (modes, Android notes, global descriptors)
--needed-libs Display the needed libraries
--notes Display notes
--program-headers Display program headers
--section-groups Display section groups
--segments Alias for --program-headers
--version-info Display version sections
-V Alias for --version-info
-X Alias for --extra-sym-info
OPTIONS (Mach-O specific):
--macho-data-in-code Display Data in Code command
--macho-dysymtab Display Dysymtab command
--macho-indirect-symbols
Display indirect symbols
--macho-linker-options Display linker options
--macho-segment Display Segment command
--macho-version-min Display version min command
OPTIONS (PE/COFF specific):
--codeview-ghash Enable global hashing for CodeView type stream de-duplication
--codeview-merged-types Display the merged CodeView type stream
--codeview-subsection-bytes
Dump raw contents of codeview debug sections and records
--codeview Display CodeView debug information
--coff-basereloc Display .reloc section
--coff-debug-directory Display debug directory
--coff-directives Display .drectve section
--coff-exports Display export table
--coff-imports Display import table
--coff-load-config Display load config
--coff-resources Display .rsrc section
--coff-tls-directory Display TLS directory
OPTIONS (XCOFF specific):
--auxiliary-header Display the auxiliary header
--exception-section Display the exception section entries
--loader-section-header Display the loader section header
--loader-section-relocations
Display the loader section relocation entries
--loader-section-symbols
Display the loader section symbol table
Pass @FILE as argument to read options from FILE.
llvm-reduce
Llvm-reduce-18 (1) - LLVM automatic testcase reducer.
root@kali:~# llvm-reduce --help
OVERVIEW: LLVM automatic testcase reducer.
USAGE: llvm-reduce [options] <input llvm ll/bc file>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-reduce options:
--abort-on-invalid-reduction - Abort if any reduction results in invalid IR
--delta-passes=<string> - Delta passes to run, separated by commas. By default, run all delta passes.
--in-place - WARNING: This option will replace your input file with the reduced version!
--ir-passes=<string> - A textual description of the pass pipeline, same as what's passed to `opt -passes`.
-j <uint> - Maximum number of threads to use to process chunks. Set to 1 to disable parallelism.
--max-pass-iterations=<int> - Maximum number of times to run the full set of delta passes (default=5)
--mtriple=<string> - Set the target triple
--preserve-debug-environment - Don't disable features used for crash debugging (crash reports, llvm-symbolizer and core dumps)
--print-delta-passes - Print list of delta passes, passable to --delta-passes as a comma separated list
--skip-delta-passes=<string> - Delta passes to not run, separated by commas. By default, run all delta passes.
--starting-granularity-level=<uint> - Number of times to divide chunks prior to first test
--test=<string> - Name of the interesting-ness test to be run
--test-arg=<string> - Arguments passed onto the interesting-ness test
--verbose - Print extra debugging information
--write-tmp-files-as-bitcode - Always write temporary files as bitcode instead of textual IR
-x=<value> - Input language ('ir' or 'mir')
=ir
=mir
llvm-rtdyld
Manual page for llvm-rtdyld 19
root@kali:~# llvm-rtdyld -h
OVERVIEW: llvm MC-JIT tool
USAGE: llvm-rtdyld [options] <input files> --args <program arguments>...
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
RTDyld Options:
--args <string>... - <program arguments>...
--check=<string> - File containing RuntimeDyld verifier checks.
--dylib=<string> - Add library.
--entry=<string> - Function to call as entry point.
--mcpu=<cpu-name> - Target a specific cpu type (-mcpu=help for details)
--preallocate=<ulong> - Allocate memory upfront rather than on-demand
Action to perform:
--execute - Load, link, and execute the inputs.
--printline - Load, link, and print line information for each function.
--printdebugline - Load, link, and print line information for each function using the debug object
--printobjline - Like -printlineinfo but does not load the object first
--verify - Load, link and verify the resulting memory image.
--show-times - Show times for llvm-rtdyld phases
--triple=<string> - Target triple for disassembler
llvm-size
Manual page for llvm-size 19
root@kali:~# llvm-size -h
OVERVIEW: LLVM object size dumper
USAGE: llvm-size [options] <input object files>
OPTIONS:
-A Alias for --format
-B Alias for --format
--common Print common symbols in the ELF file. When using Berkeley format, this is added to bss
-d Alias for --radix=10
--format=<value> Specify output format
--help Display this help
-h Alias for --help
-m Alias for --format
-o Alias for --radix=8
--radix=<value> Print size in radix
--totals Print totals of all objects - Berkeley format only
-t Alias for --totals
--version Display the version
-x Alias for --radix=16
OPTIONS (Mach-O specific):
--arch=<value> architecture(s) from a Mach-O file to dump
-l When format is darwin, use long format to include addresses and offsets
Pass @FILE as argument to read options from FILE.
llvm-split
root@kali:~# llvm-split -h
OVERVIEW: LLVM module splitter
USAGE: llvm-split [options] <input bitcode file>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Split Options:
-j <uint> - Number of output files
--mcpu=<cpu> - Target CPU, ignored if -mtriple is not used
--mtriple=<triple> - Target triple. When present, a TargetMachine is created and TargetMachine::splitModule is used instead of the common SplitModule logic.
-o <filename> - Override output filename
--preserve-locals - Split without externalizing locals
--round-robin - Use round-robin distribution of functions to modules instead of the default name-hash-based one
llvm-stress
Generate random .ll files
root@kali:~# llvm-stress -h
OVERVIEW: llvm codegen stress-tester
USAGE: llvm-stress [options]
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Stress Options:
--enable-scalable-vectors - Generate IR involving scalable vector types
-o <filename> - Override output filename
--seed=<uint> - Seed used for randomness
--size=<uint> - The estimated size of the generated function (# of instrs)
llvm-strings
Print strings
root@kali:~# llvm-strings -h
OVERVIEW: llvm string dumper
USAGE: llvm-strings [options] <input object files>
OPTIONS:
--all Silently ignored. Present for GNU strings compatibility
-a Alias for --all
--bytes=<value> Print sequences of the specified length
-f Alias for --print-file-name
--help Display this help
-h Alias for --help
-n <value> Alias for --bytes
--print-file-name Print the name of the file before each string
--radix=<radix> Print the offset within the file with the specified radix: o (octal), d (decimal), x (hexadecimal)
-t <radix> Alias for --radix
--version Display the version
Pass @FILE as argument to read options from FILE.
llvm-strip
Object stripping tool
root@kali:~# llvm-strip -h
OVERVIEW: llvm-strip tool
USAGE: llvm-strip [options] inputs...
OPTIONS:
--allow-broken-links Allow the tool to remove sections even if it would leave invalid section references. The appropriate sh_link fields will be set to zero.
--disable-deterministic-archives
Disable deterministic mode when operating on archives (use real values for UIDs, GIDs, and timestamps).
--discard-all Remove most local symbols. Different file formats may limit this to a subset. For ELF, file and section symbols are not discarded. Additionally, remove all debug sections
--discard-locals Remove local symbols starting with .L
-D Alias for --enable-deterministic-archives
-d Alias for --strip-debug
--enable-deterministic-archives
Enable deterministic mode when operating on archives (use zero for UIDs, GIDs, and timestamps).
-g Alias for --strip-debug
--keep-file-symbols Keep symbols of type STT_FILE, even if they would otherwise be stripped
--keep-section=section Keep <section>
--keep-symbol=symbol When removing symbols, do not remove <symbol>
-K <value> Alias for --keep-symbol
--no-strip-all Disable --strip-all
-N <value> Alias for --strip-symbol
--only-keep-debug Produce a debug file as the output that only preserves contents of sections useful for debugging purposes
-o <file> Write output to <file>
--preserve-dates Preserve access and modification timestamps
-p Alias for --preserve-dates
--regex Permit regular expressions in name comparison
--remove-section=section
Remove <section>
-R <value> Alias for --remove-section
--strip-all-gnu Remove all symbols, debug sections and relocations. Compatible with GNU's --strip-all
--strip-all For ELF, remove all symbols and non-alloc sections not within segments, except for .gnu.warning*, .ARM.attribute, and the section name table. For COFF and Mach-O, remove all symbols, debug sections, and relocations
--strip-debug Remove all debug sections
--strip-sections Remove all section headers and all section data not within segments
--strip-symbol=symbol Strip <symbol>
--strip-unneeded Remove all symbols not needed by relocations
-S Alias for --strip-debug
-s Alias for --strip-all
-T Remove Swift symbols
-U Alias for --disable-deterministic-archives
--version Print the version and exit.
-V Alias for --version
--wildcard Allow wildcard syntax for symbol-related flags. Incompatible with --regex. Allows using '*' to match any number of characters, '?' to match any single character, '' to escape special characters, and '[]' to define character classes. Wildcards beginning with '!' will prevent a match, for example "-N '*' -N '!x'" will strip all symbols except for "x".
-w Alias for --wildcard
-X Alias for --discard-locals
-x Alias for --discard-all
OPTIONS (Mach-O specific):
--keep-undefined Do not remove undefined symbols
Pass @FILE as argument to read options from FILE.
llvm-symbolizer
Convert addresses into source code locations
root@kali:~# llvm-symbolizer -h
OVERVIEW: llvm-symbolizer
USAGE: llvm-symbolizer [options] addresses...
OPTIONS:
--addresses Show address before line information
--adjust-vma=<offset> Add specified offset to object file addresses
-a Alias for --addresses
--basenames Strip directory names from paths
--build-id=<value> Build ID used to look up the object file
--cache-size=<value> Max size in bytes of the in-memory binary cache.
--color=<value> Whether to use color when symbolizing log markup: always, auto, never
--color Use color when symbolizing log markup.
-C Alias for --demangle
--debug-file-directory=<dir>
Path to directory where to look for debug files
--debuginfod Use debuginfod to find debug binaries
-demangle=false Alias for --no-demangle
-demangle=true Alias for --demangle
--demangle Demangle function names
--dia Use the DIA library to access symbols (Windows only)
--dwp=<file> Path to DWP file to be use for any split CUs
-e=<file> Alias for --obj
--exe=<file> Alias for --obj
--exe <file> Alias for --obj
-e <file> Alias for --obj
-f=<value> Alias for --functions=
--fallback-debug-path=<dir>
Fallback path for debug binaries
--filter-markup Filter symbolizer markup from stdin.
--functions=<value> Print function name for a given address
--functions Print function name for a given address
-f Alias for --functions
--help Display this help
--inlines Print all inlined frames for a given address
--inlining=false Alias for --no-inlines
--inlining=true Alias for --inlines
--inlining Alias for --inlines
-i Alias for --inlines
--no-debuginfod Don't use debuginfod to find debug binaries
--no-demangle Don't demangle function names
--no-inlines Do not print inlined frames
--no-untag-addresses Remove memory tags from addresses before symbolization
--obj=<file> Path to object file to be symbolized (if not provided, object file should be specified for each input line)
--output-style=style Specify print style. Supported styles: LLVM, GNU, JSON
--pretty-print Make the output more human friendly
--print-address Alias for --addresses
--print-source-context-lines=<value>
Print N lines of source file context
-p Alias for --pretty-print
--relative-address Interpret addresses as addresses relative to the image base
--relativenames Strip the compilation directory from paths
-s Alias for --basenames
--verbose Print verbose line info
--version Display the version
-v Alias for --version
llvm-symbolizer Mach-O Specific Options:
--default-arch=<value> Default architecture (for multi-arch objects)
--dsym-hint=<dir> Path to .dSYM bundles to search for debug info for the object files
Pass @FILE as argument to read options from FILE.
llvm-tblgen
Target Description to C++ Code for LLVM
root@kali:~# llvm-tblgen -h
USAGE: llvm-tblgen [options] <input file>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
-D <macro name> - Name of the macro to be defined
-I <directory> - Directory of include files
-d <filename> - Dependency filename
Action to perform:
--gen-arm-target-def - Generate the ARM or AArch64 Architecture information header.
--gen-asm-matcher - Generate assembly instruction matcher
--gen-asm-writer - Generate assembly writer
--gen-attrs - Generate attributes
--gen-callingconv - Generate calling convention descriptions
--gen-emitter - Generate machine code emitter
--gen-compress-inst-emitter - Generate compressed instructions.
--gen-ctags - Generate ctags-compatible index
--gen-dag-isel - Generate a DAG instruction selector
--gen-automata - Generate generic automata
--gen-dfa-packetizer - Generate DFA Packetizer for VLIW targets
--gen-directive-decl - Generate directive related declaration code (header file)
--gen-directive-impl - Generate directive related implementation code
--gen-disassembler - Generate disassembler
--gen-dxil-operation - Generate DXIL operation information
--gen-exegesis - Generate llvm-exegesis tables
--gen-fast-isel - Generate a "fast" instruction selector
--gen-global-isel-combiner - Generate GlobalISel Combiner
--gen-global-isel - Generate GlobalISel selector
--gen-instr-docs - Generate instruction documentation
--gen-instr-info - Generate instruction descriptions
--gen-intrinsic-enums - Generate intrinsic enums
--gen-intrinsic-impl - Generate intrinsic information
--gen-macro-fusion-pred - Generate macro fusion predicators.
--gen-opt-parser-defs - Generate option definitions
--gen-opt-rst - Generate option RST
--gen-pseudo-lowering - Generate pseudo instruction lowering
--gen-register-bank - Generate registers bank descriptions
--gen-register-info - Generate registers and register classes info
--gen-riscv-target-def - Generate the list of CPUs and extensions for RISC-V
--gen-searchable-tables - Generate generic binary-searchable table
--gen-subtarget - Generate subtarget enumerations
--print-records - Print all records to stdout (default)
--print-detailed-records - Print full details of all records to stdout
--null-backend - Do nothing after parsing (useful for timing)
--dump-json - Dump all records as machine-readable JSON
--print-enums - Print enum values for a class
--print-sets - Print expanded sets for testing DAG exprs
--gen-vt - Generate ValueType
--gen-x86-instr-mapping - Generate X86 instruction mapping
--gen-x86-fold-tables - Generate X86 fold tables
--gen-x86-mnemonic-tables - Generate X86 mnemonic tables
--no-warn-on-unused-template-args - Disable unused template argument warnings.
-o <filename> - Output filename
--time-phases - Time phases of parser and backend
--write-if-changed - Only write output if it changed
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Options for -gen-asm-matcher:
--match-prefix=<string> - Only match instructions with the given prefix
Options for -gen-asm-parser:
--asmparsernum=<uint> - Make -gen-asm-parser emit assembly parser #N
Options for -gen-asm-writer:
--asmwriternum=<uint> - Make -gen-asm-writer emit assembly writer #N
Options for -gen-dag-isel:
--instrument-coverage - Generates tables to help identify patterns matched
--omit-comments - Do not generate comments
Options for -gen-disassembler:
--suppress-per-hwmode-duplicates=<value> - Suppress duplication of instrs into per-HwMode decoder tables
=O0 - Do not prevent DecoderTable duplications caused by HwModes
=O1 - Remove duplicate DecoderTable entries generated due to HwModes
=O2 - Extract HwModes-specific instructions into new DecoderTables, significantly reducing Table Duplications
Options for -gen-global-isel:
--gisel-coverage-file=<string> - Specify file to retrieve coverage information from
--instrument-gisel-coverage - Generate coverage instrumentation for GlobalISel
--optimize-match-table - Generate an optimized version of the match table
--warn-on-skipped-patterns - Explain why a pattern was skipped for inclusion in the GlobalISel selector
Options for -gen-global-isel-combiner:
--combiners=<string> - Emit the specified combiners
--gicombiner-debug-cxxpreds - Add Contextual/Debug comments to all C++ predicates
--gicombiner-debug-typeinfer - Print type inference debug logs
--gicombiner-stop-after-parse - Stop processing after parsing rules and dump state
Options for -gen-instr-info:
--instr-info-expand-mi-operand-info - Expand operand's MIOperandInfo DAG into suboperands
Options for -gen-intrinsic-enums:
--intrinsic-prefix=<target prefix> - Generate intrinsics with this target prefix
Options for -gen-register-info:
--register-info-debug - Dump register information to help debugging
Options for -print-enums:
--class=<class name> - Print Enum list for this class
llvm-undname
root@kali:~# llvm-undname -h
OVERVIEW: llvm-undname
USAGE: llvm-undname [options] <input symbols>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-xray
root@kali:~# llvm-xray -h
OVERVIEW: XRay Tools
This program consolidates multiple XRay trace processing tools for convenient access.
USAGE: llvm-xray [subcommand] [options]
SUBCOMMANDS:
account - Function call accounting
convert - Trace Format Conversion
extract - Extract instrumentation maps
fdr-dump - FDR Trace Dump
graph - Generate function-call graph
graph-diff - Generate diff of function-call graphs
stack - Call stack accounting
Type "llvm-xray <subcommand> --help" to get more help on a specific subcommand
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
--aarch64-neon-syntax=<value> - Choose style of NEON code to emit from AArch64 backend:
=generic - Emit generic NEON assembly
=apple - Emit Apple-style NEON assembly
--aarch64-use-aa - Enable the use of AA during codegen.
--abort-on-max-devirt-iterations-reached - Abort when the max iterations for devirtualization CGSCC repeat pass is reached
--allow-ginsert-as-artifact - Allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
--amdgpu-atomic-optimizer-strategy=<value> - Select DPP or Iterative strategy for scan
=DPP - Use DPP operations for scan
=Iterative - Use Iterative approach for scan
=None - Disable atomic optimizer
--amdgpu-bypass-slow-div - Skip 64-bit divide for dynamic 32-bit values
--amdgpu-disable-loop-alignment - Do not align and prefetch loops
--amdgpu-dpp-combine - Enable DPP combiner
--amdgpu-dump-hsa-metadata - Dump AMDGPU HSA Metadata
--amdgpu-enable-merge-m0 - Merge and hoist M0 initializations
--amdgpu-enable-power-sched - Enable scheduling to minimize mAI power bursts
--amdgpu-kernarg-preload-count=<uint> - How many kernel arguments to preload onto SGPRs
--amdgpu-promote-alloca-to-vector-limit=<uint> - Maximum byte size to consider promote alloca to vector
--amdgpu-sdwa-peephole - Enable SDWA peepholer
--amdgpu-use-aa-in-codegen - Enable the use of AA during codegen.
--amdgpu-verify-hsa-metadata - Verify AMDGPU HSA Metadata
--amdgpu-vgpr-index-mode - Use GPR indexing mode instead of movrel for vector indexing
--arm-add-build-attributes -
--arm-implicit-it=<value> - Allow conditional instructions outdside of an IT block
=always - Accept in both ISAs, emit implicit ITs in Thumb
=never - Warn in ARM, reject in Thumb
=arm - Accept in ARM, reject in Thumb
=thumb - Warn in ARM, emit implicit ITs in Thumb
--asm-show-inst - Emit internal instruction representation to assembly file
--atomic-counter-update-promoted - Do counter update using atomic fetch add for promoted counters only
--atomic-first-counter - Use atomic fetch add for first counter in a function (usually the entry counter)
--bounds-checking-single-trap - Use one trap block per function
--bounds-checking-unique-traps - Always use one trap per check
--bpf-stack-size=<int> - Specify the BPF stack size limit
--cfg-hide-cold-paths=<number> - Hide blocks with relative frequency below the given value
--cfg-hide-deoptimize-paths -
--cfg-hide-unreachable-paths -
--check-functions-filter=<regex> - Only emit checks for arguments of functions whose names match the given regular expression
--cost-kind=<value> - Target cost kind
=throughput - Reciprocal throughput
=latency - Instruction latency
=code-size - Code size
=size-latency - Code size and latency
--crel - Use CREL relocation format for ELF
--cs-profile-generate - Perform context sensitive PGO instrumentation
--cs-profile-path=<string> - Context sensitive profile file path
--debug-info-correlate - Use debug info to correlate profiles. (Deprecated, use -profile-correlate=debug-info)
--debugify-func-limit=<ulong> - Set max number of processed functions per pass.
--debugify-level=<value> - Kind of debug info to add
=locations - Locations only
=location+variables - Locations and Variables
--debugify-quiet - Suppress verbose debugify output
--disable-auto-upgrade-debug-info - Disable autoupgrade of debug info
--disable-i2p-p2i-opt - Disables inttoptr/ptrtoint roundtrip optimization
--disable-promote-alloca-to-lds - Disable promote alloca to LDS
--disable-promote-alloca-to-vector - Disable promote alloca to vector
--do-counter-promotion - Do counter register promotion
--dot-cfg-mssa=<file name for generated dot file> - file name for generated dot file
--dwarf-version=<int> - Dwarf version
--dwarf64 - Generate debugging info in the 64-bit DWARF format
--emit-compact-unwind-non-canonical - Whether to try to emit Compact Unwind for non canonical entries.
--emit-dwarf-unwind=<value> - Whether to emit DWARF EH frame entries.
=always - Always emit EH frame entries
=no-compact-unwind - Only emit EH frame entries when compact unwind is not available
=default - Use target platform default
--emscripten-cxx-exceptions-allowed=<string> - The list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
--enable-cse-in-irtranslator - Should enable CSE in irtranslator
--enable-cse-in-legalizer - Should enable CSE in Legalizer
--enable-emscripten-cxx-exceptions - WebAssembly Emscripten-style exception handling
--enable-emscripten-sjlj - WebAssembly Emscripten-style setjmp/longjmp handling
--enable-gvn-hoist - Enable the GVN hoisting pass (default = off)
--enable-gvn-memdep -
--enable-gvn-sink - Enable the GVN sinking pass (default = off)
--enable-jump-table-to-switch - Enable JumpTableToSwitch pass (default = off)
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loop-simplifycfg-term-folding -
--enable-name-compression - Enable name/filename string compression
--enable-pgo-force-function-attrs - Enable pass to set function attributes based on PGO profiles
--enable-split-backedge-in-load-pre -
--enable-split-loopiv-heuristic - Enable loop iv regalloc heuristic
--enable-vtable-profile-use - If ThinLTO and WPD is enabled and this option is true, vtable profiles will be used by ICP pass for more efficient indirect call sequence. If false, type profiles won't be used.
--enable-vtable-value-profiling - If true, the virtual table address will be instrumented to know the types of a C++ pointer. The information is used in indirect call promotion to do selective vtable-based comparison.
--expand-variadics-override=<value> - Override the behaviour of expand-variadics
=unspecified - Use the implementation defaults
=disable - Disable the pass entirely
=optimize - Optimise without changing ABI
=lowering - Change variadic calling convention
--experimental-debug-variable-locations - Use experimental new value-tracking variable locations
--experimental-debuginfo-iterators - Enable communicating debuginfo positions through iterators, eliminating intrinsics. Has no effect if --preserve-input-debuginfo-format=true.
--fatal-warnings - Treat warnings as errors
--fdpic - Use the FDPIC ABI
--force-tail-folding-style=<value> - Force the tail folding style
=none - Disable tail folding
=data - Create lane mask for data only, using active.lane.mask intrinsic
=data-without-lane-mask - Create lane mask with compare/stepvector
=data-and-control - Create lane mask using active.lane.mask intrinsic, and use it for both data and control flow
=data-and-control-without-rt-check - Similar to data-and-control, but remove the runtime check
=data-with-evl - Use predicated EVL instructions for tail folding. If EVL is unsupported, fallback to data-without-lane-mask.
--fs-profile-debug-bw-threshold=<uint> - Only show debug message if the source branch weight is greater than this value.
--fs-profile-debug-prob-diff-threshold=<uint> - Only show debug message if the branch probility is greater than this value (in percentage).
--generate-merged-base-profiles - When generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
--gpsize=<uint> - Global Pointer Addressing Size. The default size is 8.
--hash-based-counter-split - Rename counter variable of a comdat function based on cfg hash
--hexagon-add-build-attributes -
--hexagon-rdf-limit=<uint> -
--hot-cold-split - Enable hot-cold splitting pass
--hwasan-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--hwasan-random-rate=<number> - Probability value in the range [0.0, 1.0] to keep instrumentation of a function.
--import-all-index - Import all external functions in index.
--incremental-linker-compatible - When used with filetype=obj, emit an object file which can be used with an incremental linker
--instcombine-code-sinking - Enable code sinking
--instcombine-guard-widening-window=<uint> - How wide an instruction window to bypass looking for another guard
--instcombine-max-num-phis=<uint> - Maximum number phis to handle in intptr/ptrint folding
--instcombine-max-sink-users=<uint> - Maximum number of undroppable users for instruction sinking
--instcombine-maxarray-size=<uint> - Maximum array size considered when doing a combine
--instcombine-negator-enabled - Should we attempt to sink negations?
--instcombine-negator-max-depth=<uint> - What is the maximal lookup depth when trying to check for viability of negation sinking.
--instrprof-atomic-counter-update-all - Make all profile counter updates atomic (for testing only)
--internalize-public-api-file=<filename> - A file containing list of symbol names to preserve
--internalize-public-api-list=<list> - A list of symbol names to preserve
--iterative-counter-promotion - Allow counter promotion across the whole loop nest.
--lint-abort-on-error - In the Lint pass, abort on errors.
--lower-allow-check-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--lower-allow-check-random-rate=<number> - Probability value in the range [0.0, 1.0] of unconditional pseudo-random checks.
--lto-aix-system-assembler=<path> - Path to a system assembler, picked up on AIX only
--lto-embed-bitcode=<value> - Embed LLVM bitcode in object files produced by LTO
=none - Do not embed
=optimized - Embed after all optimization passes
=post-merge-pre-opt - Embed post merge, but before optimizations
--lto-pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--lto-pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--lto-pass-remarks-output=<filename> - Output filename for pass remarks
--matrix-default-layout=<value> - Sets the default matrix layout
=column-major - Use column-major layout
=row-major - Use row-major layout
--matrix-print-after-transpose-opt -
--max-counter-promotions=<int> - Max number of allowed counter promotions
--max-counter-promotions-per-loop=<uint> - Max number counter promotions per loop to avoid increasing register pressure too much
--mc-relax-all - When used with filetype=obj, relax all fixups in the emitted object file
--mcabac - tbd
--merror-missing-parenthesis - Error for missing parenthesis around predicate registers
--merror-noncontigious-register - Error for register names that aren't contigious
--mhvx - Enable Hexagon Vector eXtensions
--mhvx=<value> - Enable Hexagon Vector eXtensions
=v60 - Build for HVX v60
=v62 - Build for HVX v62
=v65 - Build for HVX v65
=v66 - Build for HVX v66
=v67 - Build for HVX v67
=v68 - Build for HVX v68
=v69 - Build for HVX v69
=v71 - Build for HVX v71
=v73 - Build for HVX v73
--mips-compact-branches=<value> - MIPS Specific: Compact branch policy.
=never - Do not use compact branches if possible.
=optimal - Use compact branches where appropriate (default).
=always - Always use compact branches if possible.
--mips16-constant-islands - Enable mips16 constant islands.
--mips16-hard-float - Enable mips16 hard float.
--mir-strip-debugify-only - Should mir-strip-debug only strip debug info from debugified modules by default
--misexpect-tolerance=<uint> - Prevents emitting diagnostics when profile counts are within N% of the threshold..
--mno-compound - Disable looking for compound instructions for Hexagon
--mno-fixup - Disable fixing up resolved relocations for Hexagon
--mno-ldc1-sdc1 - Expand double precision loads and stores to their single precision counterparts
--mno-pairing - Disable looking for duplex instructions for Hexagon
--mwarn-missing-parenthesis - Warn for missing parenthesis around predicate registers
--mwarn-noncontigious-register - Warn for register names that arent contigious
--mwarn-sign-mismatch - Warn for mismatching a signed and unsigned value
--no-deprecated-warn - Suppress all deprecated warnings
--no-discriminators - Disable generation of discriminator information.
--no-type-check - Suppress type errors (Wasm)
--no-warn - Suppress all warnings
--nvptx-sched4reg - NVPTX Specific: schedule for register pressue
--object-size-offset-visitor-max-visit-instructions=<uint> - Maximum number of instructions for ObjectSizeOffsetVisitor to look at
--pgo-block-coverage - Use this option to enable basic block coverage instrumentation
--pgo-temporal-instrumentation - Use this option to enable temporal instrumentation
--pgo-view-block-coverage-graph - Create a dot file of CFGs with block coverage inference information
--poison-checking-function-local - Check that returns are non-poison (for testing)
--print-pipeline-passes - Print a '-passes' compatible string describing the pipeline (best-effort only).
--profile-correlate=<value> - Use debug info or binary file to correlate profiles.
=<empty> - No profile correlation
=debug-info - Use debug info to correlate
=binary - Use binary to correlate
--promote-alloca-vector-loop-user-weight=<uint> - The bonus weight of users of allocas within loop when sorting profitable allocas
--r600-ir-structurize - Use StructurizeCFG IR pass
--riscv-add-build-attributes -
--riscv-use-aa - Enable the use of AA during codegen.
--runtime-counter-relocation - Enable relocating counters at runtime.
--safepoint-ir-verifier-print-only -
--sample-profile-check-record-coverage=<N> - Emit a warning if less than N% of records in the input profile are matched to the IR.
--sample-profile-check-sample-coverage=<N> - Emit a warning if less than N% of samples in the input profile are matched to the IR.
--sample-profile-max-propagate-iterations=<uint> - Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
--sampled-instr-burst-duration=<uint> - Set the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. This number of samples will be recorded for each 'sampled-instr-period' count update. Setting to 1 enables simple sampling, in which case it is recommended to set 'sampled-instr-period' to a prime number.
--sampled-instr-period=<uint> - Set the profile instrumentation sample period. For each sample period, a fixed number of consecutive samples will be recorded. The number is controlled by 'sampled-instr-burst-duration' flag. The default sample period of 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow.
--sampled-instrumentation - Do PGO instrumentation sampling
--save-temp-labels - Don't discard temporary labels
--skip-ret-exit-block - Suppress counter promotion if exit blocks contain ret.
--speculative-counter-promotion-max-exiting=<uint> - The max number of exiting blocks of a loop to allow speculative counter promotion
--speculative-counter-promotion-to-loop - When the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
--summary-file=<string> - The summary file to use for function importing.
--sve-tail-folding=<string> - Control the use of vectorisation using tail-folding for SVE where the option is specified in the form (Initial)[+(Flag1|Flag2|...)]:
disabled (Initial) No loop types will vectorize using tail-folding
default (Initial) Uses the default tail-folding settings for the target CPU
all (Initial) All legal loop types will vectorize using tail-folding
simple (Initial) Use tail-folding for simple loops (not reductions or recurrences)
reductions Use tail-folding for loops containing reductions
noreductions Inverse of above
recurrences Use tail-folding for loops containing fixed order recurrences
norecurrences Inverse of above
reverse Use tail-folding for loops requiring reversed predicates
noreverse Inverse of above
--tail-predication=<value> - MVE tail-predication pass options
=disabled - Don't tail-predicate loops
=enabled-no-reductions - Enable tail-predication, but not for reduction loops
=enabled - Enable tail-predication, including reduction loops
=force-enabled-no-reductions - Enable tail-predication, but not for reduction loops, and force this which might be unsafe
=force-enabled - Enable tail-predication, including reduction loops, and force this which might be unsafe
--thinlto-assume-merged - Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
--threads=<int> -
--type-based-intrinsic-cost - Calculate intrinsics cost based only on argument types
--use-undef - Use undef when generating programs.
--verify-region-info - Verify region info (time consuming)
--vp-counters-per-site=<number> - The average number of profile counters allocated per value profiling site.
--vp-static-alloc - Do static counter allocation for value profiler
--wasm-enable-eh - WebAssembly exception handling
--wasm-enable-exnref - WebAssembly exception handling (exnref)
--wasm-enable-sjlj - WebAssembly setjmp/longjmp handling
--write-experimental-debuginfo - Write debug info in the new non-intrinsic format. Has no effect if --preserve-input-debuginfo-format=true.
--x86-align-branch=<string> - Specify types of branches to align (plus separated list of types):
jcc indicates conditional jumps
fused indicates fused conditional jumps
jmp indicates direct unconditional jumps
call indicates direct and indirect calls
ret indicates rets
indirect indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint> - Control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches.
--x86-branches-within-32B-boundaries - Align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
--x86-pad-max-prefix-size=<uint> - Maximum number of prefixes to use for padding
--x86-relax-relocations - Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF
--x86-sse2avx - Specify that the assembler should encode SSE instructions with VEX prefix
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Polly Options:
Configure the polly loop optimizer
--polly - Enable the polly optimizer (with -O1, -O2 or -O3)
--polly-2nd-level-tiling - Enable a 2nd level loop of loop tiling
--polly-ast-print-accesses - Print memory access functions
--polly-context=<isl parameter set> - Provide additional constraints on the context parameters
--polly-dce-precise-steps=<int> - The number of precise steps between two approximating iterations. (A value of -1 schedules another approximation stage before the actual dead code elimination.
--polly-delicm-max-ops=<int> - Maximum number of isl operations to invest for lifetime analysis; 0=no limit
--polly-detect-full-functions - Allow the detection of full functions
--polly-dump-after - Dump module after Polly transformations into a file suffixed with "-after"
--polly-dump-after-file=<string> - Dump module after Polly transformations to the given file
--polly-dump-before - Dump module before Polly transformations into a file suffixed with "-before"
--polly-dump-before-file=<string> - Dump module before Polly transformations to the given file
--polly-enable-simplify - Simplify SCoP after optimizations
--polly-ignore-func=<string> - Ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided.
--polly-isl-arg=<argument> - Option passed to ISL
--polly-matmul-opt - Perform optimizations of matrix multiplications based on pattern matching
--polly-on-isl-error-abort - Abort if an isl error is encountered
--polly-only-func=<string> - Only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided.
--polly-only-region=<identifier> - Only run on certain regions (The provided identifier must appear in the name of the region's entry block
--polly-only-scop-detection - Only run scop detection, but no other optimizations
--polly-optimized-scops - Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree
--polly-parallel - Generate thread parallel code (isl codegen only)
--polly-parallel-force - Force generation of thread parallel code ignoring any cost model
--polly-pattern-matching-based-opts - Perform optimizations based on pattern matching
--polly-postopts - Apply post-rescheduling optimizations such as tiling (requires -polly-reschedule)
--polly-pragma-based-opts - Apply user-directed transformation from metadata
--polly-pragma-ignore-depcheck - Skip the dependency check for pragma-based transformations
--polly-process-unprofitable - Process scops that are unlikely to benefit from Polly optimizations.
--polly-register-tiling - Enable register tiling
--polly-report - Print information about the activities of Polly
--polly-reschedule - Optimize SCoPs using ISL
--polly-show - Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions)
--polly-show-only - Highlight the code regions that will be optimized in a (CFG only BBs)
--polly-stmt-granularity=<value> - Algorithm to use for splitting basic blocks into multiple statements
=bb - One statement per basic block
=scalar-indep - Scalar independence heuristic
=store - Store-level granularity
--polly-tc-opt - Perform optimizations of tensor contractions based on pattern matching
--polly-tiling - Enable loop tiling
--polly-vectorizer=<value> - Select the vectorization strategy
=none - No Vectorization
=stripmine - Strip-mine outer loops for the loop-vectorizer to trigger
obj2yaml
root@kali:~# obj2yaml -h
OVERVIEW: Dump a YAML description from an object file
USAGE: obj2yaml [options] <input file>
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
obj2yaml Options:
-o <filename> - Output filename
--raw-segment=<value> - Mach-O: dump the raw contents of the listed segments instead of parsing them:
=data - __DATA
=linkedit - __LINKEDIT
opt
LLVM optimizer
root@kali:~# opt -h
OVERVIEW: llvm .bc -> .bc modular optimizer and analysis printer
USAGE: opt [options] <input bitcode file>
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
--O0 - Optimization level 0. Similar to clang -O0. Same as -passes="default<O0>"
--O1 - Optimization level 1. Similar to clang -O1. Same as -passes="default<O1>"
--O2 - Optimization level 2. Similar to clang -O2. Same as -passes="default<O2>"
--O3 - Optimization level 3. Similar to clang -O3. Same as -passes="default<O3>"
--Os - Like -O2 but size-conscious. Similar to clang -Os. Same as -passes="default<Os>"
--Oz - Like -O2 but optimize for code size above all else. Similar to clang -Oz. Same as -passes="default<Oz>"
-S - Write output as LLVM assembly
--aarch64-neon-syntax=<value> - Choose style of NEON code to emit from AArch64 backend:
=generic - Emit generic NEON assembly
=apple - Emit Apple-style NEON assembly
Optimizations available (use "-passes=" for the new pass manager)
--aa - Function Alias Analysis Results
--aarch64-O0-prelegalizer-combiner - Combine AArch64 machine instrs before legalization
--aarch64-a57-fp-load-balancing - AArch64 A57 FP Load-Balancing
--aarch64-branch-targets - AArch64 Branch Targets
--aarch64-ccmp - AArch64 CCMP Pass
--aarch64-collect-loh - AArch64 Collect Linker Optimization Hint (LOH)
--aarch64-condopt - AArch64 CondOpt Pass
--aarch64-copyelim - AArch64 redundant copy elimination pass
--aarch64-dead-defs - AArch64 Dead register definitions
--aarch64-expand-pseudo - AArch64 pseudo instruction expansion pass
--aarch64-falkor-hwpf-fix - Falkor HW Prefetch Fix
--aarch64-falkor-hwpf-fix-late - Falkor HW Prefetch Fix Late Phase
--aarch64-fix-cortex-a53-835769-pass - AArch64 fix for A53 erratum 835769
--aarch64-globals-tagging - AArch64 Globals Tagging Pass
--aarch64-isel - AArch64 Instruction Selection
--aarch64-jump-tables - AArch64 compress jump tables pass
--aarch64-ldst-opt - AArch64 load / store optimization pass
--aarch64-local-dynamic-tls-cleanup - AArch64 Local Dynamic TLS Access Clean-up
--aarch64-lower-homogeneous-prolog-epilog - AArch64 homogeneous prolog/epilog lowering pass
--aarch64-mi-peephole-opt - AArch64 MI Peephole Optimization
--aarch64-post-coalescer-pass - AArch64 Post Coalescer Pass
--aarch64-post-select-optimize - Optimize AArch64 selected instructions
--aarch64-postlegalizer-combiner - Combine AArch64 MachineInstrs after legalization
--aarch64-postlegalizer-lowering - Lower AArch64 MachineInstrs after legalization
--aarch64-prelegalizer-combiner - Combine AArch64 machine instrs before legalization
--aarch64-promote-const - AArch64 Promote Constant Pass
--aarch64-ptrauth - AArch64 Pointer Authentication
--aarch64-simd-scalar - AdvSIMD Scalar Operation Optimization
--aarch64-simdinstr-opt - AArch64 SIMD instructions optimization pass
--aarch64-sls-hardening - AArch64 sls hardening pass
--aarch64-sme-abi - SME ABI Pass
--aarch64-speculation-hardening - AArch64 speculation hardening pass
--aarch64-stack-tagging - AArch64 Stack Tagging
--aarch64-stack-tagging-pre-ra - AArch64 Stack Tagging PreRA Pass
--aarch64-stp-suppress - AArch64 Store Pair Suppression
--aarch64-sve-intrinsic-opts - SVE intrinsics optimizations
--alloca-hoisting - Hoisting alloca instructions in non-entry blocks to the entry block
--always-inline - Inliner for always_inline functions
--amdgpu-aa - AMDGPU Address space based Alias Analysis
--amdgpu-aa-wrapper - AMDGPU Address space based Alias Analysis Wrapper
--amdgpu-always-inline - AMDGPU Inline All Functions
--amdgpu-annotate-kernel-features - Add AMDGPU function attributes
--amdgpu-annotate-uniform - Add AMDGPU uniform metadata
--amdgpu-argument-reg-usage-info - Argument Register Usage Information Storage
--amdgpu-atomic-optimizer - AMDGPU atomic optimizations
--amdgpu-attributor - AMDGPU Attributor
--amdgpu-codegenprepare - AMDGPU IR optimizations
--amdgpu-global-isel-divergence-lowering - AMDGPU GlobalISel divergence lowering
--amdgpu-image-intrinsic-opt - AMDGPU Image Intrinsic Optimizer
--amdgpu-insert-delay-alu - AMDGPU Insert Delay ALU
--amdgpu-insert-single-use-vdst - AMDGPU Insert SingleUseVDST
--amdgpu-isel - AMDGPU DAG->DAG Pattern Instruction Selection
--amdgpu-late-codegenprepare - AMDGPU IR late optimizations
--amdgpu-lower-buffer-fat-pointers - Lower buffer fat pointer operations to buffer resources
--amdgpu-lower-ctor-dtor - Lower ctors and dtors for AMDGPU
--amdgpu-lower-enqueued-block - Lower OpenCL enqueued blocks
--amdgpu-lower-kernel-arguments - AMDGPU Lower Kernel Arguments
--amdgpu-lower-kernel-attributes - AMDGPU Kernel Attributes
--amdgpu-lower-module-lds - Lower uses of LDS variables from non-kernel functions
--amdgpu-mark-last-scratch-load - AMDGPU Mark last scratch load
--amdgpu-nsa-reassign - GCN NSA Reassign
--amdgpu-perf-hint - Analysis if a function is memory bound
--amdgpu-postlegalizer-combiner - Combine AMDGPU machine instrs after legalization
--amdgpu-pre-ra-long-branch-reg - AMDGPU Pre-RA Long Branch Reg
--amdgpu-pre-ra-optimizations - Pre-RA optimizations
--amdgpu-prelegalizer-combiner - Combine AMDGPU machine instrs before legalization
--amdgpu-print-rp -
--amdgpu-printf-runtime-binding - AMDGPU Printf lowering
--amdgpu-promote-alloca - AMDGPU promote alloca to vector or LDS
--amdgpu-promote-alloca-to-vector - AMDGPU promote alloca to vector
--amdgpu-promote-kernel-arguments - AMDGPU Promote Kernel Arguments
--amdgpu-regbank-combiner - Combine AMDGPU machine instrs after regbankselect
--amdgpu-regbankselect - AMDGPU Register Bank Select
--amdgpu-remove-incompatible-functions - AMDGPU Remove Incompatible Functions
--amdgpu-resource-usage - Function register usage analysis
--amdgpu-rewrite-out-arguments - AMDGPU Rewrite Out Arguments
--amdgpu-rewrite-undef-for-phi - Rewrite undef for PHI
--amdgpu-unify-divergent-exit-nodes - Unify divergent function exit nodes
--amdgpu-unify-metadata - Unify multiple OpenCL metadata due to linking
--amode-opt - Optimize addressing mode
--arm-block-placement - ARM block placement
--arm-branch-targets - ARM Branch Targets
--arm-cp-islands - ARM constant island placement and branch shortening pass
--arm-execution-domain-fix - ARM Execution Domain Fix
--arm-fix-cortex-a57-aes-1742098 - ARM fix for Cortex-A57 AES Erratum 1742098
--arm-isel - ARM Instruction Selection
--arm-ldst-opt - ARM load / store optimization pass
--arm-low-overhead-loops - ARM Low Overhead Loops pass
--arm-mve-gather-scatter-lowering - MVE gather/scattering lowering pass
--arm-mve-vpt - ARM MVE VPT block pass
--arm-mve-vpt-opts - ARM MVE TailPred and VPT Optimisations pass
--arm-parallel-dsp - Transform functions to use DSP intrinsics
--arm-prera-ldst-opt - ARM pre- register allocation load / store optimization pass
--arm-pseudo - ARM pseudo instruction expansion pass
--arm-sls-hardening - ARM sls hardening pass
--assumption-cache-tracker - Assumption Cache Tracker
--atomic-expand - Expand Atomic instructions
--avr-expand-pseudo - AVR pseudo instruction expansion pass
--avr-isel - AVR DAG->DAG Instruction Selection
--avr-shift-expand - AVR Shift Expansion
--barrier - A No-Op Barrier Pass
--basic-aa - Basic Alias Analysis (stateless AA impl)
--basiccg - CallGraph Construction
--bbsections-profile-reader - Reads and parses a basic block sections profile.
--block-freq - Block Frequency Analysis
--bpf-check-and-opt-ir - BPF Check And Adjust IR
--bpf-isel - BPF DAG->DAG Pattern Instruction Selection
--bpf-mi-zext-elim - BPF MachineSSA Peephole Optimization For ZEXT Eliminate
--branch-prob - Branch Probability Analysis
--break-crit-edges - Break critical edges in CFG
--callbrprepare - Prepare callbr
--canon-freeze - Canonicalize Freeze Instructions in Loops
--check-debugify - Check debug info from -debugify
--check-debugify-function - Check debug info from -debugify-function
--codegenprepare - Optimize for code generation
--consthoist - Constant Hoisting
--cseinfo - Analysis containing CSE Info
--cycles - Cycle Info Analysis
--da - Dependence Analysis
--dce - Dead Code Elimination
--deadargelim - Dead Argument Elimination
--deadarghaX0r - Dead Argument Hacking (BUGPOINT USE ONLY; DO NOT USE)
--debugify - Attach debug info to everything
--debugify-function - Attach debug info to a function
--domfrontier - Dominance Frontier Construction
--domtree - Dominator Tree Construction
--dot-callgraph - Print call graph to 'dot' file
--dot-dom - Print dominance tree of function to 'dot' file
--dot-dom-only - Print dominance tree of function to 'dot' file (with no function bodies)
--dot-postdom - Print postdominance tree of function to 'dot' file
--dot-postdom-only - Print postdominance tree of function to 'dot' file (with no function bodies)
--dot-regions - Print regions of function to 'dot' file
--dot-regions-only - Print regions of function to 'dot' file (with no function bodies)
--dot-scops - Polly - Print Scops of function
--dot-scops-only - Polly - Print Scops of function (with no function bodies)
--dwarf-eh-prepare - Prepare DWARF exceptions
--early-cse - Early CSE
--early-cse-memssa - Early CSE w/ MemorySSA
--edge-bundles - Bundle Machine CFG Edges
--expand-large-div-rem - Expand large div/rem
--expand-large-fp-convert - Expand large fp convert
--expand-memcmp - Expand memcmp() to load/stores
--expand-reductions - Expand reduction intrinsics
--expandvp - Expand vector predication intrinsics
--external-aa - External Alias Analysis
--fastpretileconfig - Fast Tile Register Preconfigure
--fasttileconfig - Fast Tile Register Configure
--fix-irreducible - Convert irreducible control-flow into natural loops
--flattencfg - Flatten the CFG
--gcn-create-vopd - GCN Create VOPD Instructions
--gcn-dpp-combine - GCN DPP Combine
--generic-to-nvvm - Ensure that the global variables are in the global address space
--gisel-known-bits - Analysis for ComputingKnownBits
--global-merge - Merge global variables
--globals-aa - Globals Alias Analysis
--gvn - Global Value Numbering
--hexagon-bit-simplify - Hexagon bit simplification
--hexagon-cext-opt - Hexagon constant-extender optimization
--hexagon-constp - Hexagon Constant Propagation
--hexagon-copy-combine - Hexagon Copy-To-Combine Pass
--hexagon-early-if - Hexagon early if conversion
--hexagon-gen-load-absolute - Hexagon Generate Load/Store Set Absolute Address Instruction
--hexagon-gen-mux - Hexagon generate mux instructions
--hexagon-isel - Hexagon DAG->DAG Pattern Instruction Selection
--hexagon-loop-idiom - Recognize Hexagon-specific loop idioms
--hexagon-nvj - Hexagon NewValueJump
--hexagon-packetizer - Hexagon Packetizer
--hexagon-rdf-opt - Hexagon RDF optimizations
--hexagon-split-double - Hexagon Split Double Registers
--hexagon-vc - Hexagon Vector Combine
--hexagon-vextract - Hexagon optimize vextract
--hexagon-vlcr - Hexagon-specific predictive commoning for HVX vectors
--hwloops - Hexagon Hardware Loops
--indirectbr-expand - Expand indirectbr instructions
--infer-address-spaces - Infer address spaces
--instcombine - Combine redundant instructions
--instruction-select - Select target instructions out of generic instructions
--instsimplify - Remove redundant instructions
--interleaved-access - Lower interleaved memory accesses to target specific intrinsics
--interleaved-load-combine - Combine interleaved loads into wide loads and shufflevector instructions
--ir-similarity-identifier - ir-similarity-identifier
--irtranslator - IRTranslator LLVM IR -> MI
--iv-users - Induction Variable Users
--jmc-instrumenter - Instrument function entry with call to __CheckForDebuggerJustMyCode
--kcfi - Insert KCFI indirect call checks
--lanai-isel - Lanai DAG->DAG Pattern Instruction Selection
--lazy-block-freq - Lazy Block Frequency Analysis
--lazy-branch-prob - Lazy Branch Probability Analysis
--lazy-value-info - Lazy Value Information Analysis
--lcssa - Loop-Closed SSA Form Pass
--lcssa-verification - LCSSA Verifier
--legalizer - Legalize the Machine IR a function's Machine IR
--licm - Loop Invariant Code Motion
--liveintervals - Live Interval Analysis
--liveregmatrix - Live Register Matrix
--livestacks - Live Stack Slot Analysis
--livevars - Live Variable Analysis
--load-store-vectorizer - Vectorize load and store instructions
--loadstore-opt - Generic memory optimizations
--localizer - Move/duplicate certain instructions close to their use
--loongarch-dead-defs - LoongArch Dead register definitions
--loongarch-isel - LoongArch DAG->DAG Pattern Instruction Selection
--loongarch-opt-w-instrs - LoongArch Optimize W Instructions
--loongarch-prera-expand-pseudo - LoongArch Pre-RA pseudo instruction expansion pass
--loop-data-prefetch - Loop Data Prefetch
--loop-extract - Extract loops into new functions
--loop-extract-single - Extract at most one loop into a new function
--loop-reduce - Loop Strength Reduction
--loop-simplify - Canonicalize natural loops
--loop-unroll - Unroll loops
--loops - Natural Loop Information
--lower-amx-intrinsics - Lower AMX intrinsics
--lower-amx-type - Lower AMX type for load/store
--lower-constant-intrinsics - Lower constant intrinsics
--lower-global-dtors - Lower @llvm.global_dtors via `__cxa_atexit`
--loweratomic - Lower atomic intrinsics to non-atomic form
--lowerinvoke - Lower invoke and unwind, for unwindless code generators
--lowerswitch - Lower SwitchInst's to branches
--lowertilecopy - Tile Copy Lowering
--m68k-collapse-movem - M68k MOVEM collapser pass
--m68k-create-global-base-reg - M68k PIC Global Base Reg Initialization
--m68k-expand-pseudo - M68k pseudo instruction expansion pass
--m68k-isel - M68k DAG->DAG Pattern Instruction Selection
--machine-block-freq - Machine Block Frequency Analysis
--machine-branch-prob - Machine Branch Probability Analysis
--machine-cycles - Machine Cycle Info Analysis
--machine-domfrontier - Machine Dominance Frontier Construction
--machine-loops - Machine Natural Loop Construction
--machine-trace-metrics - Machine Trace Metrics
--machine-uniformity - Machine Uniformity Info Analysis
--machinedomtree - MachineDominator Tree Construction
--machinepostdomtree - MachinePostDominator Tree Construction
--mem2reg - Promote Memory to Register
--memdep - Memory Dependence Analysis
--memoryssa - Memory SSA
--mergeicmps - Merge contiguous icmps into a memcmp
--micromips-reduce-size - MicroMips instruction size reduce pass
--mips-branch-expansion - Expand out of range branch instructions and fix forbidden slot hazards
--mips-delay-slot-filler - Fill delay slot for MIPS
--mips-isel - MIPS DAG->DAG Pattern Instruction Selection
--mips-postlegalizer-combiner - Combine Mips machine instrs after legalization
--mips-prelegalizer-combiner - Combine Mips machine instrs before legalization
--mips-vr4300-mulmul-fix - Mips VR4300 mulmul bugfix
--module-summary-analysis - Module Summary Analysis
--module-summary-info - Module summary info
--msp430-isel - MSP430 DAG->DAG Pattern Instruction Selection
--mve-laneinterleave - MVE lane interleaving
--mve-tail-predication - Transform predicated vector loops to use MVE tail predication
--nary-reassociate - Nary reassociation
--nvptx-aa - NVPTX Address space based Alias Analysis
--nvptx-aa-wrapper - NVPTX Address space based Alias Analysis Wrapper
--nvptx-assign-valid-global-names - Assign valid PTX names to globals
--nvptx-atomic-lower - Lower atomics of local memory to simple load/stores
--nvptx-isel - NVPTX DAG->DAG Pattern Instruction Selection
--nvptx-lower-aggr-copies - Lower aggregate copies, and llvm.mem* intrinsics into loops
--nvptx-lower-alloca - Lower Alloca
--nvptx-lower-args - Lower arguments (NVPTX)
--nvptx-lower-ctor-dtor - Lower ctors and dtors for NVPTX
--nvptx-lower-unreachable - Lower Unreachable
--nvptx-proxyreg-erasure - NVPTX ProxyReg Erasure
--nvvm-intr-range - Add !range metadata to NVVM intrinsics.
--nvvm-reflect - Replace occurrences of __nvvm_reflect() calls with 0/1
--opt-remark-emitter - Optimization Remark Emitter
--packets - R600 Packetizer
--partially-inline-libcalls - Partially inline calls to library functions
--phi-values - Phi Values Analysis
--place-backedge-safepoints-impl - Place Backedge Safepoints
--polly-ast - Polly - Generate an AST from the SCoP (isl)
--polly-canonicalize - Polly - Run canonicalization passes
--polly-codegen - Polly - Create LLVM-IR from SCoPs
--polly-dce - Polly - Remove dead iterations
--polly-delicm - Polly - DeLICM/DePRE
--polly-dependences - Polly - Calculate dependences
--polly-detect - Polly - Detect static control parts (SCoPs)
--polly-dump-module - Polly - Dump Module
--polly-export-jscop - Polly - Export Scops as JSON (Writes a .jscop file for each Scop)
--polly-flatten-schedule - Polly - Flatten schedule
--polly-function-dependences - Polly - Calculate dependences for all the SCoPs of a function
--polly-function-scops - Polly - Create polyhedral description of all Scops of a function
--polly-import-jscop - Polly - Import Scops from JSON (Reads a .jscop file for each Scop)
--polly-mse - Polly - Maximal static expansion of SCoP
--polly-opt-isl - Polly - Optimize schedule of SCoP
--polly-optree - Polly - Forward operand tree
--polly-prepare - Polly - Prepare code for polly
--polly-print-ast - Polly - Print the AST from a SCoP (isl)
--polly-print-delicm - Polly - Print DeLICM/DePRE
--polly-print-dependences - Polly - Print dependences
--polly-print-detect - Polly - Print static control parts (SCoPs)
--polly-print-flatten-schedule - Polly - Print flattened schedule
--polly-print-function-dependences - Polly - Print dependences for all the SCoPs of a function
--polly-print-function-scops - Polly - Print polyhedral description of all Scops of a function
--polly-print-import-jscop - Polly - Print Scop import result
--polly-print-opt-isl - Polly - Print optimizer schedule of SCoP
--polly-print-optree - Polly - Print forward operand tree result
--polly-print-scops - Polly - Print polyhedral description of Scops
--polly-print-simplify - Polly - Print Simplify actions
--polly-prune-unprofitable - Polly - Prune unprofitable SCoPs
--polly-scop-inliner - inline functions based on how much of the function is a scop.
--polly-scops - Polly - Create polyhedral description of Scops
--polly-simplify - Polly - Simplify
--polyhedral-info - Polly - Interface to polyhedral analysis engine
--post-inline-ee-instrument - Instrument function entry/exit with calls to e.g. mcount() (post inlining)
--postdomtree - Post-Dominator Tree Construction
--ppc-atomic-expand - PowerPC Expand Atomic
--ppc-bool-ret-to-int - Convert i1 constants to i32/i64 if they are returned
--ppc-branch-coalescing - Branch Coalescing
--ppc-branch-select - PowerPC Branch Selector
--ppc-ctrloops - PowerPC CTR loops generation
--ppc-early-ret - PowerPC Early-Return Creation
--ppc-expand-isel - PowerPC Expand ISEL Generation
--ppc-gen-scalar-mass - Generate Scalar MASS entries
--ppc-isel - PowerPC DAG->DAG Pattern Instruction Selection
--ppc-loop-instr-form-prep - Prepare loop for ppc preferred instruction forms
--ppc-lower-massv-entries - Lower MASSV entries
--ppc-merge-strings - PPC Merge String Pool
--ppc-mi-peepholes - PowerPC MI Peephole Optimization
--ppc-pre-emit-peephole - PowerPC Pre-Emit Peephole
--ppc-reduce-cr-ops - PowerPC Reduce CR logical Operation
--ppc-tls-dynamic-call - PowerPC TLS Dynamic Call Fixup
--ppc-toc-reg-deps - PowerPC TOC Register Dependencies
--ppc-vsx-copy - PowerPC VSX Copy Legalization
--ppc-vsx-fma-mutate - PowerPC VSX FMA Mutation
--ppc-vsx-swaps - PowerPC VSX Swap Removal
--pre-isel-intrinsic-lowering - Pre-ISel Intrinsic Lowering
--print-function - Print function to stderr
--print-module - Print module to stderr
--print-polyhedral-info - Polly - Print interface to polyhedral analysis engine analysis
--profile-summary-info - Profile summary info
--pseudo-probe-inserter - Insert pseudo probe annotations for value profiling
--r600-expand-special-instrs - R600ExpandSpecialInstrs
--r600cf - R600 Control Flow Finalizer
--r600mergeclause - R600 Clause Merge
--reaching-deps-analysis - ReachingDefAnalysis
--reassociate - Reassociate expressions
--regbankselect - Assign register bank of generic virtual registers
--regions - Detect single entry single exit regions
--replace-with-veclib - Replace intrinsics with calls to vector library
--rewrite-partial-reg-uses - Rewrite Partial Register Uses
--riscv-O0-prelegalizer-combiner - Combine RISC-V machine instrs before legalization
--riscv-codegenprepare - RISC-V CodeGenPrepare
--riscv-dead-defs - RISC-V Dead register definitions
--riscv-expand-pseudo - RISC-V pseudo instruction expansion pass
--riscv-expand-pseudolisimm32 - RISC-V post-regalloc pseudo instruction expansion pass
--riscv-gather-scatter-lowering - RISC-V gather/scatter lowering pass
--riscv-insert-read-write-csr - RISC-V Insert Read/Write CSR Pass
--riscv-insert-vsetvli - RISC-V Insert VSETVLI pass
--riscv-insert-write-vxrm - RISC-V Insert Write VXRM Pass
--riscv-isel - RISC-V DAG->DAG Pattern Instruction Selection
--riscv-make-compressible - RISC-V Make Compressible
--riscv-merge-base-offset - RISC-V Merge Base Offset
--riscv-move-merge - RISC-V Zcmp move merging pass
--riscv-opt-w-instrs - RISC-V Optimize W Instructions
--riscv-postlegalizer-combiner - Combine RISC-V MachineInstrs after legalization
--riscv-prelegalizer-combiner - Combine RISC-V machine instrs before legalization
--riscv-prera-expand-pseudo - RISC-V Pre-RA pseudo instruction expansion pass
--riscv-push-pop-opt - RISC-V Zcmp Push/Pop optimization pass
--riscv-vector-peephole - RISC-V Fold Masks
--safe-stack - Safe Stack instrumentation pass
--scalar-evolution - Scalar Evolution Analysis
--scalarize-masked-mem-intrin - Scalarize unsupported masked memory intrinsics
--scev-aa - ScalarEvolution-based Alias Analysis
--scoped-noalias-aa - Scoped NoAlias Alias Analysis
--select-optimize - Optimize selects
--separate-const-offset-from-gep - Split GEPs to a variadic base and a constant offset for better CSE
--si-annotate-control-flow - Annotate SI Control Flow
--si-fix-sgpr-copies - SI Fix SGPR copies
--si-fix-vgpr-copies - SI Fix VGPR copies
--si-fold-operands - SI Fold Operands
--si-form-memory-clauses - SI Form memory clauses
--si-i1-copies - SI Lower i1 Copies
--si-insert-hard-clauses - SI Insert Hard Clauses
--si-insert-waitcnts - SI Insert Waitcnts
--si-late-branch-lowering - SI insert s_cbranch_execz instructions
--si-load-store-opt - SI Load Store Optimizer
--si-lower-control-flow - SI lower control flow
--si-lower-sgpr-spills - SI lower SGPR spill instructions
--si-lower-wwm-copies - SI Lower WWM Copies
--si-memory-legalizer - SI Memory Legalizer
--si-mode-register - Insert required mode register values
--si-opt-vgpr-liverange - SI Optimize VGPR LiveRange
--si-optimize-exec-masking - SI optimize exec mask operations
--si-optimize-exec-masking-pre-ra - SI optimize exec mask operations pre-RA
--si-peephole-sdwa - SI Peephole SDWA
--si-post-ra-bundler - SI post-RA bundler
--si-pre-allocate-wwm-regs - SI Pre-allocate WWM Registers
--si-pre-emit-peephole - SI peephole optimizations
--si-shrink-instructions - SI Shrink Instructions
--si-wqm - SI Whole Quad Mode
--simplifycfg - Simplify the CFG
--sink - Code sinking
--sjlj-eh-prepare - Prepare SjLj exceptions
--slotindexes - Slot index numbering
--slsr - Straight line strength reduction
--sparc-isel - SPARC DAG->DAG Pattern Instruction Selection
--speculative-execution - Speculatively execute instructions
--sroa - Scalar Replacement Of Aggregates
--stack-protector - Insert stack protectors
--stack-safety - Stack Safety Analysis
--stack-safety-local - Stack Safety Local Analysis
--structurizecfg - Structurize the CFG
--systemz-elim-compare - SystemZ Comparison Elimination
--systemz-isel - SystemZ DAG->DAG Pattern Instruction Selection
--systemz-ld-cleanup - SystemZ Local Dynamic TLS Access Clean-up
--systemz-long-branch - SystemZ Long Branch
--systemz-post-rewrite - SystemZ Post Rewrite pass
--systemz-shorten-inst - SystemZ Instruction Shortening
--systemz-tdc - SystemZ Test Data Class optimization
--tailcallelim - Tail Call Elimination
--targetlibinfo - Target Library Information
--targetpassconfig - Target Pass Configuration
--tbaa - Type-Based Alias Analysis
--thumb2-reduce-size - Thumb2 instruction size reduce pass
--tileconfig - Tile Register Configure
--tilepreconfig - Tile Register Pre-configure
--tlshoist - TLS Variable Hoist
--tti - Target Transform Information
--uniformity - Uniformity Analysis
--unify-loop-exits - Fixup each natural loop to have a single exit block
--unreachable-mbb-elimination - Remove unreachable machine basic blocks
--unreachableblockelim - Remove unreachable blocks from the CFG
--ve-isel - VE DAG->DAG Pattern Instruction Selection
--vec-merger - R600 Vector Reg Merger
--verify - Module Verifier
--verify-safepoint-ir - Safepoint IR Verifier
--view-callgraph - View call graph
--view-dom - View dominance tree of function
--view-dom-only - View dominance tree of function (with no function bodies)
--view-postdom - View postdominance tree of function
--view-postdom-only - View postdominance tree of function (with no function bodies)
--view-regions - View regions of function
--view-regions-only - View regions of function (with no function bodies)
--view-scops - Polly - View Scops of function
--view-scops-only - Polly - View Scops of function (with no function bodies)
--virtregmap - Virtual Register Map
--wasm-add-missing-prototypes - Add prototypes to prototypes-less functions
--wasm-argument-move - Move ARGUMENT instructions for WebAssembly
--wasm-cfg-sort - Reorders blocks in topological order
--wasm-cfg-stackify - Insert BLOCK/LOOP/TRY markers for WebAssembly scopes
--wasm-debug-fixup - Ensures debug_value's that have been stackified become stack relative
--wasm-eh-prepare - Prepare WebAssembly exceptions
--wasm-exception-info - WebAssembly Exception Information
--wasm-explicit-locals - Convert registers to WebAssembly locals
--wasm-fix-br-table-defaults - Removes range checks and sets br_table default targets
--wasm-fix-function-bitcasts - Fix mismatching bitcasts for WebAssembly
--wasm-fix-irreducible-control-flow - Removes irreducible control flow
--wasm-isel - WebAssembly Instruction Selection
--wasm-late-eh-prepare - WebAssembly Late Exception Preparation
--wasm-lower-br_unless - Lowers br_unless into inverted br_if
--wasm-lower-em-ehsjlj - WebAssembly Lower Emscripten Exceptions / Setjmp / Longjmp
--wasm-lower-reftypes-intptr-conv - WebAssembly Lower RefTypes Int-Ptr Conversions
--wasm-mclower-prepass - Collects information ahead of time for MC lowering
--wasm-mem-intrinsic-results - Optimize memory intrinsic result values for WebAssembly
--wasm-nullify-dbg-value-lists - WebAssembly Nullify DBG_VALUE_LISTs
--wasm-optimize-live-intervals - Optimize LiveIntervals for WebAssembly
--wasm-optimize-returned - Optimize calls with "returned" attributes for WebAssembly
--wasm-peephole - WebAssembly peephole optimizations
--wasm-ref-type-mem2local - Assign reference type allocas to local address space
--wasm-reg-coloring - Minimize number of registers used
--wasm-reg-numbering - Assigns WebAssembly register numbers for virtual registers
--wasm-reg-stackify - Reorder instructions to use the WebAssembly value stack
--wasm-replace-phys-regs - Replace physical registers with virtual registers
--wasm-set-p2align-operands - Set the p2align operands for WebAssembly loads and stores
--win-eh-prepare - Prepare Windows exceptions
--write-bitcode - Write Bitcode
--x86-avoid-SFB - Machine code sinking
--x86-avoid-trailing-call - X86 avoid trailing call pass
--x86-cf-opt - X86 Call Frame Optimization
--x86-cmov-conversion - X86 cmov Conversion
--x86-codegen - X86 FP Stackifier
--x86-compress-evex - Compressing EVEX instrs when possible
--x86-domain-reassignment - X86 Domain Reassignment Pass
--x86-execution-domain-fix - X86 Execution Domain Fix
--x86-fixup-LEAs - X86 LEA Fixup
--x86-fixup-bw-insts - X86 Byte/Word Instruction Fixup
--x86-fixup-inst-tuning - x86-fixup-inst-tuning
--x86-fixup-setcc - x86-fixup-setcc
--x86-fixup-vector-constants - x86-fixup-vector-constants
--x86-flags-copy-lowering - X86 EFLAGS copy lowering
--x86-isel - X86 DAG->DAG Instruction Selection
--x86-lvi-load - X86 LVI load hardening
--x86-lvi-ret - X86 LVI ret hardener
--x86-optimize-LEAs - X86 optimize LEA pass
--x86-partial-reduction - X86 Partial Reduction
--x86-pseudo - X86 pseudo instruction expansion pass
--x86-return-thunks - X86 Return Thunks
--x86-seses - X86 Speculative Execution Side Effect Suppression
--x86-slh - X86 speculative load hardener
--x86-winehstate - Insert stores for EH state numbers
--x86argumentstackrebase - Argument Stack Rebase
--xcore-isel - XCore DAG->DAG Pattern Instruction Selection
--aarch64-use-aa - Enable the use of AA during codegen.
--abort-on-max-devirt-iterations-reached - Abort when the max iterations for devirtualization CGSCC repeat pass is reached
--addrsig - Emit an address-significance table
--align-loops=<uint> - Default alignment for loops
--allow-ginsert-as-artifact - Allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
--amdgpu-atomic-optimizer-strategy=<value> - Select DPP or Iterative strategy for scan
=DPP - Use DPP operations for scan
=Iterative - Use Iterative approach for scan
=None - Disable atomic optimizer
--amdgpu-bypass-slow-div - Skip 64-bit divide for dynamic 32-bit values
--amdgpu-disable-loop-alignment - Do not align and prefetch loops
--amdgpu-dpp-combine - Enable DPP combiner
--amdgpu-dump-hsa-metadata - Dump AMDGPU HSA Metadata
--amdgpu-enable-merge-m0 - Merge and hoist M0 initializations
--amdgpu-enable-power-sched - Enable scheduling to minimize mAI power bursts
--amdgpu-kernarg-preload-count=<uint> - How many kernel arguments to preload onto SGPRs
--amdgpu-promote-alloca-to-vector-limit=<uint> - Maximum byte size to consider promote alloca to vector
--amdgpu-sdwa-peephole - Enable SDWA peepholer
--amdgpu-use-aa-in-codegen - Enable the use of AA during codegen.
--amdgpu-verify-hsa-metadata - Verify AMDGPU HSA Metadata
--amdgpu-vgpr-index-mode - Use GPR indexing mode instead of movrel for vector indexing
--arm-add-build-attributes -
--arm-implicit-it=<value> - Allow conditional instructions outdside of an IT block
=always - Accept in both ISAs, emit implicit ITs in Thumb
=never - Warn in ARM, reject in Thumb
=arm - Accept in ARM, reject in Thumb
=thumb - Warn in ARM, emit implicit ITs in Thumb
--asm-show-inst - Emit internal instruction representation to assembly file
--atomic-counter-update-promoted - Do counter update using atomic fetch add for promoted counters only
--atomic-first-counter - Use atomic fetch add for first counter in a function (usually the entry counter)
--basic-block-address-map - Emit the basic block address map section
--basic-block-sections=<all | <function list (file)> | labels | none> - Emit basic blocks into separate sections
--bounds-checking-single-trap - Use one trap block per function
--bounds-checking-unique-traps - Always use one trap per check
--bpf-stack-size=<int> - Specify the BPF stack size limit
--bugpoint-enable-legacy-pm - Enable the legacy pass manager. This is strictly for bugpoint due to it not working with the new PM, please do not use otherwise.
--cfg-hide-cold-paths=<number> - Hide blocks with relative frequency below the given value
--cfg-hide-deoptimize-paths -
--cfg-hide-unreachable-paths -
--check-functions-filter=<regex> - Only emit checks for arguments of functions whose names match the given regular expression
--code-model=<value> - Choose code model
=tiny - Tiny code model
=small - Small code model
=kernel - Kernel code model
=medium - Medium code model
=large - Large code model
--codegen-opt-level=<uint> - Override optimization level for codegen hooks, legacy PM only
--cost-kind=<value> - Target cost kind
=throughput - Reciprocal throughput
=latency - Instruction latency
=code-size - Code size
=size-latency - Code size and latency
--crel - Use CREL relocation format for ELF
--cs-profile-generate - Perform context sensitive PGO instrumentation
--cs-profile-path=<string> - Context sensitive profile file path
--data-layout=<layout-string> - data layout string to use
--data-sections - Emit data into separate sections
--debug-entry-values - Enable debug info for the debug entry values.
--debug-info-correlate - Use debug info to correlate profiles. (Deprecated, use -profile-correlate=debug-info)
--debugger-tune=<value> - Tune debug info for a particular debugger
=gdb - gdb
=lldb - lldb
=dbx - dbx
=sce - SCE targets (e.g. PS4)
--debugify-each - Start each pass with debugify and end it with check-debugify
--debugify-export=<filename> - Export per-pass debugify statistics to this file
--debugify-func-limit=<ulong> - Set max number of processed functions per pass.
--debugify-level=<value> - Kind of debug info to add
=locations - Locations only
=location+variables - Locations and Variables
--debugify-quiet - Suppress verbose debugify output
--denormal-fp-math=<value> - Select which denormal numbers the code is permitted to require
=ieee - IEEE 754 denormal numbers
=preserve-sign - the sign of a flushed-to-zero number is preserved in the sign of 0
=positive-zero - denormals are flushed to positive zero
=dynamic - denormals have unknown treatment
--denormal-fp-math-f32=<value> - Select which denormal numbers the code is permitted to require for float
=ieee - IEEE 754 denormal numbers
=preserve-sign - the sign of a flushed-to-zero number is preserved in the sign of 0
=positive-zero - denormals are flushed to positive zero
=dynamic - denormals have unknown treatment
--disable-auto-upgrade-debug-info - Disable autoupgrade of debug info
--disable-builtin=<string> - Disable specific target library builtin function
--disable-debug-info-type-map - Don't use a uniquing type map for debug info
--disable-i2p-p2i-opt - Disables inttoptr/ptrtoint roundtrip optimization
--disable-loop-unrolling - Disable loop unrolling in all relevant passes
--disable-promote-alloca-to-lds - Disable promote alloca to LDS
--disable-promote-alloca-to-vector - Disable promote alloca to vector
--disable-simplify-libcalls - Disable simplify-libcalls
--disable-tail-calls - Never emit tail calls
--do-counter-promotion - Do counter register promotion
--dot-cfg-mssa=<file name for generated dot file> - file name for generated dot file
--dwarf-version=<int> - Dwarf version
--dwarf64 - Generate debugging info in the 64-bit DWARF format
--emit-call-site-info - Emit call site debug information, if debug information is enabled.
--emit-compact-unwind-non-canonical - Whether to try to emit Compact Unwind for non canonical entries.
--emit-dwarf-unwind=<value> - Whether to emit DWARF EH frame entries.
=always - Always emit EH frame entries
=no-compact-unwind - Only emit EH frame entries when compact unwind is not available
=default - Use target platform default
--emscripten-cxx-exceptions-allowed=<string> - The list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
--emulated-tls - Use emulated TLS model
--enable-approx-func-fp-math - Enable FP math optimizations that assume approx func
--enable-cse-in-irtranslator - Should enable CSE in irtranslator
--enable-cse-in-legalizer - Should enable CSE in Legalizer
--enable-debugify - Start the pipeline with debugify and end it with check-debugify
--enable-emscripten-cxx-exceptions - WebAssembly Emscripten-style exception handling
--enable-emscripten-sjlj - WebAssembly Emscripten-style setjmp/longjmp handling
--enable-gvn-hoist - Enable the GVN hoisting pass (default = off)
--enable-gvn-memdep -
--enable-gvn-sink - Enable the GVN sinking pass (default = off)
--enable-jmc-instrument - Instrument functions with a call to __CheckForDebuggerJustMyCode
--enable-jump-table-to-switch - Enable JumpTableToSwitch pass (default = off)
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loop-simplifycfg-term-folding -
--enable-name-compression - Enable name/filename string compression
--enable-no-infs-fp-math - Enable FP math optimizations that assume no +-Infs
--enable-no-nans-fp-math - Enable FP math optimizations that assume no NaNs
--enable-no-signed-zeros-fp-math - Enable FP math optimizations that assume the sign of 0 is insignificant
--enable-no-trapping-fp-math - Enable setting the FP exceptions build attribute not to use exceptions
--enable-pgo-force-function-attrs - Enable pass to set function attributes based on PGO profiles
--enable-split-backedge-in-load-pre -
--enable-split-loopiv-heuristic - Enable loop iv regalloc heuristic
--enable-tlsdesc - Enable the use of TLS Descriptors
--enable-unsafe-fp-math - Enable optimizations that may decrease FP precision
--enable-vtable-profile-use - If ThinLTO and WPD is enabled and this option is true, vtable profiles will be used by ICP pass for more efficient indirect call sequence. If false, type profiles won't be used.
--enable-vtable-value-profiling - If true, the virtual table address will be instrumented to know the types of a C++ pointer. The information is used in indirect call promotion to do selective vtable-based comparison.
--exception-model=<value> - exception model
=default - default exception handling model
=dwarf - DWARF-like CFI based exception handling
=sjlj - SjLj exception handling
=arm - ARM EHABI exceptions
=wineh - Windows exception model
=wasm - WebAssembly exception handling
--expand-variadics-override=<value> - Override the behaviour of expand-variadics
=unspecified - Use the implementation defaults
=disable - Disable the pass entirely
=optimize - Optimise without changing ABI
=lowering - Change variadic calling convention
--experimental-debug-variable-locations - Use experimental new value-tracking variable locations
--experimental-debuginfo-iterators - Enable communicating debuginfo positions through iterators, eliminating intrinsics. Has no effect if --preserve-input-debuginfo-format=true.
-f - Enable binary output on terminals
--fatal-warnings - Treat warnings as errors
--fdpic - Use the FDPIC ABI
--filetype=<value> - Choose a file type (not all types are supported by all targets):
=asm - Emit an assembly ('.s') file
=obj - Emit a native object ('.o') file
=null - Emit nothing, for performance testing
--float-abi=<value> - Choose float ABI type
=default - Target default float ABI type
=soft - Soft float ABI (implied by -soft-float)
=hard - Hard float ABI (uses FP registers)
--force-dwarf-frame-section - Always emit a debug frame section.
--force-tail-folding-style=<value> - Force the tail folding style
=none - Disable tail folding
=data - Create lane mask for data only, using active.lane.mask intrinsic
=data-without-lane-mask - Create lane mask with compare/stepvector
=data-and-control - Create lane mask using active.lane.mask intrinsic, and use it for both data and control flow
=data-and-control-without-rt-check - Similar to data-and-control, but remove the runtime check
=data-with-evl - Use predicated EVL instructions for tail folding. If EVL is unsupported, fallback to data-without-lane-mask.
--fp-contract=<value> - Enable aggressive formation of fused FP ops
=fast - Fuse FP ops whenever profitable
=on - Only fuse 'blessed' FP ops.
=off - Only fuse FP ops when the result won't be affected.
--frame-pointer=<value> - Specify frame pointer elimination optimization
=all - Disable frame pointer elimination
=non-leaf - Disable frame pointer elimination for non-leaf frame
=reserved - Enable frame pointer elimination, but reserve the frame pointer register
=none - Enable frame pointer elimination
--fs-profile-debug-bw-threshold=<uint> - Only show debug message if the source branch weight is greater than this value.
--fs-profile-debug-prob-diff-threshold=<uint> - Only show debug message if the branch probility is greater than this value (in percentage).
--function-sections - Emit functions into separate sections
--generate-merged-base-profiles - When generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
--gpsize=<uint> - Global Pointer Addressing Size. The default size is 8.
--hash-based-counter-split - Rename counter variable of a comdat function based on cfg hash
--hexagon-add-build-attributes -
--hexagon-rdf-limit=<uint> -
--hot-cold-split - Enable hot-cold splitting pass
--hwasan-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--hwasan-random-rate=<number> - Probability value in the range [0.0, 1.0] to keep instrumentation of a function.
--ignore-xcoff-visibility - Not emit the visibility attribute for asm in AIX OS or give all symbols 'unspecified' visibility in XCOFF object file
--import-all-index - Import all external functions in index.
--incremental-linker-compatible - When used with filetype=obj, emit an object file which can be used with an incremental linker
--instcombine-code-sinking - Enable code sinking
--instcombine-guard-widening-window=<uint> - How wide an instruction window to bypass looking for another guard
--instcombine-max-num-phis=<uint> - Maximum number phis to handle in intptr/ptrint folding
--instcombine-max-sink-users=<uint> - Maximum number of undroppable users for instruction sinking
--instcombine-maxarray-size=<uint> - Maximum array size considered when doing a combine
--instcombine-negator-enabled - Should we attempt to sink negations?
--instcombine-negator-max-depth=<uint> - What is the maximal lookup depth when trying to check for viability of negation sinking.
--instrprof-atomic-counter-update-all - Make all profile counter updates atomic (for testing only)
--internalize-public-api-file=<filename> - A file containing list of symbol names to preserve
--internalize-public-api-list=<list> - A list of symbol names to preserve
--iterative-counter-promotion - Allow counter promotion across the whole loop nest.
--large-data-threshold=<ulong> - Choose large data threshold for x86_64 medium code model
--lint-abort-on-error - In the Lint pass, abort on errors.
--load=<pluginfilename> - Load the specified plugin
--load-pass-plugin=<string> - Load passes from plugin library
--lower-allow-check-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--lower-allow-check-random-rate=<number> - Probability value in the range [0.0, 1.0] of unconditional pseudo-random checks.
--lto-aix-system-assembler=<path> - Path to a system assembler, picked up on AIX only
--lto-embed-bitcode=<value> - Embed LLVM bitcode in object files produced by LTO
=none - Do not embed
=optimized - Embed after all optimization passes
=post-merge-pre-opt - Embed post merge, but before optimizations
--lto-pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--lto-pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--lto-pass-remarks-output=<filename> - Output filename for pass remarks
--march=<string> - Architecture to generate code for (see --version)
--matrix-default-layout=<value> - Sets the default matrix layout
=column-major - Use column-major layout
=row-major - Use row-major layout
--matrix-print-after-transpose-opt -
--mattr=<a1,+a2,-a3,...> - Target specific attributes (-mattr=help for details)
--max-counter-promotions=<int> - Max number of allowed counter promotions
--max-counter-promotions-per-loop=<uint> - Max number counter promotions per loop to avoid increasing register pressure too much
--mc-relax-all - When used with filetype=obj, relax all fixups in the emitted object file
--mcabac - tbd
--mcpu=<cpu-name> - Target a specific cpu type (-mcpu=help for details)
--meabi=<value> - Set EABI type (default depends on triple):
=default - Triple default EABI version
=4 - EABI version 4
=5 - EABI version 5
=gnu - EABI GNU
--merror-missing-parenthesis - Error for missing parenthesis around predicate registers
--merror-noncontigious-register - Error for register names that aren't contigious
--mhvx - Enable Hexagon Vector eXtensions
--mhvx=<value> - Enable Hexagon Vector eXtensions
=v60 - Build for HVX v60
=v62 - Build for HVX v62
=v65 - Build for HVX v65
=v66 - Build for HVX v66
=v67 - Build for HVX v67
=v68 - Build for HVX v68
=v69 - Build for HVX v69
=v71 - Build for HVX v71
=v73 - Build for HVX v73
--mips-compact-branches=<value> - MIPS Specific: Compact branch policy.
=never - Do not use compact branches if possible.
=optimal - Use compact branches where appropriate (default).
=always - Always use compact branches if possible.
--mips16-constant-islands - Enable mips16 constant islands.
--mips16-hard-float - Enable mips16 hard float.
--mir-strip-debugify-only - Should mir-strip-debug only strip debug info from debugified modules by default
--misexpect-tolerance=<uint> - Prevents emitting diagnostics when profile counts are within N% of the threshold..
--mno-compound - Disable looking for compound instructions for Hexagon
--mno-fixup - Disable fixing up resolved relocations for Hexagon
--mno-ldc1-sdc1 - Expand double precision loads and stores to their single precision counterparts
--mno-pairing - Disable looking for duplex instructions for Hexagon
--module-hash - Emit module hash
--module-summary - Emit module summary index
--mtriple=<string> - Override target triple for module
--mwarn-missing-parenthesis - Warn for missing parenthesis around predicate registers
--mwarn-noncontigious-register - Warn for register names that arent contigious
--mwarn-sign-mismatch - Warn for mismatching a signed and unsigned value
--mxcoff-roptr - When set to true, const objects with relocatable address values are put into the RO data section.
--no-deprecated-warn - Suppress all deprecated warnings
--no-discriminators - Disable generation of discriminator information.
--no-integrated-as - Disable integrated assembler
--no-type-check - Suppress type errors (Wasm)
--no-warn - Suppress all warnings
--nozero-initialized-in-bss - Don't place zero-initialized symbols into bss section
--nvptx-sched4reg - NVPTX Specific: schedule for register pressue
-o <filename> - Override output filename
--object-size-offset-visitor-max-visit-instructions=<uint> - Maximum number of instructions for ObjectSizeOffsetVisitor to look at
--pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--pass-remarks-output=<filename> - Output filename for pass remarks
--passes=<string> - A textual description of the pass pipeline. To have analysis passes available before a certain pass, add "require<foo-analysis>".
--pgo-block-coverage - Use this option to enable basic block coverage instrumentation
--pgo-temporal-instrumentation - Use this option to enable temporal instrumentation
--pgo-view-block-coverage-graph - Create a dot file of CFGs with block coverage inference information
--poison-checking-function-local - Check that returns are non-poison (for testing)
--print-passes - Print available passes that can be specified in -passes=foo and exit
--print-pipeline-passes - Print a '-passes' compatible string describing the pipeline (best-effort only).
--profile-correlate=<value> - Use debug info or binary file to correlate profiles.
=<empty> - No profile correlation
=debug-info - Use debug info to correlate
=binary - Use binary to correlate
--promote-alloca-vector-loop-user-weight=<uint> - The bonus weight of users of allocas within loop when sorting profitable allocas
--r600-ir-structurize - Use StructurizeCFG IR pass
--relocation-model=<value> - Choose relocation model
=static - Non-relocatable code
=pic - Fully relocatable, position independent code
=dynamic-no-pic - Relocatable external references, non-relocatable code
=ropi - Code and read-only data relocatable, accessed PC-relative
=rwpi - Read-write data relocatable, accessed relative to static base
=ropi-rwpi - Combination of ropi and rwpi
--riscv-add-build-attributes -
--riscv-use-aa - Enable the use of AA during codegen.
--runtime-counter-relocation - Enable relocating counters at runtime.
--safepoint-ir-verifier-print-only -
--sample-profile-check-record-coverage=<N> - Emit a warning if less than N% of records in the input profile are matched to the IR.
--sample-profile-check-sample-coverage=<N> - Emit a warning if less than N% of samples in the input profile are matched to the IR.
--sample-profile-max-propagate-iterations=<uint> - Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
--sampled-instr-burst-duration=<uint> - Set the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. This number of samples will be recorded for each 'sampled-instr-period' count update. Setting to 1 enables simple sampling, in which case it is recommended to set 'sampled-instr-period' to a prime number.
--sampled-instr-period=<uint> - Set the profile instrumentation sample period. For each sample period, a fixed number of consecutive samples will be recorded. The number is controlled by 'sampled-instr-burst-duration' flag. The default sample period of 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow.
--sampled-instrumentation - Do PGO instrumentation sampling
--save-temp-labels - Don't discard temporary labels
--separate-named-sections - Use separate unique sections for named sections
--skip-ret-exit-block - Suppress counter promotion if exit blocks contain ret.
--speculative-counter-promotion-max-exiting=<uint> - The max number of exiting blocks of a loop to allow speculative counter promotion
--speculative-counter-promotion-to-loop - When the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
--split-machine-functions - Split out cold basic blocks from machine functions based on profile information
--stack-size-section - Emit a section containing stack size metadata
--stack-symbol-ordering - Order local stack symbols.
--stackrealign - Force align the stack to the minimum alignment
--strict-dwarf - use strict dwarf
--strip-debug - Strip debugger symbol info from translation unit
--strip-named-metadata - Strip module-level named metadata
--summary-file=<string> - The summary file to use for function importing.
--sve-tail-folding=<string> - Control the use of vectorisation using tail-folding for SVE where the option is specified in the form (Initial)[+(Flag1|Flag2|...)]:
disabled (Initial) No loop types will vectorize using tail-folding
default (Initial) Uses the default tail-folding settings for the target CPU
all (Initial) All legal loop types will vectorize using tail-folding
simple (Initial) Use tail-folding for simple loops (not reductions or recurrences)
reductions Use tail-folding for loops containing reductions
noreductions Inverse of above
recurrences Use tail-folding for loops containing fixed order recurrences
norecurrences Inverse of above
reverse Use tail-folding for loops requiring reversed predicates
noreverse Inverse of above
--swift-async-fp=<value> - Determine when the Swift async frame pointer should be set
=auto - Determine based on deployment target
=always - Always set the bit
=never - Never set the bit
--tail-predication=<value> - MVE tail-predication pass options
=disabled - Don't tail-predicate loops
=enabled-no-reductions - Enable tail-predication, but not for reduction loops
=enabled - Enable tail-predication, including reduction loops
=force-enabled-no-reductions - Enable tail-predication, but not for reduction loops, and force this which might be unsafe
=force-enabled - Enable tail-predication, including reduction loops, and force this which might be unsafe
--tailcallopt - Turn fastcc calls into tail calls by (potentially) changing ABI.
--thin-link-bitcode-file=<filename> - A file in which to write minimized bitcode for the thin link only
--thinlto-assume-merged - Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
--thinlto-bc - Write output as ThinLTO-ready bitcode
--thinlto-split-lto-unit - Enable splitting of a ThinLTO LTOUnit
--thread-model=<value> - Choose threading model
=posix - POSIX thread model
=single - Single thread model
--threads=<int> -
--time-trace - Record time trace
--time-trace-file=<filename> - Specify time trace file destination
--tls-size=<uint> - Bit size of immediate TLS offsets
--type-based-intrinsic-cost - Calculate intrinsics cost based only on argument types
--unique-basic-block-section-names - Give unique names to every basic block section
--unique-section-names - Give unique names to every section
--use-ctors - Use .ctors instead of .init_array.
--use-undef - Use undef when generating programs.
--vec-extabi - Enable the AIX Extended Altivec ABI.
--verify-debuginfo-preserve - Start the pipeline with collecting and end it with checking of debug info preservation.
--verify-di-preserve-export=<filename> - Export debug info preservation failures into specified (JSON) file (should be abs path as we use append mode to insert new JSON objects)
--verify-each - Verify after each transform
--verify-each-debuginfo-preserve - Start each pass with collecting and end it with checking of debug info preservation.
--verify-region-info - Verify region info (time consuming)
--vp-counters-per-site=<number> - The average number of profile counters allocated per value profiling site.
--vp-static-alloc - Do static counter allocation for value profiler
--wasm-enable-eh - WebAssembly exception handling
--wasm-enable-exnref - WebAssembly exception handling (exnref)
--wasm-enable-sjlj - WebAssembly setjmp/longjmp handling
--write-experimental-debuginfo - Write debug info in the new non-intrinsic format. Has no effect if --preserve-input-debuginfo-format=true.
--x86-align-branch=<string> - Specify types of branches to align (plus separated list of types):
jcc indicates conditional jumps
fused indicates fused conditional jumps
jmp indicates direct unconditional jumps
call indicates direct and indirect calls
ret indicates rets
indirect indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint> - Control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches.
--x86-branches-within-32B-boundaries - Align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
--x86-pad-max-prefix-size=<uint> - Maximum number of prefixes to use for padding
--x86-relax-relocations - Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF
--x86-sse2avx - Specify that the assembler should encode SSE instructions with VEX prefix
--xcoff-traceback-table - Emit the XCOFF traceback table
--xray-function-index - Emit xray_fn_idx section
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Polly Options:
Configure the polly loop optimizer
--polly - Enable the polly optimizer (with -O1, -O2 or -O3)
--polly-2nd-level-tiling - Enable a 2nd level loop of loop tiling
--polly-ast-print-accesses - Print memory access functions
--polly-context=<isl parameter set> - Provide additional constraints on the context parameters
--polly-dce-precise-steps=<int> - The number of precise steps between two approximating iterations. (A value of -1 schedules another approximation stage before the actual dead code elimination.
--polly-delicm-max-ops=<int> - Maximum number of isl operations to invest for lifetime analysis; 0=no limit
--polly-detect-full-functions - Allow the detection of full functions
--polly-dump-after - Dump module after Polly transformations into a file suffixed with "-after"
--polly-dump-after-file=<string> - Dump module after Polly transformations to the given file
--polly-dump-before - Dump module before Polly transformations into a file suffixed with "-before"
--polly-dump-before-file=<string> - Dump module before Polly transformations to the given file
--polly-enable-simplify - Simplify SCoP after optimizations
--polly-ignore-func=<string> - Ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided.
--polly-isl-arg=<argument> - Option passed to ISL
--polly-matmul-opt - Perform optimizations of matrix multiplications based on pattern matching
--polly-on-isl-error-abort - Abort if an isl error is encountered
--polly-only-func=<string> - Only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided.
--polly-only-region=<identifier> - Only run on certain regions (The provided identifier must appear in the name of the region's entry block
--polly-only-scop-detection - Only run scop detection, but no other optimizations
--polly-optimized-scops - Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree
--polly-parallel - Generate thread parallel code (isl codegen only)
--polly-parallel-force - Force generation of thread parallel code ignoring any cost model
--polly-pattern-matching-based-opts - Perform optimizations based on pattern matching
--polly-postopts - Apply post-rescheduling optimizations such as tiling (requires -polly-reschedule)
--polly-pragma-based-opts - Apply user-directed transformation from metadata
--polly-pragma-ignore-depcheck - Skip the dependency check for pragma-based transformations
--polly-process-unprofitable - Process scops that are unlikely to benefit from Polly optimizations.
--polly-register-tiling - Enable register tiling
--polly-report - Print information about the activities of Polly
--polly-reschedule - Optimize SCoPs using ISL
--polly-show - Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions)
--polly-show-only - Highlight the code regions that will be optimized in a (CFG only BBs)
--polly-stmt-granularity=<value> - Algorithm to use for splitting basic blocks into multiple statements
=bb - One statement per basic block
=scalar-indep - Scalar independence heuristic
=store - Store-level granularity
--polly-tc-opt - Perform optimizations of tensor contractions based on pattern matching
--polly-tiling - Enable loop tiling
--polly-vectorizer=<value> - Select the vectorization strategy
=none - No Vectorization
=stripmine - Strip-mine outer loops for the loop-vectorizer to trigger
sanstats
root@kali:~# sanstats -h
OVERVIEW: Sanitizer Statistics Processing Tool
USAGE: sanstats [options] <filename>
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
sanstats Options:
--demangle - Print demangled function name
verify-uselistorder
root@kali:~# verify-uselistorder -h
OVERVIEW: llvm tool to verify use-list order
USAGE: verify-uselistorder [options] <input bitcode file>
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
verify-uselistorder Options:
--num-shuffles=<uint> - Number of times to shuffle and verify use-lists
--save-temps - Save temp files
yaml2obj
root@kali:~# yaml2obj -h
OVERVIEW: Create an object file from a YAML description
USAGE: yaml2obj [options] <input file>
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
yaml2obj Options:
-D <string> - Defined the specified macros to their specified definition. The syntax is <macro>=<definition>
-E - Just print the preprocessed file
--docnum=<uint> - Read specified document from input (default = 1)
--max-size=<ulong> - Sets the maximum allowed output size (0 means no limit) [ELF only]
-o <filename> - Output filename
llvm-bolt
It achieves the improvements by optimizing application’s code layout based on execution profile gathered by sampling profiler.
This is a dependency package providing bolt.
This package is not called bolt because it is already used.
Installed size: 17 KB
How to install: sudo apt install llvm-bolt
Dependencies:
- bolt-19
llvm-bolt
root@kali:~# llvm-bolt -h
OVERVIEW: BOLT - Binary Optimization and Layout Tool
USAGE: llvm-bolt [options] <executable> <executable>
OPTIONS:
BOLT generic options:
--bolt-id=<string> - add any string to tag this execution in the output binary via bolt info section
--create-debug-names-section - Creates .debug_names section, if the input binary doesn't have it already, for DWARF5 CU/TUs.
--data=<string> - <data file>
--data2=<string> - <data file>
--dump-cg=<string> - dump callgraph to the given file
--dwarf-output-path=<string> - Path to where .dwo files or dwp file will be written out to.
--dyno-stats - print execution info based on profile
--enable-bat - write BOLT Address Translation tables
--hot-data - hot data symbols support (relocation mode)
--hot-functions-at-end - if reorder-functions is used, order functions putting hottest last
--hot-text - Generate hot text symbols. Apply this option to a precompiled binary that manually calls into hugify, such that at runtime hugify call will put hot code into 2M pages. This requires relocation.
--hot-text-move-sections=<sec1,sec2,sec3,...> - list of sections containing functions used for hugifying hot text. BOLT makes sure these functions are not placed on the same page as the hot text. (default='.stub,.mover').
--insert-retpolines - run retpoline insertion pass
--lite - skip processing of cold functions
--no-threads - disable multithreading
--print-profile-stats - print profile quality/bias analysis
--r11-availability=<value> - determine the availability of r11 before indirect branches
=never - r11 not available
=always - r11 available before calls and jumps
=abi - r11 available before calls but not before jumps
--relocs - use relocations in the binary (default=autodetect)
--remove-symtab - Remove .symtab section
--strict - trust the input to be from a well-formed source
--tasks-per-thread=<uint> - number of tasks to be created per thread
--thread-count=<uint> - number of threads
--update-debug-sections - update DWARF debug sections of the executable
--use-gnu-stack - use GNU_STACK program header for new segment (workaround for issues with strip/objcopy)
--use-old-text - re-use space in old .text if possible (relocation mode)
-v <uint> - set verbosity level for diagnostic output
--write-dwp - output a single dwarf package file (dwp) instead of multiple non-relocatable dwarf object files (dwo).
BOLT instrumentation options:
--conservative-instrumentation - disable instrumentation optimizations that sacrifice profile accuracy (for debugging, default: false)
--instrument-calls - record profile for inter-function control flow activity (default: true)
--instrument-hot-only - only insert instrumentation on hot functions (needs profile, default: false)
--instrumentation-binpath=<string> - path to instrumented binary in case if /proc/self/map_files is not accessible due to access restriction issues
--instrumentation-file=<string> - file name where instrumented profile will be saved (default: /tmp/prof.fdata)
--instrumentation-file-append-pid - append PID to saved profile file name (default: false)
--instrumentation-no-counters-clear - Don't clear counters across dumps (use with instrumentation-sleep-time option)
--instrumentation-sleep-time=<uint> - interval between profile writes (default: 0 = write only at program end). This is useful for service workloads when you want to dump profile every X minutes or if you are killing the program and the profile is not being dumped at the end.
--instrumentation-wait-forks - Wait until all forks of instrumented process will finish (use with instrumentation-sleep-time option)
BOLT optimization options:
--align-blocks - align basic blocks
--align-functions=<uint> - align functions at a given value (relocation mode)
--align-functions-max-bytes=<uint> - maximum number of bytes to use to align functions
--assume-abi - assume the ABI is never violated
--block-alignment=<uint> - boundary to use for alignment of basic blocks
--cg-from-perf-data - use perf data directly when constructing the call graph for stale functions
--cg-ignore-recursive-calls - ignore recursive calls when constructing the call graph
--cg-use-split-hot-size - use hot/cold data on basic blocks to determine hot sizes for call graph functions
--eliminate-unreachable - eliminate unreachable code
--frame-opt=<value> - optimize stack frame accesses
=none - do not perform frame optimization
=hot - perform FOP on hot functions
=all - perform FOP on all functions
--frame-opt-rm-stores - apply additional analysis to remove stores (experimental)
--function-order=<string> - file containing an ordered list of functions to use for function reordering
--generate-function-order=<string> - file to dump the ordered list of functions to use for function reordering
--generate-link-sections=<string> - generate a list of function sections in a format suitable for inclusion in a linker script
--group-stubs - share stubs across functions
--hugify - Automatically put hot code on 2MB page(s) (hugify) at runtime. No manual call to hugify is needed in the binary (which is what --hot-text relies on).
--icf - fold functions with identical code
--icp-eliminate-loads - enable load elimination using memory profiling data when performing ICP
--indirect-call-promotion=<value> - indirect call promotion
=none - do not perform indirect call promotion
=calls - perform ICP on indirect calls
=jump-tables - perform ICP on jump tables
=all - perform ICP on calls and jump tables
--indirect-call-promotion-calls-topn=<uint> - limit number of targets to consider when doing indirect call promotion on calls. 0 = no limit
--indirect-call-promotion-jump-tables-topn=<uint> - limit number of targets to consider when doing indirect call promotion on jump tables. 0 = no limit
--indirect-call-promotion-mispredict-threshold=<uint> - misprediction threshold for skipping ICP on an indirect call
--indirect-call-promotion-topn=<uint> - limit number of targets to consider when doing indirect call promotion. 0 = no limit
--indirect-call-promotion-use-mispredicts - use misprediction frequency for determining whether or not ICP should be applied at a callsite. The -indirect-call-promotion-mispredict-threshold value will be used by this heuristic
--inline-all - inline all functions
--inline-ap - adjust function profile after inlining
--inline-memcpy - inline memcpy using 'rep movsb' instruction (X86-only)
--inline-small-functions - inline functions if increase in size is less than defined by -inline-small-functions-bytes
--instrument - instrument code to generate accurate profile data
--jt-footprint-optimize-for-icache - with jt-footprint-reduction, only process PIC jumptables and turn off other transformations that increase code size
--jt-footprint-reduction - make jump tables size smaller at the cost of using more instructions at jump sites
--jump-tables=<value> - jump tables support (default=basic)
=none - do not optimize functions with jump tables
=basic - optimize functions with jump tables
=move - move jump tables to a separate section
=split - split jump tables section into hot and cold based on function execution frequency
=aggressive - aggressively split jump tables section based on usage of the tables
--memcpy1-spec=<func1,func2:cs1:cs2,func3:cs1,...> - list of functions with call sites for which to specialize memcpy() for size 1
--no-inline - disable all inlining (overrides other inlining options)
--peepholes=<value> - enable peephole optimizations
=none - disable peepholes
=double-jumps - remove double jumps when able
=tailcall-traps - insert tail call traps
=useless-branches - remove useless conditional branches
=all - enable all peephole optimizations
--plt=<value> - optimize PLT calls (requires linking with -znow)
=none - do not optimize PLT calls
=hot - optimize executed (hot) PLT calls
=all - optimize all PLT calls
--preserve-blocks-alignment - try to preserve basic block alignment
--print-cache-metrics - calculate and print various metrics for instruction cache
--print-function-statistics=<uint> - print statistics about basic block ordering
--print-large-functions - print functions that could not be overwritten due to excessive size
--print-sorted-by=<value> - print functions sorted by order of dyno stats
=executed-forward-branches - executed forward branches
=taken-forward-branches - taken forward branches
=executed-backward-branches - executed backward branches
=taken-backward-branches - taken backward branches
=executed-unconditional-branches - executed unconditional branches
=all-function-calls - all function calls
=indirect-calls - indirect calls
=PLT-calls - PLT calls
=executed-instructions - executed instructions
=executed-load-instructions - executed load instructions
=executed-store-instructions - executed store instructions
=taken-jump-table-branches - taken jump table branches
=taken-unknown-indirect-branches - taken unknown indirect branches
=total-branches - total branches
=taken-branches - taken branches
=non-taken-conditional-branches - non-taken conditional branches
=taken-conditional-branches - taken conditional branches
=all-conditional-branches - all conditional branches
=linker-inserted-veneer-calls - linker-inserted veneer calls
=all - sorted by all names
--print-sorted-by-order=<value> - use ascending or descending order when printing functions ordered by dyno stats
--reg-reassign - reassign registers so as to avoid using REX prefixes in hot code
--reorder-blocks=<value> - change layout of basic blocks in a function
=none - do not reorder basic blocks
=reverse - layout blocks in reverse order
=normal - perform optimal layout based on profile
=branch-predictor - perform optimal layout prioritizing branch predictions
=cache - perform optimal layout prioritizing I-cache behavior
=cache+ - perform layout optimizing I-cache behavior
=ext-tsp - perform layout optimizing I-cache behavior
=cluster-shuffle - perform random layout of clusters
--reorder-data=<section1,section2,section3,...> - list of sections to reorder
--reorder-data-algo=<value> - algorithm used to reorder data sections
=count - sort hot data by read counts
=funcs - sort hot data by hot function usage and count
--reorder-data-inplace - reorder data sections in place
--reorder-data-max-bytes=<uint> - maximum number of bytes to reorder
--reorder-data-max-symbols=<uint> - maximum number of symbols to reorder
--reorder-functions=<value> - reorder and cluster functions (works only with relocations)
=none - do not reorder functions
=exec-count - order by execution count
=hfsort - use hfsort algorithm
=hfsort+ - use cache-directed sort
=cdsort - use cache-directed sort
=pettis-hansen - use Pettis-Hansen algorithm
=random - reorder functions randomly
=user - use function order specified by -function-order
--reorder-functions-use-hot-size - use a function's hot size when doing clustering
--runtime-hugify-lib=<string> - specify file name of the runtime hugify library
--runtime-instrumentation-lib=<string> - specify file name of the runtime instrumentation library
--sctc-mode=<value> - mode for simplify conditional tail calls
=always - always perform sctc
=preserve - only perform sctc when branch direction is preserved
=heuristic - use branch prediction data to control sctc
--sequential-disassembly - performs disassembly sequentially
--shorten-instructions - shorten instructions
--shrink-wrapping-threshold=<uint> - Percentage of prologue execution count to use as threshold when evaluating whether a block is cold enough to be profitable to move eligible spills there
--simplify-conditional-tail-calls - simplify conditional tail calls by removing unnecessary jumps
--simplify-rodata-loads - simplify loads from read-only sections by replacing the memory operand with the constant found in the corresponding section
--split-all-cold - outline as many cold basic blocks as possible
--split-functions - split functions into fragments
--split-strategy=<value> - strategy used to partition blocks into fragments
=profile2 - split each function into a hot and cold fragment using profiling information
=cdsplit - split each function into a hot, warm, and cold fragment using profiling information
=random2 - split each function into a hot and cold fragment at a randomly chosen split point (ignoring any available profiling information)
=randomN - split each function into N fragments at a randomly chosen split points (ignoring any available profiling information)
=all - split all basic blocks of each function into fragments such that each fragment contains exactly a single basic block
--stoke - turn on the stoke analysis
--strip-rep-ret - strip 'repz' prefix from 'repz retq' sequence (on by default)
--time-opts - print time spent in each optimization
--use-aggr-reg-reassign - use register liveness analysis to try to find more opportunities for -reg-reassign optimization
--use-compact-aligner - Use compact approach for aligning functions
--use-edge-counts - use edge count data when doing clustering
--x86-align-branch-boundary-hot-only - only apply branch boundary alignment in hot code
--x86-strip-redundant-address-size - Remove redundant Address-Size override prefix
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Output options:
-o <string> - <output file>
-w <string> - save recorded profile to a file
llvm-bolt-heatmap
root@kali:~# llvm-bolt-heatmap -h
USAGE: llvm-bolt-heatmap [options] <executable>
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Heatmap options:
--block-size=<uint> - size of a heat map block in bytes (default 64)
--line-size=<uint> - number of entries per line (default 256)
--max-address=<ulong> - maximum address considered valid for heatmap (default 4GB)
--min-address=<ulong> - minimum address considered valid for heatmap (default 0)
--print-mappings - print mappings in the legend, between characters/blocks and text sections (default false)
Output options:
-o <string> - <output file>
-w <string> - save recorded profile to a file
llvm-boltdiff
root@kali:~# llvm-boltdiff -h
OVERVIEW: llvm-boltdiff - BOLT binary diff tool
EXAMPLE: llvm-boltdiff -data=a.fdata -data2=b.fdata exec1 exec2
USAGE: llvm-boltdiff [options] <executable> <executable>
OPTIONS:
BOLTDIFF generic options:
--display-count=<uint> - number of functions to display when printing the top largest differences in function activity
--ignore-lto-suffix - ignore lto_priv or const suffixes when matching functions
--ignore-unchanged - do not diff functions whose contents have not been changed from one binary to another
--match-by-hash - match functions in binary 2 to binary 1 if they have the same hash of a function in binary 1
--normalize-by-bin1 - show execution count of functions in binary 2 as a ratio of the total samples in binary 1 - make sure both profiles have equal collection time and sampling rate for this to make sense
--print-diff-bbs - print the basic blocks showed in top differences
--print-diff-cfg - print the CFG of important functions that changed in binary 2
--print-profiled-unmapped - print functions that have profile in binary 1 but do not in binary 2
--print-unmapped - print functions of binary 2 that were not matched to any function in binary 1
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
merge-fdata
root@kali:~# merge-fdata -h
OVERVIEW: merge multiple fdata into a single file
USAGE: merge-fdata [options] <fdata1> [<fdata2>]...
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
merge-fdata options:
-o <file> - Write output to <file>
--print=<value> - print the list of objects with count to stderr
=none - do not print objects/functions
=exec - print functions sorted by execution count
=branches - print functions sorted by total branch count
-q - do not print merged data to stdout
perf2bolt
root@kali:~# perf2bolt -h
OVERVIEW: perf2bolt - BOLT data aggregator
EXAMPLE: perf2bolt -p=perf.data executable -o data.fdata
USAGE: perf2bolt [options] <executable> <executable>
OPTIONS:
Data aggregation options:
--autofdo - generate autofdo textual data instead of bolt data
--filter-mem-profile - if processing a memory profile, filter out stack or heap accesses that won't be useful for BOLT to reduce profile file size
--ignore-build-id - continue even if build-ids in input binary and perf.data mismatch
--ignore-interrupt-lbr - ignore kernel interrupt LBR that happens asynchronously
--itrace=<string> - Generate LBR info with perf itrace argument
--nl - aggregate basic samples (without LBR info)
--pa - skip perf and read data from a pre-aggregated file format
--perfdata=<string> - <data file>
--pid=<ulong> - only use samples from process with specified PID
--time-aggr - time BOLT aggregator
--use-event-pc - use event PC in combination with LBR sampling
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Output options:
-o <string> - <output file>
-w <string> - save recorded profile to a file
llvm-dev
LLVM is a collection of libraries and tools that make it easy to build compilers, optimizers, just-in-time code generators, and many other compiler-related programs.
This is a dependency package providing the default libraries and headers.
Installed size: 26 KB
How to install: sudo apt install llvm-dev
Dependencies:
- llvm
- llvm-19-dev
- llvm-runtime
llvm-runtime
LLVM is a collection of libraries and tools that make it easy to build compilers, optimizers, just-in-time code generators, and many other compiler-related programs.
This is a dependency package providing the default bytecode interpreter.
Installed size: 16 KB
How to install: sudo apt install llvm-runtime
Dependencies:
- llvm-19-runtime
lli
Manual page for lli 19
root@kali:~# lli -h
OVERVIEW: llvm interpreter & dynamic compiler
USAGE: lli [options] <input bitcode> <program arguments>...
OPTIONS:
Color Options:
--color - Use colors in output (default=autodetect)
General options:
-O <char> - Optimization level. [-O0, -O1, -O2, or -O3] (default = '-O2')
--aarch64-neon-syntax=<value> - Choose style of NEON code to emit from AArch64 backend:
=generic - Emit generic NEON assembly
=apple - Emit Apple-style NEON assembly
--aarch64-use-aa - Enable the use of AA during codegen.
--abort-on-max-devirt-iterations-reached - Abort when the max iterations for devirtualization CGSCC repeat pass is reached
--addrsig - Emit an address-significance table
--align-loops=<uint> - Default alignment for loops
--allow-ginsert-as-artifact - Allow G_INSERT to be considered an artifact. Hack around AMDGPU test infinite loops.
--amdgpu-atomic-optimizer-strategy=<value> - Select DPP or Iterative strategy for scan
=DPP - Use DPP operations for scan
=Iterative - Use Iterative approach for scan
=None - Disable atomic optimizer
--amdgpu-bypass-slow-div - Skip 64-bit divide for dynamic 32-bit values
--amdgpu-disable-loop-alignment - Do not align and prefetch loops
--amdgpu-dpp-combine - Enable DPP combiner
--amdgpu-dump-hsa-metadata - Dump AMDGPU HSA Metadata
--amdgpu-enable-merge-m0 - Merge and hoist M0 initializations
--amdgpu-enable-power-sched - Enable scheduling to minimize mAI power bursts
--amdgpu-kernarg-preload-count=<uint> - How many kernel arguments to preload onto SGPRs
--amdgpu-promote-alloca-to-vector-limit=<uint> - Maximum byte size to consider promote alloca to vector
--amdgpu-sdwa-peephole - Enable SDWA peepholer
--amdgpu-use-aa-in-codegen - Enable the use of AA during codegen.
--amdgpu-verify-hsa-metadata - Verify AMDGPU HSA Metadata
--amdgpu-vgpr-index-mode - Use GPR indexing mode instead of movrel for vector indexing
--arm-add-build-attributes -
--arm-implicit-it=<value> - Allow conditional instructions outdside of an IT block
=always - Accept in both ISAs, emit implicit ITs in Thumb
=never - Warn in ARM, reject in Thumb
=arm - Accept in ARM, reject in Thumb
=thumb - Warn in ARM, emit implicit ITs in Thumb
--asm-show-inst - Emit internal instruction representation to assembly file
--atomic-counter-update-promoted - Do counter update using atomic fetch add for promoted counters only
--atomic-first-counter - Use atomic fetch add for first counter in a function (usually the entry counter)
--basic-block-address-map - Emit the basic block address map section
--basic-block-sections=<all | <function list (file)> | labels | none> - Emit basic blocks into separate sections
--bounds-checking-single-trap - Use one trap block per function
--bounds-checking-unique-traps - Always use one trap per check
--bpf-stack-size=<int> - Specify the BPF stack size limit
--cfg-hide-cold-paths=<number> - Hide blocks with relative frequency below the given value
--cfg-hide-deoptimize-paths -
--cfg-hide-unreachable-paths -
--check-functions-filter=<regex> - Only emit checks for arguments of functions whose names match the given regular expression
--code-model=<value> - Choose code model
=tiny - Tiny code model
=small - Small code model
=kernel - Kernel code model
=medium - Medium code model
=large - Large code model
--compile-threads=<uint> - Choose the number of compile threads (jit-kind=orc-lazy only)
--cost-kind=<value> - Target cost kind
=throughput - Reciprocal throughput
=latency - Instruction latency
=code-size - Code size
=size-latency - Code size and latency
--crel - Use CREL relocation format for ELF
--cs-profile-generate - Perform context sensitive PGO instrumentation
--cs-profile-path=<string> - Context sensitive profile file path
--data-sections - Emit data into separate sections
--debug-entry-values - Enable debug info for the debug entry values.
--debug-info-correlate - Use debug info to correlate profiles. (Deprecated, use -profile-correlate=debug-info)
--debugger-tune=<value> - Tune debug info for a particular debugger
=gdb - gdb
=lldb - lldb
=dbx - dbx
=sce - SCE targets (e.g. PS4)
--debugify-func-limit=<ulong> - Set max number of processed functions per pass.
--debugify-level=<value> - Kind of debug info to add
=locations - Locations only
=location+variables - Locations and Variables
--debugify-quiet - Suppress verbose debugify output
--denormal-fp-math=<value> - Select which denormal numbers the code is permitted to require
=ieee - IEEE 754 denormal numbers
=preserve-sign - the sign of a flushed-to-zero number is preserved in the sign of 0
=positive-zero - denormals are flushed to positive zero
=dynamic - denormals have unknown treatment
--denormal-fp-math-f32=<value> - Select which denormal numbers the code is permitted to require for float
=ieee - IEEE 754 denormal numbers
=preserve-sign - the sign of a flushed-to-zero number is preserved in the sign of 0
=positive-zero - denormals are flushed to positive zero
=dynamic - denormals have unknown treatment
--disable-auto-upgrade-debug-info - Disable autoupgrade of debug info
--disable-i2p-p2i-opt - Disables inttoptr/ptrtoint roundtrip optimization
--disable-lazy-compilation - Disable JIT lazy compilation
--disable-promote-alloca-to-lds - Disable promote alloca to LDS
--disable-promote-alloca-to-vector - Disable promote alloca to vector
--disable-tail-calls - Never emit tail calls
--dlopen=<string> - Dynamic libraries to load before linking
--do-counter-promotion - Do counter register promotion
--dot-cfg-mssa=<file name for generated dot file> - file name for generated dot file
--dwarf-version=<int> - Dwarf version
--dwarf64 - Generate debugging info in the 64-bit DWARF format
--emit-call-site-info - Emit call site debug information, if debug information is enabled.
--emit-compact-unwind-non-canonical - Whether to try to emit Compact Unwind for non canonical entries.
--emit-dwarf-unwind=<value> - Whether to emit DWARF EH frame entries.
=always - Always emit EH frame entries
=no-compact-unwind - Only emit EH frame entries when compact unwind is not available
=default - Use target platform default
--emscripten-cxx-exceptions-allowed=<string> - The list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
--emulated-tls - Use emulated TLS model
--enable-approx-func-fp-math - Enable FP math optimizations that assume approx func
--enable-cache-manager - Use cache manager to save/load modules
--enable-cse-in-irtranslator - Should enable CSE in irtranslator
--enable-cse-in-legalizer - Should enable CSE in Legalizer
--enable-emscripten-cxx-exceptions - WebAssembly Emscripten-style exception handling
--enable-emscripten-sjlj - WebAssembly Emscripten-style setjmp/longjmp handling
--enable-gvn-hoist - Enable the GVN hoisting pass (default = off)
--enable-gvn-memdep -
--enable-gvn-sink - Enable the GVN sinking pass (default = off)
--enable-jmc-instrument - Instrument functions with a call to __CheckForDebuggerJustMyCode
--enable-jump-table-to-switch - Enable JumpTableToSwitch pass (default = off)
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loop-simplifycfg-term-folding -
--enable-name-compression - Enable name/filename string compression
--enable-no-infs-fp-math - Enable FP math optimizations that assume no +-Infs
--enable-no-nans-fp-math - Enable FP math optimizations that assume no NaNs
--enable-no-signed-zeros-fp-math - Enable FP math optimizations that assume the sign of 0 is insignificant
--enable-no-trapping-fp-math - Enable setting the FP exceptions build attribute not to use exceptions
--enable-pgo-force-function-attrs - Enable pass to set function attributes based on PGO profiles
--enable-split-backedge-in-load-pre -
--enable-split-loopiv-heuristic - Enable loop iv regalloc heuristic
--enable-tlsdesc - Enable the use of TLS Descriptors
--enable-unsafe-fp-math - Enable optimizations that may decrease FP precision
--enable-vtable-profile-use - If ThinLTO and WPD is enabled and this option is true, vtable profiles will be used by ICP pass for more efficient indirect call sequence. If false, type profiles won't be used.
--enable-vtable-value-profiling - If true, the virtual table address will be instrumented to know the types of a C++ pointer. The information is used in indirect call promotion to do selective vtable-based comparison.
--entry-function=<function> - Specify the entry function (default = 'main') of the executable
--exception-model=<value> - exception model
=default - default exception handling model
=dwarf - DWARF-like CFI based exception handling
=sjlj - SjLj exception handling
=arm - ARM EHABI exceptions
=wineh - Windows exception model
=wasm - WebAssembly exception handling
--expand-variadics-override=<value> - Override the behaviour of expand-variadics
=unspecified - Use the implementation defaults
=disable - Disable the pass entirely
=optimize - Optimise without changing ABI
=lowering - Change variadic calling convention
--experimental-debug-variable-locations - Use experimental new value-tracking variable locations
--experimental-debuginfo-iterators - Enable communicating debuginfo positions through iterators, eliminating intrinsics. Has no effect if --preserve-input-debuginfo-format=true.
--extra-archive=<input archive> - Extra archive files to be loaded
--extra-module=<input bitcode> - Extra modules to be loaded
--extra-object=<input object> - Extra object files to be loaded
--fake-argv0=<executable> - Override the 'argv[0]' value passed into the executing program
--fatal-warnings - Treat warnings as errors
--fdpic - Use the FDPIC ABI
--filetype=<value> - Choose a file type (not all types are supported by all targets):
=asm - Emit an assembly ('.s') file
=obj - Emit a native object ('.o') file
=null - Emit nothing, for performance testing
--float-abi=<value> - Choose float ABI type
=default - Target default float ABI type
=soft - Soft float ABI (implied by -soft-float)
=hard - Hard float ABI (uses FP registers)
--force-dwarf-frame-section - Always emit a debug frame section.
--force-interpreter - Force interpretation: disable JIT
--force-tail-folding-style=<value> - Force the tail folding style
=none - Disable tail folding
=data - Create lane mask for data only, using active.lane.mask intrinsic
=data-without-lane-mask - Create lane mask with compare/stepvector
=data-and-control - Create lane mask using active.lane.mask intrinsic, and use it for both data and control flow
=data-and-control-without-rt-check - Similar to data-and-control, but remove the runtime check
=data-with-evl - Use predicated EVL instructions for tail folding. If EVL is unsupported, fallback to data-without-lane-mask.
--fp-contract=<value> - Enable aggressive formation of fused FP ops
=fast - Fuse FP ops whenever profitable
=on - Only fuse 'blessed' FP ops.
=off - Only fuse FP ops when the result won't be affected.
--frame-pointer=<value> - Specify frame pointer elimination optimization
=all - Disable frame pointer elimination
=non-leaf - Disable frame pointer elimination for non-leaf frame
=reserved - Enable frame pointer elimination, but reserve the frame pointer register
=none - Enable frame pointer elimination
--fs-profile-debug-bw-threshold=<uint> - Only show debug message if the source branch weight is greater than this value.
--fs-profile-debug-prob-diff-threshold=<uint> - Only show debug message if the branch probility is greater than this value (in percentage).
--function-sections - Emit functions into separate sections
--generate-merged-base-profiles - When generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
--gpsize=<uint> - Global Pointer Addressing Size. The default size is 8.
--hash-based-counter-split - Rename counter variable of a comdat function based on cfg hash
--hexagon-add-build-attributes -
--hexagon-rdf-limit=<uint> -
--hot-cold-split - Enable hot-cold splitting pass
--hwasan-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--hwasan-random-rate=<number> - Probability value in the range [0.0, 1.0] to keep instrumentation of a function.
--ignore-xcoff-visibility - Not emit the visibility attribute for asm in AIX OS or give all symbols 'unspecified' visibility in XCOFF object file
--import-all-index - Import all external functions in index.
--incremental-linker-compatible - When used with filetype=obj, emit an object file which can be used with an incremental linker
--instcombine-code-sinking - Enable code sinking
--instcombine-guard-widening-window=<uint> - How wide an instruction window to bypass looking for another guard
--instcombine-max-num-phis=<uint> - Maximum number phis to handle in intptr/ptrint folding
--instcombine-max-sink-users=<uint> - Maximum number of undroppable users for instruction sinking
--instcombine-maxarray-size=<uint> - Maximum array size considered when doing a combine
--instcombine-negator-enabled - Should we attempt to sink negations?
--instcombine-negator-max-depth=<uint> - What is the maximal lookup depth when trying to check for viability of negation sinking.
--instrprof-atomic-counter-update-all - Make all profile counter updates atomic (for testing only)
--internalize-public-api-file=<filename> - A file containing list of symbol names to preserve
--internalize-public-api-list=<list> - A list of symbol names to preserve
--iterative-counter-promotion - Allow counter promotion across the whole loop nest.
--jd=<string> - Specifies the JITDylib to be used for any subsequent -extra-module arguments.
--jit-kind=<value> - Choose underlying JIT kind.
=mcjit - MCJIT
=orc - Orc JIT
=orc-lazy - Orc-based lazy JIT.
--jit-linker=<value> - Choose the dynamic linker/loader.
=default - Default for platform and JIT-kind
=rtdyld - RuntimeDyld
=jitlink - Orc-specific linker
--large-data-threshold=<ulong> - Choose large data threshold for x86_64 medium code model
--lint-abort-on-error - In the Lint pass, abort on errors.
--load=<pluginfilename> - Load the specified plugin
--lower-allow-check-percentile-cutoff-hot=<int> - Hot percentile cuttoff.
--lower-allow-check-random-rate=<number> - Probability value in the range [0.0, 1.0] of unconditional pseudo-random checks.
--lto-aix-system-assembler=<path> - Path to a system assembler, picked up on AIX only
--lto-embed-bitcode=<value> - Embed LLVM bitcode in object files produced by LTO
=none - Do not embed
=optimized - Embed after all optimization passes
=post-merge-pre-opt - Embed post merge, but before optimizations
--lto-pass-remarks-filter=<regex> - Only record optimization remarks from passes whose names match the given regular expression
--lto-pass-remarks-format=<format> - The format used for serializing remarks (default: YAML)
--lto-pass-remarks-output=<filename> - Output filename for pass remarks
--march=<string> - Architecture to generate code for (see --version)
--matrix-default-layout=<value> - Sets the default matrix layout
=column-major - Use column-major layout
=row-major - Use row-major layout
--matrix-print-after-transpose-opt -
--mattr=<a1,+a2,-a3,...> - Target specific attributes (-mattr=help for details)
--max-counter-promotions=<int> - Max number of allowed counter promotions
--max-counter-promotions-per-loop=<uint> - Max number counter promotions per loop to avoid increasing register pressure too much
--mc-relax-all - When used with filetype=obj, relax all fixups in the emitted object file
--mcabac - tbd
--mcjit-remote-process=<filename> - Specify the filename of the process to launch for remote MCJIT execution. If none is specified,
remote execution will be simulated in-process.
--mcpu=<cpu-name> - Target a specific cpu type (-mcpu=help for details)
--meabi=<value> - Set EABI type (default depends on triple):
=default - Triple default EABI version
=4 - EABI version 4
=5 - EABI version 5
=gnu - EABI GNU
--merror-missing-parenthesis - Error for missing parenthesis around predicate registers
--merror-noncontigious-register - Error for register names that aren't contigious
--mhvx - Enable Hexagon Vector eXtensions
--mhvx=<value> - Enable Hexagon Vector eXtensions
=v60 - Build for HVX v60
=v62 - Build for HVX v62
=v65 - Build for HVX v65
=v66 - Build for HVX v66
=v67 - Build for HVX v67
=v68 - Build for HVX v68
=v69 - Build for HVX v69
=v71 - Build for HVX v71
=v73 - Build for HVX v73
--mips-compact-branches=<value> - MIPS Specific: Compact branch policy.
=never - Do not use compact branches if possible.
=optimal - Use compact branches where appropriate (default).
=always - Always use compact branches if possible.
--mips16-constant-islands - Enable mips16 constant islands.
--mips16-hard-float - Enable mips16 hard float.
--mir-strip-debugify-only - Should mir-strip-debug only strip debug info from debugified modules by default
--misexpect-tolerance=<uint> - Prevents emitting diagnostics when profile counts are within N% of the threshold..
--mno-compound - Disable looking for compound instructions for Hexagon
--mno-fixup - Disable fixing up resolved relocations for Hexagon
--mno-ldc1-sdc1 - Expand double precision loads and stores to their single precision counterparts
--mno-pairing - Disable looking for duplex instructions for Hexagon
--mtriple=<string> - Override target triple for module
--mwarn-missing-parenthesis - Warn for missing parenthesis around predicate registers
--mwarn-noncontigious-register - Warn for register names that arent contigious
--mwarn-sign-mismatch - Warn for mismatching a signed and unsigned value
--mxcoff-roptr - When set to true, const objects with relocatable address values are put into the RO data section.
--no-deprecated-warn - Suppress all deprecated warnings
--no-discriminators - Disable generation of discriminator information.
--no-integrated-as - Disable integrated assembler
--no-process-syms - Do not resolve lli process symbols in JIT'd code
--no-type-check - Suppress type errors (Wasm)
--no-warn - Suppress all warnings
--nozero-initialized-in-bss - Don't place zero-initialized symbols into bss section
--nvptx-sched4reg - NVPTX Specific: schedule for register pressue
--object-cache-dir=<string> - Directory to store cached object files (must be user writable)
--object-size-offset-visitor-max-visit-instructions=<uint> - Maximum number of instructions for ObjectSizeOffsetVisitor to look at
--orc-runtime=<string> - Use ORC runtime from given path
--per-module-lazy - Performs lazy compilation on whole module boundaries rather than individual functions
--pgo-block-coverage - Use this option to enable basic block coverage instrumentation
--pgo-temporal-instrumentation - Use this option to enable temporal instrumentation
--pgo-view-block-coverage-graph - Create a dot file of CFGs with block coverage inference information
--poison-checking-function-local - Check that returns are non-poison (for testing)
--print-pipeline-passes - Print a '-passes' compatible string describing the pipeline (best-effort only).
--profile-correlate=<value> - Use debug info or binary file to correlate profiles.
=<empty> - No profile correlation
=debug-info - Use debug info to correlate
=binary - Use binary to correlate
--promote-alloca-vector-loop-user-weight=<uint> - The bonus weight of users of allocas within loop when sorting profitable allocas
--r600-ir-structurize - Use StructurizeCFG IR pass
--relocation-model=<value> - Choose relocation model
=static - Non-relocatable code
=pic - Fully relocatable, position independent code
=dynamic-no-pic - Relocatable external references, non-relocatable code
=ropi - Code and read-only data relocatable, accessed PC-relative
=rwpi - Read-write data relocatable, accessed relative to static base
=ropi-rwpi - Combination of ropi and rwpi
--remote-mcjit - Execute MCJIT'ed code in a separate process.
--riscv-add-build-attributes -
--riscv-use-aa - Enable the use of AA during codegen.
--runtime-counter-relocation - Enable relocating counters at runtime.
--safepoint-ir-verifier-print-only -
--sample-profile-check-record-coverage=<N> - Emit a warning if less than N% of records in the input profile are matched to the IR.
--sample-profile-check-sample-coverage=<N> - Emit a warning if less than N% of samples in the input profile are matched to the IR.
--sample-profile-max-propagate-iterations=<uint> - Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
--sampled-instr-burst-duration=<uint> - Set the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. This number of samples will be recorded for each 'sampled-instr-period' count update. Setting to 1 enables simple sampling, in which case it is recommended to set 'sampled-instr-period' to a prime number.
--sampled-instr-period=<uint> - Set the profile instrumentation sample period. For each sample period, a fixed number of consecutive samples will be recorded. The number is controlled by 'sampled-instr-burst-duration' flag. The default sample period of 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow.
--sampled-instrumentation - Do PGO instrumentation sampling
--save-temp-labels - Don't discard temporary labels
--separate-named-sections - Use separate unique sections for named sections
--skip-ret-exit-block - Suppress counter promotion if exit blocks contain ret.
--soft-float - Generate software floating point library calls
--speculative-counter-promotion-max-exiting=<uint> - The max number of exiting blocks of a loop to allow speculative counter promotion
--speculative-counter-promotion-to-loop - When the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region.
--split-machine-functions - Split out cold basic blocks from machine functions based on profile information
--stack-size-section - Emit a section containing stack size metadata
--stack-symbol-ordering - Order local stack symbols.
--stackrealign - Force align the stack to the minimum alignment
--strict-dwarf - use strict dwarf
--summary-file=<string> - The summary file to use for function importing.
--sve-tail-folding=<string> - Control the use of vectorisation using tail-folding for SVE where the option is specified in the form (Initial)[+(Flag1|Flag2|...)]:
disabled (Initial) No loop types will vectorize using tail-folding
default (Initial) Uses the default tail-folding settings for the target CPU
all (Initial) All legal loop types will vectorize using tail-folding
simple (Initial) Use tail-folding for simple loops (not reductions or recurrences)
reductions Use tail-folding for loops containing reductions
noreductions Inverse of above
recurrences Use tail-folding for loops containing fixed order recurrences
norecurrences Inverse of above
reverse Use tail-folding for loops requiring reversed predicates
noreverse Inverse of above
--swift-async-fp=<value> - Determine when the Swift async frame pointer should be set
=auto - Determine based on deployment target
=always - Always set the bit
=never - Never set the bit
--tail-predication=<value> - MVE tail-predication pass options
=disabled - Don't tail-predicate loops
=enabled-no-reductions - Enable tail-predication, but not for reduction loops
=enabled - Enable tail-predication, including reduction loops
=force-enabled-no-reductions - Enable tail-predication, but not for reduction loops, and force this which might be unsafe
=force-enabled - Enable tail-predication, including reduction loops, and force this which might be unsafe
--tailcallopt - Turn fastcc calls into tail calls by (potentially) changing ABI.
--thinlto-assume-merged - Assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.
--thread-entry=<string> - calls the given entry-point on a new thread (jit-kind=orc-lazy only)
--thread-model=<value> - Choose threading model
=posix - POSIX thread model
=single - Single thread model
--threads=<int> -
--tls-size=<uint> - Bit size of immediate TLS offsets
--type-based-intrinsic-cost - Calculate intrinsics cost based only on argument types
--unique-basic-block-section-names - Give unique names to every basic block section
--unique-section-names - Give unique names to every section
--use-ctors - Use .ctors instead of .init_array.
--use-undef - Use undef when generating programs.
--vec-extabi - Enable the AIX Extended Altivec ABI.
--verify-region-info - Verify region info (time consuming)
--vp-counters-per-site=<number> - The average number of profile counters allocated per value profiling site.
--vp-static-alloc - Do static counter allocation for value profiler
--wasm-enable-eh - WebAssembly exception handling
--wasm-enable-exnref - WebAssembly exception handling (exnref)
--wasm-enable-sjlj - WebAssembly setjmp/longjmp handling
--write-experimental-debuginfo - Write debug info in the new non-intrinsic format. Has no effect if --preserve-input-debuginfo-format=true.
--x86-align-branch=<string> - Specify types of branches to align (plus separated list of types):
jcc indicates conditional jumps
fused indicates fused conditional jumps
jmp indicates direct unconditional jumps
call indicates direct and indirect calls
ret indicates rets
indirect indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint> - Control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches.
--x86-branches-within-32B-boundaries - Align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
--x86-pad-max-prefix-size=<uint> - Maximum number of prefixes to use for padding
--x86-relax-relocations - Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF
--x86-sse2avx - Specify that the assembler should encode SSE instructions with VEX prefix
--xcoff-traceback-table - Emit the XCOFF traceback table
--xray-function-index - Emit xray_fn_idx section
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Polly Options:
Configure the polly loop optimizer
--polly - Enable the polly optimizer (with -O1, -O2 or -O3)
--polly-2nd-level-tiling - Enable a 2nd level loop of loop tiling
--polly-ast-print-accesses - Print memory access functions
--polly-context=<isl parameter set> - Provide additional constraints on the context parameters
--polly-dce-precise-steps=<int> - The number of precise steps between two approximating iterations. (A value of -1 schedules another approximation stage before the actual dead code elimination.
--polly-delicm-max-ops=<int> - Maximum number of isl operations to invest for lifetime analysis; 0=no limit
--polly-detect-full-functions - Allow the detection of full functions
--polly-dump-after - Dump module after Polly transformations into a file suffixed with "-after"
--polly-dump-after-file=<string> - Dump module after Polly transformations to the given file
--polly-dump-before - Dump module before Polly transformations into a file suffixed with "-before"
--polly-dump-before-file=<string> - Dump module before Polly transformations to the given file
--polly-enable-simplify - Simplify SCoP after optimizations
--polly-ignore-func=<string> - Ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided.
--polly-isl-arg=<argument> - Option passed to ISL
--polly-matmul-opt - Perform optimizations of matrix multiplications based on pattern matching
--polly-on-isl-error-abort - Abort if an isl error is encountered
--polly-only-func=<string> - Only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided.
--polly-only-region=<identifier> - Only run on certain regions (The provided identifier must appear in the name of the region's entry block
--polly-only-scop-detection - Only run scop detection, but no other optimizations
--polly-optimized-scops - Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree
--polly-parallel - Generate thread parallel code (isl codegen only)
--polly-parallel-force - Force generation of thread parallel code ignoring any cost model
--polly-pattern-matching-based-opts - Perform optimizations based on pattern matching
--polly-postopts - Apply post-rescheduling optimizations such as tiling (requires -polly-reschedule)
--polly-pragma-based-opts - Apply user-directed transformation from metadata
--polly-pragma-ignore-depcheck - Skip the dependency check for pragma-based transformations
--polly-process-unprofitable - Process scops that are unlikely to benefit from Polly optimizations.
--polly-register-tiling - Enable register tiling
--polly-report - Print information about the activities of Polly
--polly-reschedule - Optimize SCoPs using ISL
--polly-show - Highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions)
--polly-show-only - Highlight the code regions that will be optimized in a (CFG only BBs)
--polly-stmt-granularity=<value> - Algorithm to use for splitting basic blocks into multiple statements
=bb - One statement per basic block
=scalar-indep - Scalar independence heuristic
=store - Store-level granularity
--polly-tc-opt - Perform optimizations of tensor contractions based on pattern matching
--polly-tiling - Enable loop tiling
--polly-vectorizer=<value> - Select the vectorization strategy
=none - No Vectorization
=stripmine - Strip-mine outer loops for the loop-vectorizer to trigger
python3-clang
Clang project is a C, C++, Objective C and Objective C++ front-end based on the LLVM compiler. Its goal is to offer a replacement to the GNU Compiler Collection (GCC).
Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also provides most of the support of C++20.
This is a dependency package providing the Python binding to Clang.
Installed size: 14 KB
How to install: sudo apt install python3-clang
Dependencies:
- python3-clang-19
python3-lldb
LLDB is a next generation, high-performance debugger. It is built as a set of reusable components which highly leverage existing libraries in the larger LLVM Project, such as the Clang expression parser and LLVM disassembler.
This is a dependency package providing the Python binding to lldb.
Installed size: 14 KB
How to install: sudo apt install python3-lldb
Dependencies:
- python3-lldb-19
Updated on: 2025-May-20