CLANG-REPL(1)

๐Ÿ“ฆ
version 21.1.8 ยท 3 versions
, in ubuntu stonking

๐Ÿ’– CLANG-REPL(1) ๐Ÿ’–

okay bestie, welcome to the user commands section of the manual, and this is the page for clang-repl โ€” it's the REPL for clang, and it's lowkey iconic. grab a boba, we have so many flags to get through. this is part one, so don't you dare go anywhere. โœจ


๐ŸŒธ NAME ๐ŸŒธ

clang-repl โ€” manual page for clang-repl 21


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

so here's the vibe, fr fr:

USAGE: clang-repl [options] [code to run]

that's it, that's the whole shape of it. you give it options, you give it some code to run, and it does the thing. ๐Ÿ’…

OPTIONS:


๐ŸŽ€ Color Options ๐ŸŽ€

  • --color โ€” Use colors in output (default=autodetect). yes bestie, it already knows when to be cute. ๐ŸŒˆ

โœจ General options โœจ

  • --Xcc=<string> โ€” Argument to pass to the CompilerInvocation
  • --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. (yes it literally says hack around, and honestly? respect. ๐Ÿ™ˆ)
  • --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-indirect-call-specialization-threshold=<uint> โ€” A threshold controls whether an indirect call will be specialized
  • --amdgpu-kernarg-preload-count=<uint> โ€” How many kernel arguments to preload onto SGPRs
  • --amdgpu-module-splitting-max-depth=<uint> โ€” maximum search depth. 0 forces a greedy approach. warning: the algorithm is up to O(2^N), where N is the max depth. ๐Ÿ‘€
bestie. O(2^N). do not crank this and walk away, i'm begging.
  • --amdgpu-promote-alloca-to-vector-limit=<uint> โ€” Maximum byte size to consider promote alloca to vector
  • --amdgpu-promote-alloca-to-vector-max-regs=<uint> โ€” Maximum vector size (in 32b registers) to use when promoting alloca
  • --amdgpu-promote-alloca-to-vector-vgpr-ratio=<uint> โ€” Ratio of VGPRs to budget for promoting alloca to vectors
  • --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
  • --arc-contract-use-objc-claim-rv โ€” Enable generation of calls to objc_claimAutoreleasedReturnValue
  • --argext-abi-check โ€” Verify that narrow int args are properly extended per the SystemZ ABI.
  • --arm-add-build-attributes โ€” (no description given, it's just out here existing, main character energy with zero dialogue ๐Ÿ‘‘)
  • --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
  • --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
  • --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 โ€” (no description, just vibes ๐Ÿซถ)
  • --cfg-hide-unreachable-paths โ€” (also description-less, slaying silently)
  • --check-functions-filter=<regex> โ€” Only emit checks for arguments of functions whose names match the given regular expression
  • --conditional-counter-update โ€” Do conditional counter updates in single byte counters mode)
  • --cost-kind=<value> โ€” Target cost kind
    • =throughput โ€” Reciprocal throughput
    • =latency โ€” Instruction latency
    • =code-size โ€” Code size
    • =size-latency โ€” Code size and latency
    • =all โ€” Print all cost kinds
  • --crel โ€” Use CREL relocation format for ELF
  • --cs-profile-generate โ€” Perform context sensitive PGO instrumentation
  • --cs-profile-path=<string> โ€” Context sensitive profile file path
  • --ctx-prof-include-empty โ€” Also write profiles with all-zero counters. Intended for testing/debugging.
  • --ctx-profile-force-is-specialized โ€” Treat the given module as-if it were containing the post-thinlink module containing the root
  • --debug-info-correlate โ€” Use debug info to correlate profiles. (Deprecated, use -profile-correlate=debug-info)
โš ๏ธ deprecated, bestie! it's still here but it's giving legacy. use the shiny new one.
  • --debugify-atoms โ€” (no description, mysterious and quiet ๐Ÿ’€)
  • --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
  • --emit-gnuas-syntax-on-zos โ€” Emit GNU Assembly Syntax on z/OS.
  • --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 โ€” (no description, keeping its secrets ๐ŸŒธ)
  • --enable-gvn-memoryssa โ€” (also description-less, we love a mysterious queen)
  • --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 โ€” (no description ๐Ÿงš)
  • --enable-load-pre โ€” (no description either, twin behavior)
  • --enable-loop-simplifycfg-term-folding โ€” (no description, iconic and unexplained)
  • --enable-name-compression โ€” Enable name/filename string compression
  • --enable-split-backedge-in-load-pre โ€” (no description, ghosted us ๐Ÿ˜ญ)
  • --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

and that's where part one ends, bestie. do not close the group chat, more parts are coming and you're gonna want to be seated. ๐Ÿ“๐Ÿ’œ

  • =lowering โ€” bestie, this one flips the variadic calling convention. That's it, that's the whole vibe ๐Ÿฆ‹
  • --experimental-debug-variable-locations โ€” rolls out the experimental new value-tracking variable locations. Experimental!! Like, on purpose!! ๐Ÿ™ˆ
  • --fatal-warnings โ€” every warning gets treated like a full-blown error. no more "lol it's just a warning" energy ๐Ÿ’€
  • --fdpic โ€” use the FDPIC ABI. periodt.
  • --filter=<string> โ€” only processes the files that match this filter. heads up tho: this flag only applies to all-TUs โœจ
  • --force-tail-folding-style=<value> โ€” force the tail folding style. no negotiation, we're doing it this way ๐Ÿ’…
    • =none โ€” tail folding? cancelled. disabled.
    • =data โ€” creates a lane mask for data only, using the active.lane.mask intrinsic.
    • =data-without-lane-mask โ€” creates the lane mask with compare/stepvector.
    • =data-and-control โ€” creates a lane mask using the active.lane.mask intrinsic, and uses it for both data and control flow. versatile queen ๐Ÿ‘‘
    • =data-and-control-without-rt-check โ€” like data-and-control, except the runtime check is removed.
    • =data-with-evl โ€” uses predicated EVL instructions for tail folding. and if EVL isn't supported? it falls back to data-without-lane-mask. always got a plan B ๐Ÿซถ
  • --fs-profile-debug-bw-threshold=<uint> โ€” only shows the debug message if the source branch weight is greater than this value.
  • --fs-profile-debug-prob-diff-threshold=<uint> โ€” only shows the debug message if the branch probability is greater than this value, measured in percentage.
  • --generate-merged-base-profiles โ€” when generating nested context-sensitive profiles, this always generates an extra base profile for a function with all its context profiles merged into it. merging era ๐Ÿ’–
  • --gpsize=<uint> โ€” Global Pointer Addressing Size. the default size is 8. remember the 8, bestie.
  • --hash-based-counter-split โ€” renames the counter variable of a comdat function based on the cfg hash. hashtag iconic ๐Ÿ”ฅ
  • --hexagon-add-build-attributes โ€” (the page literally doesn't say what it does, it justโ€ฆ exists. mysterious main character energy ๐Ÿงš)
  • --hexagon-rdf-limit=<uint> โ€” (also no description. silent. brooding. we respect it ๐Ÿ™ˆ)
  • --hot-cold-split โ€” enables the hot-cold splitting pass. temperature check: passed โ„๏ธ๐Ÿ”ฅ
  • --hwasan-percentile-cutoff-hot=<int> โ€” hot percentile cutoff.
  • --hwasan-random-rate=<number> โ€” a probability value in the range [0.0, 1.0] for keeping the instrumentation of a function. important note: instrumentation can get skipped randomly OR because of the hot percentile cutoff โ€” if both are supplied, both can hit you, fr fr.
  • --implicit-mapsyms โ€” lets a mapping symbol at the beginning of a section be implicit, which lowers the number of mapping symbols at the expense of some portability. recommended for projects that can build all their object files using this option.
  • --import-all-index โ€” imports all external functions in the index. all of them. every single one ๐Ÿ’…
  • --incremental-linker-compatible โ€” when used with filetype=obj, emits an object file that can be used with an incremental linker.
  • --instcombine-code-sinking โ€” enables code sinking.
  • --instcombine-guard-widening-window=<uint> โ€” how wide an instruction window to bypass while looking for another guard.
  • --instcombine-max-num-phis=<uint> โ€” the maximum number of phis to handle in intptr/ptrint folding.
  • --instcombine-max-sink-users=<uint> โ€” the maximum number of undroppable users for instruction sinking.
  • --instcombine-maxarray-size=<uint> โ€” the maximum array size considered when doing a combine.
  • --instcombine-negator-enabled โ€” should we attempt to sink negations? asking for a friend ๐Ÿ˜ญ
  • --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 โ€” makes all profile counter updates atomic. (for testing only!)
  • --internalize-public-api-file=<filename> โ€” a file containing a list of symbol names to preserve.
  • --internalize-public-api-list=<list> โ€” a list of symbol names to preserve.
  • --intrinsic-cost-strategy=<value> โ€” the costing strategy for intrinsic instructions ๐Ÿ’ธ
    • =instruction-cost โ€” uses TargetTransformInfo::getInstructionCost.
    • =intrinsic-cost โ€” uses TargetTransformInfo::getIntrinsicInstrCost.
    • =type-based-intrinsic-cost โ€” calculates the intrinsic cost based only on argument types.
  • --iterative-counter-promotion โ€” allows counter promotion across the whole loop nest. the entire nest, bestie ๐Ÿชบ
  • --loongarch-use-aa โ€” enables the use of AA during codegen.
  • --lower-allow-check-percentile-cutoff-hot=<int> โ€” hot percentile cutoff.
  • --lower-allow-check-random-rate=<number> โ€” a 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> โ€” embeds 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 records 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 โ€” (no description here either โ€” it's giving enigma ๐Ÿงš)
  • --max-counter-promotions=<int> โ€” the max number of allowed counter promotions.
  • --max-counter-promotions-per-loop=<uint> โ€” the max number of counter promotions per loop, so we don't increase register pressure too much. we're being responsible ๐Ÿ’œ
  • --mc-relax-all โ€” when used with filetype=obj, relaxes all fixups in the emitted object file. everything, relaxed. no stress ๐Ÿ’…
  • --mcabac โ€” tbd. yes really, that's the whole description. to be determined bestie ๐Ÿ˜ญ
  • --merror-missing-parenthesis โ€” errors on a missing parenthesis around predicate registers.
  • --merror-noncontigious-register โ€” errors on register names that aren't contigious. (spelled exactly like that, no we will not be fixing it โœจ)
  • --mhvx โ€” enables Hexagon Vector eXtensions.
  • --mhvx=<value> โ€” also enables Hexagon Vector eXtensions, but with a version pick ๐Ÿ‘‘
    • =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.
    • =v75 โ€” build for HVX v75.
    • =v79 โ€” build for HVX v79.
  • --mips-compact-branches=<value> โ€” MIPS Specific: compact branch policy.
    • =never โ€” never uses compact branches if possible.
    • =optimal โ€” uses compact branches where appropriate (this is the default).
    • =always โ€” always uses compact branches if possible.
  • --mips16-constant-islands โ€” enables mips16 constant islands.
  • --mips16-hard-float โ€” enables 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 โ€” 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.
  • --mno-pairing โ€” disables looking for duplex instructions for Hexagon.
  • --ms-secure-hotpatch-functions-file=<filename> โ€” a file containing a list of mangled function names to mark for Windows Secure Hot-Patching ๐Ÿ”ฅ
  • --ms-secure-hotpatch-functions-list=<list> โ€” a list of mangled function names to mark for Windows Secure Hot-Patching ๐Ÿ”ฅ
  • --mwarn-missing-parenthesis โ€” warns for a missing parenthesis around predicate registers.
  • --mwarn-noncontigious-register โ€” warns for register names that aren't contigious.
  • --mwarn-sign-mismatch โ€” warns for mismatching a signed and unsigned value. pick a lane bestie ๐Ÿ˜ญ
  • --no-deprecated-warn โ€” suppresses all deprecated warnings.
  • --no-discriminators โ€” disables generation of discriminator information.
  • --no-type-check โ€” suppresses type errors (Wasm).
  • --no-warn โ€” suppresses all warnings. silence, but make it a flag ๐Ÿคซ
  • --nvptx-approx-log2f32 โ€” NVPTX Specific: whether to use lg2.approx for log2.
  • --nvptx-sched4reg โ€” NVPTX Specific: schedule for register pressue. (yes, "pressue" โ€” keeping it exactly as written, iykyk โœจ)
  • --object-size-offset-visitor-max-visit-instructions=<uint> โ€” the maximum number of instructions for ObjectSizeOffsetVisitor to look at.
  • --oop-executor-connect=<<hostname>:<port>> โ€” connects to an out-of-process executor through a TCP socket ๐Ÿ”Œ
  • --pgo-block-coverage โ€” use this option to enable basic block coverage instrumentation.
  • --pgo-temporal-instrumentation โ€” turn on temporal instrumentation, bestie ๐ŸŒธ
  • --pgo-view-block-coverage-graph โ€” makes a dot file of CFGs with block coverage inference info inside ๐Ÿ’…
  • --print-pipeline-passes โ€” prints a '-passes' compatible string that describes the pipeline. That's best-effort only, okurrr โœจ
  • --profile-correlate=<value> โ€” use debug info or a binary file to correlate profiles ๐Ÿ”
    • =<empty> โ€” no profile correlation at all, we're offline ๐Ÿ’€
    • =debug-info โ€” correlate using debug info ๐Ÿ›
    • =binary โ€” correlate using the binary ๐Ÿงฑ
  • --promote-alloca-vector-loop-user-weight=<uint> โ€” the bonus weight of users of allocas inside a loop when it's sorting profitable allocas ๐Ÿ‘‘
  • --r600-ir-structurize โ€” use the StructurizeCFG IR pass, slay ๐ŸŽ€
  • --riscv-add-build-attributes โ€” literally no description given, she's mysterious and we respect it ๐Ÿ™ˆ
  • --riscv-use-aa โ€” enable the use of AA during codegen ๐Ÿ› ๏ธ
  • --runtime-counter-relocation โ€” enables relocating counters at runtime ๐Ÿ”„
  • --safepoint-ir-verifier-print-only โ€” again, no description in the source. she simply exists ๐Ÿฆ‹
  • --sample-profile-check-record-coverage=<N> โ€” emits a warning if less than N% of records in the input profile actually match the IR ๐Ÿ˜ญ
  • --sample-profile-check-sample-coverage=<N> โ€” emits a warning if less than N% of samples in the input profile match the IR ๐Ÿ˜ญ๐Ÿ˜ญ
  • --sample-profile-max-propagate-iterations=<uint> โ€” the maximum number of iterations to go through when propagating sample block/edge weights through the CFG ๐ŸŒˆ
  • --sampled-instr-burst-duration=<uint> โ€” sets the profile instrumentation burst duration, which can range from 1 up to the value of 'sampled-instr-period' (0 is invalid, periodt). This number of samples gets recorded for each 'sampled-instr-period' count update. Setting it to 1 enables simple sampling โ€” and in that case it's recommended to set 'sampled-instr-period' to a prime number ๐Ÿ”ฅ
  • --sampled-instr-period=<uint> โ€” sets the profile instrumentation sample period. A sample period of 0 is invalid. For each sample period a fixed number of consecutive samples gets recorded, and that number is controlled by the 'sampled-instr-burst-duration' flag. The default sample period of 65536 is optimized for generating efficient code that leverages unsigned short integer wrapping in overflow, but that's disabled under simple sampling (burst duration = 1) ๐Ÿ’ซ
  • --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 this 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. anyway. she's complicated and that's the vibe ๐ŸŒ™
  • --spirv-ext=<value> โ€” specify the list of enabled SPIR-V extensions ๐Ÿงฉ
  • --spv-dump-deps โ€” dump MIR with SPIR-V dependencies info ๐Ÿ“ฆ
  • --spv-emit-nonsemantic-debug-info โ€” emit SPIR-V NonSemantic.Shader.DebugInfo.100 instructions ๐Ÿ‘พ
  • --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-abi=<string> โ€” the name of the ABI to be targeted from the backend ๐ŸŽฏ
  • --thinlto-assume-merged โ€” assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes ๐Ÿค
  • --threads=<int> โ€” no description. nothing. silence. she's giving minimalist ๐ŸŒซ๏ธ
  • --translator-compatibility-mode โ€” SPIR-V Translator compatibility mode ๐Ÿงฌ
  • --ubsan-guard-checks โ€” guard UBSAN checks with llvm.allow.ubsan.check() ๐Ÿ›ก๏ธ
  • --use-undef โ€” use undef when generating programs ๐Ÿซฅ
  • --verify-region-info โ€” verify region info โ€” heads up, it's 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 โ€” WebAssembly setjmp/longjmp handling ๐Ÿช‚
  • --wasm-use-legacy-eh โ€” WebAssembly exception handling (legacy) ๐Ÿ•ฐ๏ธ
  • --wholeprogramdevirt-cutoff=<uint> โ€” max number of devirtualizations for the devirt module pass ๐Ÿ”ช
  • --x86-align-branch=<string> โ€” specify types of branches to align (a 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 isn't 0, it should be a power of 2 and no less than 32. Branches get aligned to prevent them from being across or against the boundary of the specified size. The default value 0 does not align branches ๐Ÿšซ
  • --x86-branches-within-32B-boundaries โ€” align selected instructions to mitigate the negative performance impact of Intel's micro code update for errata skx102. Heads up bestie, this may break assumptions about labels corresponding to particular instructions, and should be used with caution โš ๏ธ
  • --x86-enable-apx-for-relocation โ€” enable APX features (EGPR, NDD and NF) for instructions with relocations on x86-64 ELF ๐Ÿงท
  • --x86-pad-max-prefix-size=<uint> โ€” maximum number of prefixes to use for padding ๐Ÿงฝ
  • --x86-relax-relocations โ€” emit GOTPCRELX/REX_GOTPCRELX/CODE_4_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 ๐Ÿท๏ธ

๐ŸŒธ IR2Vec Options ๐ŸŒธ

  • --ir2vec-arg-weight=<number> โ€” weight for argument embeddings ๐Ÿง 
  • --ir2vec-opc-weight=<number> โ€” weight for opcode embeddings โš™๏ธ
  • --ir2vec-type-weight=<number> โ€” weight for type embeddings ๐Ÿท๏ธ
  • --ir2vec-vocab-path=<string> โ€” path to the vocabulary file for IR2Vec ๐Ÿ“š

๐Ÿฆ‹ Out-of-process Execution Options ๐Ÿฆ‹

  • --oop-executor[=<string>] โ€” launch an out-of-process executor to run code ๐Ÿš€
  • --orc-runtime[=<string>] โ€” path to the ORC runtime ๐Ÿƒ
  • --slab-allocate=<string> โ€” allocate from a slab of the given size (allowable suffixes: Kb, Mb, Gb. default = Kb) ๐Ÿงฑ
  • --use-shared-memory โ€” use shared memory to transfer generated code and data ๐Ÿค

๐Ÿ‘‘ 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-annotate-metadata-vectorize โ€” append vectorize enable/disable metadata from polly ๐Ÿท๏ธ
  • --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> โ€” how many precise steps sit between two approximating iterations ๐Ÿ” and okay here's the lil plot twist: a value of -1 schedules another approximation stage before the actual dead code elimination even happens. so dramatic of it ๐Ÿ’…
  • --polly-delicm-max-ops=<int> โ€” the max number of isl operations we're willing to invest into lifetime analysis. and 0 = no limit, go absolutely feral bestie ๐Ÿ”ฅ
  • --polly-detect-full-functions โ€” lets the detection of full functions happen โœจ
  • --polly-dump-after โ€” dumps the module after Polly transformations into a file suffixed with -after ๐Ÿ“
  • --polly-dump-after-file=<string> โ€” dumps the module after Polly transformations to the given file ๐Ÿ“
  • --polly-dump-before โ€” dumps the module before Polly transformations into a file suffixed with -before ๐Ÿ“
  • --polly-dump-before-file=<string> โ€” dumps the module before Polly transformations to the given file ๐Ÿ“
  • --polly-enable-simplify โ€” simplifies the SCoP after optimizations ๐Ÿงผ
  • --polly-ignore-func=<string> โ€” ignores functions that match a regex ๐Ÿšซ multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided. iykyk
  • --polly-isl-arg=<argument> โ€” an option passed to ISL ๐Ÿซถ
  • --polly-matmul-opt โ€” performs optimizations of matrix multiplications based on pattern matching ๐Ÿงฎ
  • --polly-on-isl-error-abort โ€” aborts if an isl error is encountered. straight up stops everything ๐Ÿ’€
  • --polly-only-func=<string> โ€” only runs 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 runs on certain regions ๐Ÿ‘‘ (the provided identifier must appear in the name of the region's entry block
  • --polly-only-scop-detection โ€” only runs scop detection, but no other optimizations. like just the vibe check, no glow-up ๐Ÿ”
  • --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 โ€” generates thread parallel code ๐Ÿงต (isl codegen only)
  • --polly-parallel-force โ€” forces generation of thread parallel code, ignoring any cost model ๐Ÿ˜ค
  • --polly-pattern-matching-based-opts โ€” performs optimizations based on pattern matching ๐Ÿ”Ž
  • --polly-postopts โ€” applies post-rescheduling optimizations such as tiling (requires -polly-reschedule) ๐Ÿงฑ
  • --polly-pragma-based-opts โ€” applies user-directed transformation from metadata ๐Ÿช„
  • --polly-pragma-ignore-depcheck โ€” skips the dependency check for pragma-based transformations ๐Ÿ™ˆ
  • --polly-process-unprofitable โ€” processes scops that are unlikely to benefit from Polly optimizations. giving underdog energy fr fr ๐Ÿฃ
  • --polly-register-tiling โ€” enables register tiling โœจ
  • --polly-report โ€” prints information about the activities of Polly ๐Ÿ“Š
  • --polly-reschedule โ€” optimizes SCoPs using ISL ๐Ÿ’–
  • --polly-show โ€” highlights the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions) ๐ŸŒˆ
  • --polly-show-only โ€” highlights 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 โœ‚๏ธ and the values are:
    • =bb โ€” one statement per basic block
    • =scalar-indep โ€” scalar independence heuristic
    • =store โ€” store-level granularity
  • --polly-tc-opt โ€” performs optimizations of tensor contractions based on pattern matching ๐Ÿง 
  • --polly-tiling โ€” enables loop tiling ๐Ÿงฑ
  • --polly-vectorizer=<value> โ€” selects the vectorization strategy โšก and the values are:
    • =none โ€” no Vectorization
    • =stripmine โ€” strip-mine outer loops for the loop-vectorizer to trigger

okay that's the whole Polly roster bestie, you ate that ๐Ÿ’… if you made it all the way down here you are genuinely the main character of this manual page ๐ŸŽ€

this one's from clang-repl 21, dated September 2026, and it lives its life as CLANG-REPL(1) โ€” go forth and compile, queen ๐Ÿ‘‘๐Ÿ’œ

๐Ÿ“ฆ where this page comes from