CLANG-REPL(1)

πŸ“¦
version 19.1.7 Β· 5 versions
, in debian bookworm, debian trixie

✨ NAME ✨

clang-repl β€” the manual page for clang-repl 19 πŸ’– (straight out of the User Commands section of the manual, bestie, and yes she's an icon)


🌸 DESCRIPTION 🌸

Okay so picture this: you wanna run C++ code right now, no main(), no build system drama, no waiting. That's the vibe. Here's how you call her:

πŸš€ USAGE

clang-repl [options] [code to run]

πŸŽ€ OPTIONS

🌈 Color Options

  • --color β€” turns on colors in the output, fr fr (default = autodetect, so she'll figure out on her own whether your terminal is that girl)

🧚 General options

okay bestie this next part is LONG, but I'm not skipping a single one, we're getting through all of them together πŸ’ͺ grab a snack
  • --Xcc=<string> β€” an argument you pass straight through to the CompilerInvocation ✨
  • --aarch64-neon-syntax=<value> β€” pick which flavor of NEON code the AArch64 backend emits:
    • =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 β€” bail out (abort!) when the max iterations for the devirtualization CGSCC repeat pass gets hit πŸ’€
  • --allow-ginsert-as-artifact β€” lets G_INSERT count as an artifact. Literally a hack around AMDGPU test infinite loops, no cap
  • --amdgpu-atomic-optimizer-strategy=<value> β€” choose the DPP or Iterative strategy for scan:
    • =DPP β€” use DPP operations for scan
    • =Iterative β€” use the Iterative approach for scan
    • =None β€” disable the atomic optimizer
  • --amdgpu-bypass-slow-div β€” skip the 64-bit divide for dynamic 32-bit values πŸƒβ€β™€οΈ
  • --amdgpu-disable-loop-alignment β€” do not align and prefetch loops
  • --amdgpu-dpp-combine β€” enable the DPP combiner
  • --amdgpu-dump-hsa-metadata β€” dump AMDGPU HSA Metadata
  • --amdgpu-enable-merge-m0 β€” merge and hoist M0 initializations
  • --amdgpu-enable-power-sched β€” enable scheduling to minimize mAI power bursts ⚑
  • --amdgpu-kernarg-preload-count=<uint> β€” how many kernel arguments to preload onto SGPRs
  • --amdgpu-promote-alloca-to-vector-limit=<uint> β€” the maximum byte size to even consider promoting alloca to vector
  • --amdgpu-sdwa-peephole β€” enable the SDWA peepholer πŸ‘€
  • --amdgpu-use-aa-in-codegen β€” enable the use of AA during codegen
  • --amdgpu-verify-hsa-metadata β€” verify AMDGPU HSA Metadata
  • --amdgpu-vgpr-index-mode β€” use GPR indexing mode instead of movrel for vector indexing
  • --arm-add-build-attributes β€” (the manpage left this one blank, so it's giving mystery ✨ nobody knows, and I'm not about to make something up)
  • --arm-implicit-it=<value> β€” allow conditional instructions outdside of an IT block:
    • =always β€” accept in both ISAs, emit implicit ITs in Thumb
    • =never β€” warn in ARM, reject in Thumb
    • =arm β€” accept in ARM, reject in Thumb
    • =thumb β€” warn in ARM, emit implicit ITs in Thumb
  • --asm-show-inst β€” emit the internal instruction representation into the assembly file
  • --atomic-counter-update-promoted β€” do the counter update using atomic fetch add, but only for promoted counters
  • --atomic-first-counter β€” use atomic fetch add for the first counter in a function (usually the entry counter, iykyk)
  • --bounds-checking-single-trap β€” use one trap block per function πŸͺ€
  • --bounds-checking-unique-traps β€” always use one trap per check
  • --bpf-stack-size=<int> β€” specify the BPF stack size limit
  • --cfg-hide-cold-paths=<number> β€” hide blocks whose relative frequency is below the value you give πŸ₯Ά
  • --cfg-hide-deoptimize-paths β€” (no description in the original, bestie β€” she's mysterious like that)
  • --cfg-hide-unreachable-paths β€” (also blank in the original, matching energy πŸ’…)
  • --check-functions-filter=<regex> β€” only emit checks for arguments of functions whose names match the given regular expression
  • --cost-kind=<value> β€” the target cost kind:
    • =throughput β€” reciprocal throughput
    • =latency β€” instruction latency
    • =code-size β€” code size
    • =size-latency β€” code size and latency
  • --crel β€” use the 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 instead
  • --debugify-func-limit=<ulong> β€” set the max number of processed functions per pass
  • --debugify-level=<value> β€” what kind of debug info to add:
    • =locations β€” locations only
    • =location+variables β€” locations and variables
  • --debugify-quiet β€” suppress that verbose debugify output 🀫
  • --disable-auto-upgrade-debug-info β€” disable autoupgrade of debug info
  • --disable-i2p-p2i-opt β€” disables the 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 the 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 isn't available
    • =default β€” use the target platform default
  • --emscripten-cxx-exceptions-allowed=<string> β€” the list of function names in which Emscripten-style exception handling is enabled (see the 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 β€” (blank in the original, she said nothing and left 😭)
  • --enable-gvn-sink β€” enable the GVN sinking pass (default = off)
  • --enable-jump-table-to-switch β€” enable the JumpTableToSwitch pass (default = off)
  • --enable-load-in-loop-pre β€” (no description, matching the void 🌌)
  • --enable-load-pre β€” (also undescribed, iconic of her)
  • --enable-loop-simplifycfg-term-folding β€” (yep, blank again 🫠)
  • --enable-name-compression β€” enable name/filename string compression
  • --enable-pgo-force-function-attrs β€” enable the pass that sets function attributes based on PGO profiles
  • --enable-split-backedge-in-load-pre β€” (nothing here either, bestie)
  • --enable-split-loopiv-heuristic β€” enable the loop iv regalloc heuristic
  • --enable-vtable-profile-use β€” if ThinLTO and WPD are enabled and this option is true, vtable profiles get used by the ICP pass for a more efficient indirect call sequence. If it's false, type profiles won't be used
  • --enable-vtable-value-profiling β€” if true, the virtual table address gets instrumented so we know the types of a C++ pointer. That info gets used in indirect call promotion to do selective vtable-based comparison πŸ”
  • --execute-concurrency=<uint> β€” how many threads get used to process all files in parallel. Set it 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 the variadic calling convention
  • --experimental-debug-variable-locations β€” use the 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
    • =data β€” create a lane mask for data only, using the active.lane.mask intrinsic
    • =data-without-lane-mask β€” create the lane mask with compare/stepvector
    • =data-and-control β€” create the lane mask using the active.lane.mask intrinsic, and use it for both data and control flow 🌈

and that's part one bestie, we're not done yet β€” more incoming πŸ’–

  • =data-and-control-without-rt-check β€” Similar to data-and-control, but remove the runtime check πŸ’…
  • =data-with-evl β€” Use predicated EVL instructions for tail folding. If EVL is unsupported, fallback to data-without-lane-mask. ✨
  • --fs-profile-debug-bw-threshold=<uint> β€” Only show debug message if the source branch weight is greater than this value.
  • --fs-profile-debug-prob-diff-threshold=<uint> β€” Only show debug message if the branch probility is greater than this value (in percentage). (yes bestie, β€œprobility” is literally what it says 😭)
  • --generate-merged-base-profiles β€” When generating nested context-sensitive profiles, always generate extra base profile for function with all its context profiles merged into it.
  • --gpsize=<uint> β€” Global Pointer Addressing Size. The default size is 8. πŸŽ€
  • --hash-based-counter-split β€” Rename counter variable of a comdat function based on cfg hash
  • --hexagon-add-build-attributes β€” no description in the manual, just a mystery box 🎁
  • --hexagon-rdf-limit=<uint> β€” no description, it’s giving mysterious πŸ’…
  • --hot-cold-split β€” Enable hot-cold splitting pass πŸ”₯🧊
  • --hwasan-percentile-cutoff-hot=<int> β€” Hot percentile cuttoff. (another iconic typo, we keep it fr fr)
  • --hwasan-random-rate=<number> β€” Probability value in the range [0.0, 1.0] to keep instrumentation of a function.
  • --import-all-index β€” Import all external functions in index.
  • --incremental-linker-compatible β€” When used with filetype=obj, emit an object file which can be used with an incremental linker
  • --instcombine-code-sinking β€” Enable code sinking
  • --instcombine-guard-widening-window=<uint> β€” How wide an instruction window to bypass looking for another guard
  • --instcombine-max-num-phis=<uint> β€” Maximum number phis to handle in intptr/ptrint folding
  • --instcombine-max-sink-users=<uint> β€” Maximum number of undroppable users for instruction sinking
  • --instcombine-maxarray-size=<uint> β€” Maximum array size considered when doing a combine
  • --instcombine-negator-enabled β€” Should we attempt to sink negations?
  • --instcombine-negator-max-depth=<uint> β€” What is the maximal lookup depth when trying to check for viability of negation sinking.
  • --instrprof-atomic-counter-update-all β€” Make all profile counter updates atomic (for testing only) πŸ§ͺ don’t ship this bestie, it literally says testing only
  • --internalize-public-api-file=<filename> β€” A file containing list of symbol names to preserve
  • --internalize-public-api-list=<list> β€” A list of symbol names to preserve
  • --iterative-counter-promotion β€” Allow counter promotion across the whole loop nest.
  • --lint-abort-on-error β€” In the Lint pass, abort on errors. 😭
  • --lower-allow-check-percentile-cutoff-hot=<int> β€” Hot percentile cuttoff.
  • --lower-allow-check-random-rate=<number> β€” Probability value in the range [0.0, 1.0] of unconditional pseudo-random checks.
  • --lto-aix-system-assembler=<path> β€” Path to a system assembler, picked up on AIX only
  • --lto-embed-bitcode=<value> β€” Embed LLVM bitcode in object files produced by LTO
    • =none β€” Do not embed
    • =optimized β€” Embed after all optimization passes
    • =post-merge-pre-opt β€” Embed post merge, but before optimizations
  • --lto-pass-remarks-filter=<regex> β€” Only record optimization remarks from passes whose names match the given regular expression
  • --lto-pass-remarks-format=<format> β€” The format used for serializing remarks (default: YAML)
  • --lto-pass-remarks-output=<filename> β€” Output filename for pass remarks
  • --matrix-default-layout=<value> β€” Sets the default matrix layout
    • =column-major β€” Use column-major layout
    • =row-major β€” Use row-major layout
  • --matrix-print-after-transpose-opt β€” no description, just vibes πŸ¦‹
  • --max-counter-promotions=<int> β€” Max number of allowed counter promotions
  • --max-counter-promotions-per-loop=<uint> β€” Max number counter promotions per loop to avoid increasing register pressure too much
  • --mc-relax-all β€” When used with filetype=obj, relax all fixups in the emitted object file
  • --mcabac β€” tbd (literally what it says, bestie 😭)
  • --merror-missing-parenthesis β€” Error for missing parenthesis around predicate registers
  • --merror-noncontigious-register β€” Error for register names that aren't contigious
  • --mhvx β€” Enable Hexagon Vector eXtensions
  • --mhvx=<value> β€” Enable Hexagon Vector eXtensions
    • =v60 β€” Build for HVX v60
    • =v62 β€” Build for HVX v62
    • =v65 β€” Build for HVX v65
    • =v66 β€” Build for HVX v66
    • =v67 β€” Build for HVX v67
    • =v68 β€” Build for HVX v68
    • =v69 β€” Build for HVX v69
    • =v71 β€” Build for HVX v71
    • =v73 β€” Build for HVX v73
  • --mips-compact-branches=<value> β€” MIPS Specific: Compact branch policy.
    • =never β€” Do not use compact branches if possible.
    • =optimal β€” Use compact branches where appropriate (default).
    • =always β€” Always use compact branches if possible.
  • --mips16-constant-islands β€” Enable mips16 constant islands.
  • --mips16-hard-float β€” Enable mips16 hard float.
  • --mir-strip-debugify-only β€” Should mir-strip-debug only strip debug info from debugified modules by default
  • --misexpect-tolerance=<uint> β€” Prevents emitting diagnostics when profile counts are within N% of the threshold.. (two dots, we don’t make the rules πŸ’€)
  • --mno-compound β€” Disable looking for compound instructions for Hexagon
  • --mno-fixup β€” Disable fixing up resolved relocations for Hexagon
  • --mno-ldc1-sdc1 β€” Expand double precision loads and stores to their single precision counterparts
  • --mno-pairing β€” Disable looking for duplex instructions for Hexagon
  • --mwarn-missing-parenthesis β€” Warn for missing parenthesis around predicate registers
  • --mwarn-noncontigious-register β€” Warn for register names that arent contigious
  • --mwarn-sign-mismatch β€” Warn for mismatching a signed and unsigned value
  • --no-deprecated-warn β€” Suppress all deprecated warnings
  • --no-discriminators β€” Disable generation of discriminator information.
  • --no-type-check β€” Suppress type errors (Wasm)
  • --no-warn β€” Suppress all warnings
  • --nvptx-sched4reg β€” NVPTX Specific: schedule for register pressue (yes, β€œpressue” 😭 iconic)
  • --object-size-offset-visitor-max-visit-instructions=<uint> β€” Maximum number of instructions for ObjectSizeOffsetVisitor to look at
  • --pgo-block-coverage β€” Use this option to enable basic block coverage instrumentation
  • --pgo-temporal-instrumentation β€” Use this option to enable temporal instrumentation
  • --pgo-view-block-coverage-graph β€” Create a dot file of CFGs with block coverage inference information
  • --poison-checking-function-local β€” Check that returns are non-poison (for testing) πŸ§ͺ
  • --print-pipeline-passes β€” Print a '-passes' compatible string describing the pipeline (best-effort only).
  • --profile-correlate=<value> β€” Use debug info or binary file to correlate profiles.
    • =<empty> β€” No profile correlation
    • =debug-info β€” Use debug info to correlate
    • =binary β€” Use binary to correlate
  • --promote-alloca-vector-loop-user-weight=<uint> β€” The bonus weight of users of allocas within loop when sorting profitable allocas
  • --r600-ir-structurize β€” Use StructurizeCFG IR pass
  • --riscv-add-build-attributes β€” no description, it’s giving elusive 🫢
  • --riscv-use-aa β€” Enable the use of AA during codegen.
  • --runtime-counter-relocation β€” Enable relocating counters at runtime.
  • --safepoint-ir-verifier-print-only β€” no description, just a little enigma πŸ’œ
  • --sample-profile-check-record-coverage=<N> β€” Emit a warning if less than N% of records in the input profile are matched to the IR.
  • --sample-profile-check-sample-coverage=<N> β€” Emit a warning if less than N% of samples in the input profile are matched to the IR.
  • --sample-profile-max-propagate-iterations=<uint> β€” Maximum number of iterations to go through when propagating sample block/edge weights through the CFG.
  • --sampled-instr-burst-duration=<uint> β€” Set the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. This number of samples will be recorded for each 'sampled-instr-period' count update. Setting to 1 enables simple sampling, in which case it is recommended to set 'sampled-instr-period' to a prime number. ✨
  • --sampled-instr-period=<uint> β€” okay so this one sets the profile instrumentation sample period. For each sample period, a fixed number of consecutive samples will be recorded. That number is controlled by the sampled-instr-burst-duration flag. The default sample period of 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow. slay ✨
  • --sampled-instrumentation β€” do PGO instrumentation sampling πŸ’…
  • --sanitizer-early-opt-ep β€” insert sanitizers on OptimizerEarlyEP. periodt
  • --save-temp-labels β€” don't discard temporary labels πŸŽ€
  • --skip-ret-exit-block β€” suppress counter promotion if exit blocks contain ret. iykyk
  • --speculative-counter-promotion-max-exiting=<uint> β€” the max number of exiting blocks of a loop to allow speculative counter promotion. no cap
  • --speculative-counter-promotion-to-loop β€” when the option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region. the way that works 😭
  • --summary-file=<string> β€” the summary file to use for function importing. bestie
  • --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
bestie, the force ones are literally marked β€œmight be unsafe” β€” respect the warning πŸ’€
  • --thinlto-assume-merged β€” assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes. fr fr
  • --threads=<int> β€” this one is blank in the source, bestie. No description, just silence. πŸ™ˆ
  • --type-based-intrinsic-cost β€” calculate intrinsics cost based only on argument types. math girlie ✨
  • --ubsan-guard-checks β€” guard UBSAN checks with llvm.allow.ubsan.check(). obsessed
  • --ubsan-unique-traps β€” deoptimize traps for UBSAN so there is 1 trap per check. iconic
  • --use-undef β€” use undef when generating programs. spooky but valid
  • --verify-region-info β€” verify region info (time consuming). grab a snack, it's giving slow
  • --vp-counters-per-site=<number> β€” the average number of profile counters allocated per value profiling site. numbers bestie
  • --vp-static-alloc β€” do static counter allocation for value profiler. slay allocation
  • --wasm-enable-eh β€” WebAssembly exception handling. wasm girlies rise
  • --wasm-enable-exnref β€” WebAssembly exception handling (exnref). more wasm
  • --wasm-enable-sjlj β€” WebAssembly setjmp/longjmp handling. wasm said jump
  • --write-experimental-debuginfo β€” write debug info in the new non-intrinsic format. Has no effect if --preserve-input-debuginfo-format=true. note it, bestie
  • --x86-align-branch=<string> β€” specify types of branches to align (plus separated list of types):
    • jcc β€” indicates conditional jumps
    • fused β€” indicates fused conditional jumps
    • jmp β€” indicates direct unconditional jumps
    • call β€” indicates direct and indirect calls
    • ret β€” indicates rets
    • indirect β€” indicates indirect unconditional jumps
  • --x86-align-branch-boundary=<uint> β€” control how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches. okay so boundaries matter πŸ’…
  • --x86-branches-within-32B-boundaries β€” align selected instructions to mitigate negative performance impact of Intel's micro code update for errata skx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
caution bestie, this one can break label assumptions. Use it with care, no cap.
  • --x86-pad-max-prefix-size=<uint> β€” maximum number of prefixes to use for padding. padding queen
  • --x86-relax-relocations β€” emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF. relocation slay
  • --x86-sse2avx β€” specify that the assembler should encode SSE instructions with VEX prefix. VEX prefix era

πŸ’« Generic Options πŸ’«

  • --help β€” display available options (--help-hidden for more). the classic ✨
  • --help-list β€” display list of available options (--help-list-hidden for more). list mode
  • --version β€” display the version of this program. version check bestie

πŸ’« Polly Options: Configure the polly loop optimizer πŸ’«

  • --polly β€” enable the polly optimizer (with -O1, -O2 or -O3). polly pocket but for loops πŸ‘‘
  • --polly-2nd-level-tiling β€” enable a 2nd level loop of loop tiling. tile on tile
  • --polly-ast-print-accesses β€” print memory access functions. show me the accesses
  • --polly-context=<isl parameter set> β€” provide additional constraints on the context parameters. context queen
  • --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. yes the source has an open paren, we're keeping it
  • --polly-delicm-max-ops=<int> β€” maximum number of isl operations to invest for lifetime analysis; 0=no limit. no limit bestie
  • --polly-detect-full-functions β€” allow the detection of full functions. detect them all
  • --polly-dump-after β€” dump module after Polly transformations into a file suffixed with "-after". dump after
  • --polly-dump-after-file=<string> β€” dump module after Polly transformations to the given file. dump after, but named
  • --polly-dump-before β€” dump module before Polly transformations into a file suffixed with "-before". dump before
  • --polly-dump-before-file=<string> β€” dump module before Polly transformations to the given file. dump before, but named
  • --polly-enable-simplify β€” simplify SCoP after optimizations. simplify era
  • --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. regex girlie
  • --polly-isl-arg=<argument> β€” option passed to ISL. isl said here's an argument
  • --polly-matmul-opt β€” perform optimizations of matrix multiplications based on pattern matching. matrix math slay
  • --polly-on-isl-error-abort β€” abort if an isl error is encountered. abort mode, dramatic
  • --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. only these functions
  • --polly-only-region=<identifier> β€” only run on certain regions (The provided identifier must appear in the name of the region's entry block. another open paren, iconic
  • --polly-only-scop-detection β€” only run scop detection, but no other optimizations. detection only
  • --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. polyhedral description bestie
  • --polly-parallel β€” generate thread parallel code (isl codegen only). parallel vibes
  • --polly-parallel-force β€” force generation of thread parallel code ignoring any cost model. force it, ignore the cost model
  • --polly-pattern-matching-based-opts β€” perform optimizations based on pattern matching. pattern matching slay
  • --polly-postopts β€” apply post-rescheduling optimizations such as tiling (requires -polly-reschedule). postopts after reschedule
  • --polly-pragma-based-opts β€” apply user-directed transformation from metadata. pragma said transform
  • --polly-pragma-ignore-depcheck β€” skip the dependency check for pragma-based transformations. skipping depcheck, bold
  • --polly-process-unprofitable β€” process scops that are unlikely to benefit from Polly optimizations. unprofitable but we process anyway
  • --polly-register-tiling β€” enable register tiling. register tiles
  • --polly-report β€” print information about the activities of Polly. report time
  • --polly-reschedule β€” optimize SCoPs using ISL. reschedule slay
  • --polly-show β€” highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions). show me the regions ✨
  • --polly-show-only β€” ok so this one highlights the code regions that are gonna get optimized, but in a CFG only BBs kinda way ✨ basically it's giving "here's the glow-up zone" and nothing else πŸ’…
  • --polly-stmt-granularity=<value> β€” picks the algorithm used to split basic blocks into multiple statements, bestie. and the options are, and I quote:
    • =bb β€” one statement per basic block. simple, iconic, no notes πŸŽ€
    • =scalar-indep β€” the scalar independence heuristic πŸ‘‘
    • =store β€” store-level granularity. granular granular πŸ’€
  • --polly-tc-opt β€” performs optimizations of tensor contractions based on pattern matching πŸ”₯ pattern matching really said "I know her" fr fr
  • --polly-tiling β€” enables loop tiling 🧩 yes queen, tile those loops, we love a structured layout
  • --polly-vectorizer=<value> β€” selects the vectorization strategy. choose your fighter:
    • =none β€” no vectorization. we're sitting this one out πŸ™ˆ
    • =stripmine β€” strip-mines outer loops so the loop-vectorizer can trigger 🌈 it's literally setting the stage for the main character

and that's the whole page, bestie!! 🫢 this was clang-repl from 19, dated June 2025 β€” like, that's the source and the version and the date all wrapped up in a little bow πŸŽ€ go forth and repl responsibly, no cap πŸ’–πŸ’…βœ¨

πŸ“¦ where this page comes from