CLANG-REPL(1)

๐Ÿ“ฆ
version 20.1.8 ยท 4 versions
, in ubuntu stonking

CLANG-REPL(1) โ€” User Commands โœจ

okay bestie, this is the manual page for clang-repl, and we are doing it with full main character energy. ๐Ÿ’…

๐ŸŒธ NAME ๐ŸŒธ

clang-repl โ€” manual page for clang-repl 20 ๐Ÿซถ

๐Ÿ’– DESCRIPTION ๐Ÿ’–

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

๐ŸŽ€ OPTIONS ๐ŸŽ€

๐ŸŒˆ Color Options ๐ŸŒˆ

  • --color โ€” use colors in output (default=autodetect). slay, your terminal can be cute too. ๐Ÿ’…

๐Ÿ’– 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. ๐Ÿ’€
  • --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. โš ๏ธ
  • --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. ๐ŸŽ€
  • --argext-abi-check โ€” verify that narrow int args are properly extended per the SystemZ ABI. ๐Ÿ’œ
  • --arm-add-build-attributes โ€” (no description in the original; it's just mysterious) ๐Ÿ™ˆ
  • --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 given, iconic) ๐Ÿ’€
  • --cfg-hide-unreachable-paths โ€” (also no description, bestie) ๐Ÿ˜ญ
  • --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
  • --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 โ€” (no description in the original, just vibes) ๐Ÿ™ˆ
  • --enable-gvn-memoryssa โ€” (no description here either, bestie) ๐Ÿ’€
  • --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 given) ๐Ÿ˜ญ
  • --enable-load-pre โ€” (also blank in the original) ๐Ÿ™ˆ
  • --enable-loop-simplifycfg-term-folding โ€” (no description, just a flag) โœจ
  • --enable-name-compression โ€” enable name/filename string compression. ๐ŸŽ€
  • --enable-split-backedge-in-load-pre โ€” (no description in the original) ๐Ÿ’€
  • --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. ๐ŸŒธ
  • --force-tail-folding-style=<value> โ€” force the tail folding style:
    • =none โ€” disable tail folding

โ€ฆand the value menu just keeps going, bestie, we're not even close to done ๐Ÿ’…

  • =data โ€” makes a lane mask for data only, using the active.lane.mask intrinsic โœจ
  • =data-without-lane-mask โ€” makes the lane mask with compare/stepvector instead ๐ŸŽ€
  • =data-and-control โ€” makes the lane mask using the active.lane.mask intrinsic and then uses that same mask for both data and control flow ๐Ÿ‘‘
  • =data-and-control-without-rt-check โ€” basically data-and-control but it yeets the runtime check ๐Ÿซถ
  • =data-with-evl โ€” uses predicated EVL instructions for tail folding. If EVL isn't supported, it falls back to data-without-lane-mask ๐Ÿ˜Œ
  • --fs-profile-debug-bw-threshold=<uint> โ€” only shows that debug message if the source branch weight is bigger than this value
  • --fs-profile-debug-prob-diff-threshold=<uint> โ€” only shows the debug message if the branch probability is bigger than this value (and it's in percentage, so like, percent)
  • --generate-merged-base-profiles โ€” when you're generating nested context-sensitive profiles, always generate an extra base profile for a function with all its context profiles merged into it ๐Ÿ’–
  • --gpsize=<uint> โ€” Global Pointer Addressing Size. the default size is 8
  • --hash-based-counter-split โ€” renames the counter variable of a comdat function based on cfg hash
  • --hexagon-add-build-attributes โ€” (no description, it's giving mysterious ๐Ÿ•ต๏ธ)
  • --hexagon-rdf-limit=<uint> โ€” (no description either, iconic silence)
  • --hot-cold-split โ€” turns on the hot-cold splitting pass ๐Ÿ”ฅ๐ŸงŠ
  • --hwasan-percentile-cutoff-hot=<int> โ€” hot percentile cutoff.
  • --hwasan-random-rate=<number> โ€” a probability value in the range [0.0, 1.0] for keeping instrumentation of a function
  • --implicit-mapsyms โ€” allows a mapping symbol at section beginning to 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 index.
  • --incremental-linker-compatible โ€” when used with filetype=obj, emits an object file you can use with an incremental linker โœจ
  • --instcombine-code-sinking โ€” enables code sinking ๐Ÿซง
  • --instcombine-guard-widening-window=<uint> โ€” how wide an instruction window to bypass looking for another guard
  • --instcombine-max-num-phis=<uint> โ€” max number of phis to handle in intptr/ptrint folding
  • --instcombine-max-sink-users=<uint> โ€” max number of undroppable users for instruction sinking
  • --instcombine-maxarray-size=<uint> โ€” max array size considered when doing a combine
  • --instcombine-negator-enabled โ€” should we even attempt to sink negations? ๐Ÿค”
  • --instcombine-negator-max-depth=<uint> โ€” the maximal lookup depth when you're trying to check if negation sinking is viable.
  • --instrprof-atomic-counter-update-all โ€” makes all profile counter updates atomic (for testing only, bestie, don't ship this)
  • --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
  • --iterative-counter-promotion โ€” allows counter promotion across the whole loop nest.
  • --lint-abort-on-error โ€” in the Lint pass, aborts on errors ๐Ÿ’€
  • --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, only picked up on AIX
  • --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, we vibe blindly ๐Ÿ‘‘)
  • --max-counter-promotions=<int> โ€” max number of allowed counter promotions
  • --max-counter-promotions-per-loop=<uint> โ€” max number of counter promotions per loop, so we don't increase register pressure too much ๐Ÿ˜ฎโ€๐Ÿ’จ
  • --mc-relax-all โ€” when used with filetype=obj, relaxes all fixups in the emitted object file
  • --mcabac โ€” tbd (literally. that's it. that's the description. ๐Ÿ’€)
  • --merror-missing-parenthesis โ€” errors out for a missing parenthesis around predicate registers
  • --merror-noncontigious-register โ€” errors out for register names that aren't contigious
  • --mhvx โ€” enables Hexagon Vector eXtensions ๐Ÿ
  • --mhvx=<value> โ€” enables 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
    • =v75 โ€” build for HVX v75
    • =v79 โ€” build for HVX v79
  • --mips-compact-branches=<value> โ€” MIPS Specific: compact branch policy.
    • =never โ€” do not use compact branches if possible.
    • =optimal โ€” use compact branches where appropriate (this is the 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 โ€” 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.. (yes the double period is canon, leave it)
  • --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 to their single precision counterparts
  • --mno-pairing โ€” disables looking for duplex instructions for Hexagon
  • --mwarn-missing-parenthesis โ€” warns for a missing parenthesis around predicate registers
  • --mwarn-noncontigious-register โ€” warns for register names that arent contigious
  • --mwarn-sign-mismatch โ€” warns for mismatching a signed and unsigned value โš ๏ธ
  • --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 ๐Ÿ™ˆ
  • --nvptx-approx-log2f32 โ€” NVPTX Specific: whether to use lg2.approx for log2
  • --nvptx-sched4reg โ€” NVPTX Specific: schedule for register pressue
  • --object-size-offset-visitor-max-visit-instructions=<uint> โ€” max 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 โ€” creates a dot file of CFGs with block coverage inference information โœจ
  • --print-pipeline-passes โ€” prints a '-passes' compatible string describing the pipeline (best-effort only).
  • --profile-correlate=<value> โ€” use 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
  • --promote-alloca-vector-loop-user-weight=<uint> โ€” the bonus weight of users of allocas within a loop when sorting profitable allocas
  • --r600-ir-structurize โ€” use the StructurizeCFG IR pass
  • --riscv-add-build-attributes โ€” (no description, just vibes ๐Ÿ’œ)
  • --riscv-use-aa โ€” enables the use of AA during codegen.
  • --runtime-counter-relocation โ€” enables relocating counters at runtime.
  • --safepoint-ir-verifier-print-only โ€” (no description once again, iconic ๐ŸŽ€)
  • --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> โ€” ok so this one yells at you (well, warns) if fewer than N% of the samples in your input profile managed to match up with the IR. bestie mismatch? it'll let you know. ๐Ÿ˜ญ
  • --sample-profile-max-propagate-iterations=<uint> โ€” the maximum number of iterations to go through when propagating sample block/edge weights through the CFG. that's it, that's the whole thing. ๐ŸŒ€
  • --sampled-instr-burst-duration=<uint> โ€” sets the profile instrumentation burst duration, and it can range from 1 up to the value of sampled-instr-period (0 is invalid, don't even). this number of samples gets recorded for each sampled-instr-period count update. setting it to 1 turns on simple sampling, and if you do that, it's recommended you 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 heads up, that's disabled under simple sampling (burst duration = 1). ๐Ÿซถ
  • --sampled-instrumentation โ€” do the PGO instrumentation sampling. literally just that. ๐ŸŽฏ
  • --sanitizer-early-opt-ep โ€” insert sanitizers on OptimizerEarlyEP. ๐Ÿงผ
  • --save-temp-labels โ€” don't discard temporary labels. keep 'em, they're precious. ๐Ÿ’–
  • --skip-ret-exit-block โ€” suppress counter promotion if exit blocks contain ret. periodt. ๐Ÿ›‘
  • --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 gets disallowed โ€” unless the promoted counter update can be further/iteratively promoted into an acyclic region. ๐Ÿ’ซ
  • --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> โ€” controls the use of vectorisation using tail-folding for SVE, where you write the option in the form (Initial)[+(Flag1|Flag2|...)]. the vibes, decoded:
    • 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. the lore:
    • =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
bestie. notice the force- ones say might be unsafe. that's not me being dramatic, that's the docs. tread carefully. ๐Ÿ’€
  • --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. just assume it, trust. ๐Ÿ™ˆ
  • --threads=<int> โ€” (the docs give you literally nothing here. no description. crickets. iconic in its own way.) ๐Ÿคท
  • --translator-compatibility-mode โ€” SPIR-V Translator compatibility mode. ๐Ÿค
  • --type-based-intrinsic-cost โ€” calculate intrinsics cost based only on argument types. ๐Ÿ”ข
  • --ubsan-guard-checks โ€” guard UBSAN checks with llvm.allow.ubsan.check(). ๐Ÿ›ก๏ธ
  • --use-undef โ€” use undef when generating programs. ๐Ÿซฅ
  • --verify-region-info โ€” verify region info (time consuming, so likeโ€ฆ go get a snack ๐Ÿ“)
  • --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 devirt module pass. โœ‚๏ธ
  • --write-experimental-debuginfo โ€” write debug info in the new non-intrinsic format. has no effect if --preserve-input-debuginfo-format=true. bestie read that twice before you go changing stuff. ๐Ÿ˜ญ
  • --x86-align-branch=<string> โ€” specify types of branches to align (it's 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> โ€” controls 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 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. 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/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). the classic. ๐Ÿ‘‘
  • --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-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> โ€” 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 โ€” give me the polyhedral tea โ˜•: this dumps the polyhedral description of Scops that got optimized with the isl scheduling optimizer, with the whole set of post-scheduling transformations applied on the schedule tree. very demure, very optimized โœจ
  • --polly-parallel โ€” generate thread parallel code (isl codegen only, bestie, only that one) ๐Ÿงต
  • --polly-parallel-force โ€” force that thread parallel code generation and ignore any cost model. it's giving "i said what i said" ๐Ÿ’…
  • --polly-pattern-matching-based-opts โ€” do optimizations based on pattern matching ๐Ÿ”
  • --polly-postopts โ€” apply post-rescheduling optimizations like tiling (this one requires -polly-reschedule, no cap) โœจ
  • --polly-pragma-based-opts โ€” apply user-directed transformation from metadata ๐Ÿ“
  • --polly-pragma-ignore-depcheck โ€” skip the dependency check for pragma-based transformations. living dangerously, love that for you ๐Ÿ˜ญ
  • --polly-process-unprofitable โ€” process scops that are unlikely to benefit from Polly optimizations. main character energy for the underdogs ๐Ÿซถ
  • --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_ โ€” the algorithm to use for splitting basic blocks into multiple statements
    • =bb โ€” one statement per basic block
    • =scalar-indep โ€” the 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_ โ€” pick the vectorization strategy
    • =none โ€” no vectorization
    • =stripmine โ€” strip-mine outer loops so the loop-vectorizer triggers

and that's a wrap on this whole entire page, bestie ๐Ÿ’– this was clang-repl version 20, dated September 2026 โ€” so if you're reading this in a future where the dates feel fake, blame the manpage, not me. go forth and slay your REPL sessions, ily ๐ŸŽ€๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from