CLANG-REPL(1)
๐ 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โ AllowG_INSERTto 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 toobjc_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 emscriptenEMSCRIPTEN_CATCHING_ALLOWEDoptions)--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 theactive.lane.maskintrinsic.=data-without-lane-maskโ creates the lane mask withcompare/stepvector.=data-and-controlโ creates a lane mask using theactive.lane.maskintrinsic, and uses it for both data and control flow. versatile queen ๐=data-and-control-without-rt-checkโ likedata-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 todata-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 is8. remember the8, 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 withfiletype=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โ usesTargetTransformInfo::getInstructionCost.=intrinsic-costโ usesTargetTransformInfo::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 withfiletype=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 HVXv60.=v62โ build for HVXv62.=v65โ build for HVXv65.=v66โ build for HVXv66.=v67โ build for HVXv67.=v68โ build for HVXv68.=v69โ build for HVXv69.=v71โ build for HVXv71.=v73โ build for HVXv73.=v75โ build for HVXv75.=v79โ build for HVXv79.
--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โ shouldmir-strip-debugonly strip debug info from debugified modules by default? ๐ฆ--misexpect-tolerance=<uint>โ prevents emitting diagnostics when profile counts are withinN%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 uselg2.approxforlog2.--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 forObjectSizeOffsetVisitorto 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'(0is 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 of0is 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 of65536is 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 containret๐ช--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-VNonSemantic.Shader.DebugInfo.100instructions ๐พ--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-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
--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 withllvm.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โ WebAssemblysetjmp/longjmphandling ๐ช--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 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>โ control how the assembler should align branches with NOP. If the boundary's size isn't0, it should be a power of 2 and no less than32. Branches get aligned to prevent them from being across or against the boundary of the specified size. The default value0does 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โ emitGOTPCRELX/REX_GOTPCRELX/CODE_4_GOTPCRELXinstead ofGOTPCRELon x86-64 ELF ๐--x86-sse2avxโ specify that the assembler should encode SSE instructions with VEX prefix ๐งฌ
๐ Generic Options ๐
--helpโ display available options (--help-hiddenfor more) ๐--help-listโ display list of available options (--help-list-hiddenfor 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,-O2or-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-1schedules 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. and0= 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
- ubuntu stonking: clang-tools-21 1:21.1.8-10ubuntu2 ยท APACHE-2-LLVM-EXCEPTIONS
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms