LLI(1)
๐ NAME ๐
okay so welcome to lli(1), bestie โ this is the manual page for lli 18. She's the LLVM interpreter & dynamic compiler, and yes, she's literally iconic. ๐ฆ
lli โ manual page for lli 18. No cap, this is the whole vibe. ๐
โจ DESCRIPTION โจ
OVERVIEW: llvm interpreter & dynamic compiler โ she interprets, she dynamically compiles, she does the most. ๐
USAGE:
lli [options] <input bitcode> <program arguments>...
OPTIONS: buckle up, bestie, there are a LOT of them and they all matter. ๐ธ
๐จ Color Options ๐จ
--colorโ Use colors in output (default=autodetect). Let her serve some color, or let autodetect decide the vibe. ๐
โ๏ธ General options โ๏ธ
-O <char>โ Optimization level. Pick from[-O0, -O1, -O2, or -O3](default = '-O2'). Choose your chaos level wisely. ๐ฅ--aarch64-neon-syntax=<value>โ Choose the style of NEON code to emit from the AArch64 backend:=genericโ Emit generic NEON assembly=appleโ Emit Apple-style NEON assembly
--aarch64-use-aaโ Enable the use of AA during codegen. AA said yes. โจ--abort-on-max-devirt-iterations-reachedโ Abort when the max iterations for the devirtualization CGSCC repeat pass is reached. Dramatic exit unlocked. ๐--addrsigโ Emit an address-significance table. Very signature, very slay. ๐--align-loops=<uint>โ Default alignment for loops. Keep those loops lined up. ๐ง--allow-ginsert-as-artifactโ AllowG_INSERTto be considered an artifact. Hack around AMDGPU test infinite loops. Respect the hack. ๐ ๏ธ--amdgpu-atomic-optimizer-strategy=<value>โ SelectDPPorIterativestrategy 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. Bye, slow div. ๐--amdgpu-disable-loop-alignmentโ Do not align and prefetch loops. Loops get zero alignment energy today. ๐--amdgpu-dpp-combineโ Enable DPP combiner. Combine the DPP. That's the whole note. ๐--amdgpu-dump-hsa-metadataโ Dump AMDGPU HSA Metadata. Dump it, queen. ๐๏ธ--amdgpu-enable-merge-m0โ Merge and hoist M0 initializations. M0 is getting merged and hoisted. ๐ธ--amdgpu-enable-power-schedโ Enable scheduling to minimize mAI power bursts. Power-conscious scheduling, we love to see it. โก--amdgpu-kernarg-preload-count=<uint>โ How many kernel arguments to preload onto SGPRs. Preload the args, bestie. ๐ซถ--amdgpu-promote-alloca-to-vector-limit=<uint>โ Maximum byte size to consider promote alloca to vector. Size limit for the alloca-to-vector promotion moment. ๐--amdgpu-sdwa-peepholeโ Enable SDWA peepholer. Peephole, but make it SDWA. ๐--amdgpu-use-aa-in-codegenโ Enable the use of AA during codegen. AA is back and she's in codegen. โจ--amdgpu-verify-hsa-metadataโ Verify AMDGPU HSA Metadata. Trust but verify, bestie. ๐--amdgpu-vgpr-index-modeโ Use GPR indexing mode instead ofmovrelfor vector indexing. Index mode switch-up. ๐--arm-add-build-attributesโ no description given here โ she just exists, mysterious and iconic. ๐--arm-implicit-it=<value>โ Allow conditional instructions outside 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. Show the internal representation, no hiding. ๐ซฃ--atomic-counter-update-promotedโ Do counter update using atomic fetch add for promoted counters only. Atomic fetch add, but only for the promoted ones. ๐ฅ--atomic-first-counterโ Use atomic fetch add for first counter in a function (usually the entry counter). First counter gets the atomic treatment. ๐--basic-block-sections=<all | <function list (file)> | labels | none>โ Emit basic blocks into separate sections. Pick your basic-block section situation. ๐งฉ--bounds-checking-single-trapโ Use one trap block per function. One trap, one function. ๐--bounds-checking-unique-trapsโ Always use one trap per check. Every check gets its own trap. ๐--bpf-stack-size=<int>โ Specify the BPF stack size limit. Stack size, specified. ๐--cfg-hide-cold-paths=<number>โ Hide blocks with relative frequency below the given value. Cold paths? Hidden. ๐ง--cfg-hide-deoptimize-pathsโ listed with no description here. She's giving mystery. ๐ต๏ธ--cfg-hide-unreachable-pathsโ listed with no description here too. Also mysterious. ๐--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-lazyonly). Thread count, but only forjit-kind=orc-lazy. ๐งต--cost-kind=<value>โ Target cost kind:=throughputโ Reciprocal throughput=latencyโ Instruction latency=code-sizeโ Code size=size-latencyโ Code size and latency
--cs-profile-generateโ Perform context sensitive PGO instrumentation. Context sensitive PGO, periodt. ๐--cs-profile-path=<string>โ Context sensitive profile file path. Drop the path. ๐ฃ๏ธ--data-sectionsโ Emit data into separate sections. Data said separate sections, actually. ๐--debug-entry-valuesโ Enable debug info for the debug entry values. Debug entry values get debug info. ๐--debug-info-correlateโ Use debug info to correlate profiles. Deprecated, use-profile-correlate=debug-info. She said what she said. โ ๏ธ--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. Limit the functions per pass, bestie. ๐ข--debugify-level=<value>โ Kind of debug info to add:=locationsโ Locations only=location+variablesโ Locations and Variables
--debugify-quietโ Suppress verbose debugify output. Quiet mode: activated. ๐คซ--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. No autoupgrade today. ๐ซ--disable-i2p-p2i-optโ Disablesinttoptr/ptrtointroundtrip optimization. The roundtrip optimization is disabled. ๐ญ--disable-lazy-compilationโ Disable JIT lazy compilation. No lazy compilation, we're doing this now. ๐--disable-promote-alloca-to-ldsโ Disable promote alloca to LDS. Alloca-to-LDS promotion: off. ๐--disable-promote-alloca-to-vectorโ Disable promote alloca to vector. Alloca-to-vector promotion: also off. ๐--disable-tail-callsโ Never emit tail calls. Never. Emit. Tail calls. ๐--dlopen=<string>โ Dynamic libraries to load before linking. Load the libraries first, then link. ๐ซถ--do-counter-promotionโ Do counter register promotion. Promote the counter register. ๐--dot-cfg-mssa=<file name for generated dot file>โ file name for generated dot file. Literally the file name for the generated dot file. ๐--dwarf-version=<int>โ Dwarf version. Pick the number. ๐ง--dwarf64โ Generate debugging info in the 64-bit DWARF format. 64-bit DWARF debug info, we love her. ๐--emit-call-site-infoโ Emit call site debug information, if debug information is enabled. Only if debug info is enabled, bestie. ๐--emit-compact-unwind-non-canonicalโ Whether to try to emit Compact Unwind for non canonical entries. Non-canonical entries might get Compact Unwind. ๐--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 emscriptenEMSCRIPTEN_CATCHING_ALLOWEDoptions). Function-name allowlist for the exception-handling vibe. ๐ธ--emulated-tlsโ Use emulated TLS model. TLS, but emulated. โจ--enable-approx-func-fp-mathโ Enable FP math optimizations that assume approx func. FP math optimizations with approx func assumptions. ๐ฅ--enable-cache-managerโ Use cache manager to save/load modules. Cache manager is handling save/load. ๐๏ธ--enable-cse-in-irtranslatorโ Should enable CSE in irtranslator. CSE in irtranslator, if enabled. ๐ง--enable-cse-in-legalizerโ Should enable CSE in Legalizer. CSE in Legalizer, if enabled. ๐ง--enable-emscripten-cxx-exceptionsโ WebAssembly Emscripten-style exception handling. Emscripten-style exceptions, enabled. ๐ฆ--enable-emscripten-sjljโ WebAssembly Emscripten-style setjmp/longjmp handling.setjmp/longjmp, but Emscripten-style. ๐--enable-gvn-hoistโ turn on the GVN hoisting pass (default = off). she lifts stuff out of loops, she's that girl โจ--enable-gvn-memdepโ no blurb on this one in the page, it's giving mysterious ๐--enable-gvn-sinkโ turn on the GVN sinking pass (default = off). opposite energy from hoisting, equally iconic ๐ซถ--enable-jmc-instrumentโ instrument functions with a call to__CheckForDebuggerJustMyCode--enable-load-in-loop-preโ no blurb, she's just there ๐ฅ--enable-load-preโ same deal, no description given ๐ญ--enable-loop-simplifycfg-term-foldingโ no description in the page, lowkey a mystery ๐ฆ--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-split-backedge-in-load-preโ no blurb given ๐ธ--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. heads up bestie, "unsafe" is right there in the name ๐--entry-function=<function>โ specify the entry function (default ='main') of the executable--exception-model=<value>โ exception model. pick your fighter:=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
--experimental-debug-variable-locationsโ use experimental new value-tracking variable locations--experimental-debuginfo-iteratorsโ enable communicating debuginfo positions through iterators, eliminating intrinsics--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. catfish but make it processes ๐--fatal-warningsโ treat warnings as errors. no more "it's just a warning" coping ๐--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, usingactive.lane.maskintrinsic=data-without-lane-maskโ create lane mask with compare/stepvector=data-and-controlโ create lane mask usingactive.lane.maskintrinsic, and use it for both data and control flow=data-and-control-without-rt-checkโ similar todata-and-control, but remove the runtime check
--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=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 probability 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 is8.--hash-based-counter-splitโ rename counter variable of a comdat function based on cfg hash--hexagon-rdf-limit=<uint>โ no description, she's mysterious ๐--hot-cold-splitโ enable hot-cold splitting pass--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 withfiletype=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? (yes bestie we should ๐)--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-modulearguments.--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--load=<pluginfilename>โ load the specified plugin--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โ no blurb given, she speaks for herself ๐--mattr=<a1,+a2,-a3,...>โ target specific attributes (-mattr=helpfor details)--max-counter-promotions=<int>โ max number of allowed counter promotions--max-counter-promotions-per-loop=<uint>โ caps how many counter promotions you're allowed per loop, so register pressure doesn't get out of control. little guardrail, big slay ๐--mc-relax-allโ when you're using it withfiletype=obj, this relaxes all the fixups in the object file you're emitting. no leftover tension, all relaxed โจ--mcabacโ tbd. that's it. that's the whole description. the docs literally said "tbd" and left ๐ญ we respect the mystery tho ๐ซถ--mcjit-remote-process=<filename>โ gives you the filename of the process to launch for remote MCJIT execution. if you don't specify one? no worries bestie, remote execution just gets simulated in-process instead ๐--mcpu=<cpu-name>โ target one specific cpu type. and hey,-mcpu=helphas the details if you wanna peek ๐--meabi=<value>โ sets the EABI type. the default depends on triple, so it's giving โจsituationalโจ=defaultโ Triple default EABI version=4โ EABI version 4=5โ EABI version 5=gnuโ EABI GNU
--merror-missing-parenthesisโ throws an error when a parenthesis around predicate registers is missing. strict queen behavior ๐--merror-noncontigious-registerโ errors out on register names that aren't contigious (spelling straight from the source, we do not fix, we do not judge ๐)--mhvxโ turns on Hexagon Vector eXtensions ๐--mhvx=<value>โ same thing, but you pick your version:=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! it's the compact branch policy, and yes there are three moods:=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โ enables mips16 constant islands ๐๏ธ--mips16-hard-floatโ enables mips16 hard float.--mir-strip-debugify-onlyโ controls whethermir-strip-debugonly strips debug info from debugified modules, by default. very "only in this specific circumstance" energy ๐--misexpect-tolerance=<uint>โ stops diagnostics from being emitted while profile counts sit within N% of the threshold. (yes, the original really ends with a double period..โ iconique ๐ )--mno-compoundโ disables looking for compound instructions for Hexagon.--mno-fixupโ disables fixing up resolved relocations for Hexagon.--mno-ldc1-sdc1โ expands double precision loads and stores into their single precision counterparts. one becomes two, the math is mathing ๐งฎ--mno-pairingโ disables looking for duplex instructions for Hexagon.--mtriple=<string>โ overrides the target triple for the module.--mwarn-missing-parenthesisโ warns (instead of erroring) when the parenthesis around predicate registers is missing. gentle reminder vibes ๐ธ--mwarn-noncontigious-registerโ warns about register names that arent contigious (again: their spelling, not mine ๐ซถ)--mwarn-sign-mismatchโ warns when a signed and an unsigned value don't match. the red flag detector ๐ฉ--mxcoff-roptrโ when set to true, const objects with relocatable address values get put into the RO data section.--no-deprecated-warnโ suppresses all deprecated warnings. living unbothered, we ignore the past ๐--no-discriminatorsโ disables generation of discriminator information.--no-integrated-asโ disables the integrated assembler.--no-process-symsโ does not resolvelliprocess symbols in JIT'd code.--no-type-checkโ suppresses type errors (Wasm).--no-warnโ suppresses all warnings. full peace and quiet mode ๐--nozero-initialized-in-bssโ doesn't place zero-initialized symbols into the bss section.--nvptx-sched4regโ NVPTX Specific: schedule for register pressue (their spelling again bestie, we're keeping it ๐)--object-cache-dir=<string>โ the directory where cached object files go. it must be user writable โ no writable, no cache, no slay ๐ฅ--object-size-offset-visitor-max-visit-instructions=<uint>โ the maximum number of instructionsObjectSizeOffsetVisitoris allowed to look at.--orc-runtime=<string>โ uses the ORC runtime from the given path.--per-module-lazyโ lazy compilation happens on whole module boundaries instead of on individual functions. zoom out, look at the whole picture ๐ฆ--pgo-block-coverageโ use this one to enable basic block coverage instrumentation.--pgo-temporal-instrumentationโ use this one to enable temporal instrumentation.--pgo-view-block-coverage-graphโ creates a dot file of CFGs with block coverage inference information. graph girlies rise ๐--poison-checking-function-localโ checks that returns are non-poison. (for testing!)--print-pipeline-passesโ prints a-passescompatible string describing the pipeline. and it's best-effort only โ no promises, we're doing our best ๐ญ--profile-correlate=<value>โ uses debug info or a binary file to correlate profiles:=<empty>โ No profile correlation=debug-infoโ Use debug info to correlate=binaryโ Use binary to correlate
--r600-ir-structurizeโ use theStructurizeCFGIR pass.--relax-elf-relocationsโ emitsGOTPCRELX/REX_GOTPCRELXinstead ofGOTPCRELon x86-64 ELF.--relocation-model=<value>โ picks your relocation model, and the menu is long:=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โ executes MCJIT'ed code in a separate process.--riscv-add-build-attributesโ (no description given, it simply exists and it's iconic for that ๐)--riscv-use-aaโ enables the use of AA during codegen.--runtime-counter-relocationโ enables relocating counters at runtime.--safepoint-ir-verifier-print-onlyโ (again, no description โ it's mysterious, it's lowkey main character energy ๐ค)--sample-profile-check-record-coverage=<N>โ emits a warning if less than N% of records in the input profile are matched to the IR.--sample-profile-check-sample-coverage=<N>โ emits a warning if less than N% of samples in the input profile are matched to the IR.--sample-profile-max-propagate-iterations=<uint>โ the maximum number of iterations it'll go through when propagating sample block/edge weights through the CFG. โจboundariesโจ--skip-ret-exit-blockโ suppresses counter promotion if exit blocks containret.--soft-floatโ generates software floating point library calls.--speculative-counter-promotion-max-exiting=<uint>โ the max number of exiting blocks of a loop that's allowed for speculative counter promotion.--speculative-counter-promotion-to-loopโ when this option is false, and the target block is in a loop, promotion gets disallowed โ unless the promoted counter update can be further/iteratively promoted into an acyclic region. yes it's a whole conditional, we love a plot twist ๐ญ--split-machine-functionsโ splits out cold basic blocks from machine functions, based on profile information. the cold blocks get their own little section โ๏ธ--stack-size-sectionโ emits a section containing stack size metadata.--stack-symbol-orderingโ orders local stack symbols.--stackrealignโ forces the stack to align to the minimum alignment. get in line bestie ๐--strict-dwarfโ use strict dwarf.--summary-file=<string>โ the summary file to use for function importing.--sve-tail-folding=<string>โ controls the use of vectorisation using tail-folding for SVE, and the option gets specified in the form(Initial)[+(Flag1|Flag2|...)]:disabledโ (Initial) No loop types will vectorize using tail-foldingdefaultโ (Initial) Uses the default tail-folding settings for the target CPUallโ (Initial) All legal loop types will vectorize using tail-foldingsimpleโ (Initial) Use tail-folding for simple loops (not reductions or recurrences)reductionsโ Use tail-folding for loops containing reductionsnoreductionsโ Inverse of aboverecurrencesโ Use tail-folding for loops containing fixed order recurrencesnorecurrencesโ Inverse of abovereverseโ Use tail-folding for loops requiring reversed predicatesnoreverseโ Inverse of above
--swift-async-fp=<value>โ tells the compiler when it should set the Swift async frame pointer bit ๐=autoโ just figure it out from the deployment target, queen decides=alwaysโ always set the bit, no questions=neverโ never set the bit, periodt
--tail-predication=<value>โ the MVE tail-predication pass options, aka loop glow-up settings โจ=disabledโ don't tail-predicate loops at all=enabled-no-reductionsโ enable tail-predication, but not for reduction loops=enabledโ enable tail-predication, reduction loops included, we're going all in=force-enabled-no-reductionsโ enable tail-predication but not for reduction loops, and force it, which might be unsafe ๐ญ=force-enabledโ enable tail-predication including reduction loops, and force it, which might be unsafe ๐ญ
--tailcalloptโ turnsfastcccalls into tail calls by (potentially) changing the ABI, lowkey chaotic but ok--thinlto-assume-mergedโ assumes the input has already gone through ThinLTO function importing and the other pre-optimization pipeline changes, so don't come for it--thread-entry=<string>โ calls the given entry-point on a new thread (only forjit-kind=orc-lazybtw)--thread-model=<value>โ pick your threading model ๐งต=posixโ POSIX thread model=singleโ single thread model, main character energy only
--threads=<int>โ ok so the page literally gives no description for this one, it's giving mysterious ๐--tls-size=<uint>โ bit size of immediate TLS offsets--type-based-intrinsic-costโ calculate intrinsics cost based only on argument types, no cap--unique-basic-block-section-namesโ gives a unique name to every basic block section ๐--unique-section-namesโ gives a unique name to every section, everybody gets their own little name tag ๐--use-ctorsโ use.ctorsinstead of.init_array.--vec-extabiโ enable the AIX Extended Altivec ABI.--verify-region-infoโ verify region info (heads up: 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-sjljโ WebAssemblysetjmp/longjmphandling--x86-align-branch=<string>โ specify types of branches to align (it's a plus-separated list of types, slay):jccโ indicates conditional jumpsfusedโ indicates fused conditional jumpsjmpโ indicates direct unconditional jumpscallโ indicates direct and indirect callsretโ indicates retsindirectโ indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint>โ controls how the assembler should align branches with NOP. If the boundary's size is not0, it must be a power of 2 and no less than32. Branches get aligned so they're not across or against the boundary of the specified size. The default value0does not align branches.--x86-branches-within-32B-boundariesโ aligns selected instructions to mitigate the negative performance impact of Intel's micro code update for errataskx102. โ ๏ธ This 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--xcoff-traceback-tableโ emit the XCOFF traceback table--xray-function-indexโ emitxray_fn_idxsection
โจ Generic Options โจ
--helpโ display available options (there's--help-hiddenfor more ๐)--help-listโ display list of available options (again,--help-list-hiddenfor more ๐)--versionโ display the version of this program
๐ Polly Options ๐
Configure the polly loop optimizer, bestie ๐
--pollyโ enable the polly optimizer (works with-O1,-O2or-O3)--polly-2nd-level-tilingโ enable a 2nd level loop of loop tiling, tiling on tiling fr fr--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-1schedules another approximation stage before the actual dead code elimination.--polly-delicm-max-ops=<int>โ maximum number of isl operations to invest for lifetime analysis;0means no limit ๐--polly-detect-full-functionsโ allow the detection of full functions--polly-dump-afterโ dump the module after Polly transformations into a file suffixed with"-after"--polly-dump-after-file=<string>โ dump the module after Polly transformations to the given file--polly-dump-beforeโ dump the module before Polly transformations into a file suffixed with"-before"--polly-dump-before-file=<string>โ dump the 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 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
And that's a wrap on the options, bestie ๐ซถ this page is from lli 18, dated June 2025, and it belongs to the LLI(1) manual. Go forth and flag responsibly ๐โจ
๐ฆ where this page comes from
- debian trixie: llvm-18-runtime 1:18.1.8-18+b1 ยท APACHE-2-LLVM-EXCEPTIONS
- ubuntu questing: llvm-18-runtime 1:18.1.8-18ubuntu2
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms