MODULARIZE(1)

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

πŸ’– MODULARIZE(1) πŸ’–

User Commands

okay bestie, welcome to the modularize manual. Let’s get into it.


✨ NAME ✨

modularize β€” manual page for modularize 19. periodt.


🌸 DESCRIPTION 🌸

πŸ‘‘ OVERVIEW

modularize. That’s the whole overview, bestie. Short and iconic.

πŸš€ USAGE

modularize [options] <list of one or more header list files>
<arguments to be passed to front end>...

πŸ’… OPTIONS

πŸŽ€ Color Options πŸŽ€

  • --color β€” Turn on colors in the output. Default is autodetect, so she’ll decide for you.

🧸 General options 🧸

  • -I <path> β€” Give a path to include for the coverage check.
  • --aarch64-neon-syntax=<value> β€” Pick the style of NEON code the AArch64 backend emits:
    • =generic β€” Emit generic NEON assembly
    • =apple β€” Emit Apple-style NEON assembly
  • --aarch64-use-aa β€” Let AA be used while doing codegen. AA said yes.
  • --abort-on-max-devirt-iterations-reached β€” Abort once the max iterations for the devirtualization CGSCC repeat pass have been hit.
  • --allow-ginsert-as-artifact β€” Let G_INSERT be treated as an artifact. It’s a hack around AMDGPU test infinite loops.
  • --amdgpu-atomic-optimizer-strategy=<value> β€” Choose DPP or Iterative as the strategy for scan:
    • =DPP β€” Use DPP operations for scan
    • =Iterative β€” Use Iterative approach for scan
    • =None β€” Disable atomic optimizer
  • --amdgpu-bypass-slow-div β€” Skip the 64-bit divide when the 32-bit values are dynamic.
  • --amdgpu-disable-loop-alignment β€” Don’t align or prefetch loops.
  • --amdgpu-dpp-combine β€” Turn on the DPP combiner.
  • --amdgpu-dump-hsa-metadata β€” Dump the AMDGPU HSA metadata.
  • --amdgpu-enable-merge-m0 β€” Merge and hoist M0 initializations.
  • --amdgpu-enable-power-sched β€” Turn on scheduling that minimizes mAI power bursts.
  • --amdgpu-kernarg-preload-count=<uint> β€” How many kernel arguments to preload onto SGPRs.
  • --amdgpu-promote-alloca-to-vector-limit=<uint> β€” Max byte size to even consider for promoting alloca to vector.
  • --amdgpu-sdwa-peephole β€” Turn on the SDWA peepholer.
  • --amdgpu-use-aa-in-codegen β€” Let AA be used during codegen.
  • --amdgpu-verify-hsa-metadata β€” Verify the AMDGPU HSA metadata.
  • --amdgpu-vgpr-index-mode β€” Use GPR indexing mode instead of movrel for vector indexing.
  • --arm-add-build-attributes β€” (no description in the original, just a lil hyphen, bestie)
  • --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 counter updates with atomic fetch add only for promoted counters.
  • --atomic-first-counter β€” Use atomic fetch add for the first counter in a function (usually the entry counter).
  • --block-check-header-list-only β€” Only warn if #include directives are inside extern or namespace blocks and the included header is in the header list.
  • --bounds-checking-single-trap β€” Use one trap block per function.
  • --bounds-checking-unique-traps β€” Always use one trap per check.
  • --bpf-stack-size=<int> β€” Set the BPF stack size limit.
  • --cfg-hide-cold-paths=<number> β€” Hide blocks whose relative frequency is below the given value.
  • --cfg-hide-deoptimize-paths β€” (blank in the original, just a hyphen)
  • --cfg-hide-unreachable-paths β€” (blank in the original, just a hyphen)
  • --check-functions-filter=<regex> β€” Only emit checks for arguments of functions whose names match the given regex.
  • --cost-kind=<value> β€” What kind of target cost are we talking about:
    • =throughput β€” Reciprocal throughput
    • =latency β€” Instruction latency
    • =code-size β€” Code size
    • =size-latency β€” Code size and latency
  • --coverage-check-only β€” Only do the coverage check.
  • --crel β€” Use the CREL relocation format for ELF.
  • --cs-profile-generate β€” Do context sensitive PGO instrumentation.
  • --cs-profile-path=<string> β€” Path to the context sensitive profile file.
  • --debug-info-correlate β€” Use debug info to correlate profiles. Deprecated, use -profile-correlate=debug-info
  • --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 the verbose debugify output.
  • --disable-auto-upgrade-debug-info β€” Turn off autoupgrade of debug info.
  • --disable-i2p-p2i-opt β€” Disable the inttoptr/ptrtoint roundtrip optimization.
  • --disable-promote-alloca-to-lds β€” Disable promoting alloca to LDS.
  • --disable-promote-alloca-to-vector β€” Disable promoting alloca to vector.
  • --display-file-lists β€” Show lists of good files (no compile errors), problem files, and a combined list where problem files are preceded by a #.
  • --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 emitting 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 where 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 β€” (blank in the original, just a hyphen)
  • --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 β€” (blank in the original, just a hyphen)
  • --enable-load-pre β€” (blank in the original, just a hyphen)
  • --enable-loop-simplifycfg-term-folding β€” (blank in the original, just a hyphen)
  • --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 β€” (blank in the original, just a hyphen)
  • --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 will be used by the ICP pass for a more efficient indirect call sequence. If 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 is used in indirect call promotion for selective vtable-based comparison.
  • --execute-concurrency=<uint> β€” How many threads to use when processing 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 how expand-variadics behaves:
    • =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 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 lane mask for data only, using active.lane.mask intrinsic
    • =data-without-lane-mask β€” Create lane mask with compare/stepvector
    • =data-and-control β€” Create lane mask using active.lane.mask intrinsic, and use it for both data and control flow
    • =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, β€œprobility” β€” the typo is canon πŸ’€)
  • --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 given β€” mysterious icon behavior πŸ‘‘)
  • --hexagon-rdf-limit=<uint> β€” (also no description, bestie β€” the void stares back πŸ•³οΈ)
  • --hot-cold-split β€” Enable hot-cold splitting pass πŸ”₯❄️
  • --hwasan-percentile-cutoff-hot=<int> β€” Hot percentile cuttoff.
  • --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)
  • --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
  • --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..
  • --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
  • --module-map-path=<string> β€” Turn on module map output and specify output path or file name. If no path is specified and if prefix option is specified, use prefix for file path.
  • --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-coverage-check β€” Don't do the coverage check.
  • --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
  • --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)
  • --prefix=<string> β€” Prepend header file paths with this prefix. If not specified, the files are considered to be relative to the header list file.
  • --print-pipeline-passes β€” Print a '-passes' compatible string describing the pipeline (best-effort only).
  • --problem-files-list=<string> β€” List of files with compilation or modularization problems for assistant mode. This will be excluded.
  • --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 in the source, bestie, it's just vibing there with its flag name πŸ¦‹
  • --riscv-use-aa β€” lets AA get used during codegen. yes queen, enable it πŸ’…
  • --root-module=<string> β€” tell it the name of the root module πŸŽ€
  • --runtime-counter-relocation β€” enables relocating counters at runtime ✨
  • --safepoint-ir-verifier-print-only β€” no description given, it simply exists πŸ™ˆ
  • --sample-profile-check-record-coverage=<N> β€” throws a warning at you if less than N% of the records in the input profile actually got matched to the IR 😭
  • --sample-profile-check-sample-coverage=<N> β€” same energy, but for samples: warns if less than N% of the samples in the input profile matched the IR πŸ’€
  • --sample-profile-max-propagate-iterations=<uint> β€” the max number of iterations it'll go through while propagating sample block/edge weights through the CFG 🌸
  • --sampled-instr-burst-duration=<uint> β€” sets the profile instrumentation burst duration, which can range from 0 to one less than the value of 'sampled-instr-period'. That many samples get recorded for each 'sampled-instr-period' count update. Set it to 1 for simple sampling β€” and in that case it's recommended you set 'sampled-instr-period' to a prime number πŸ”₯
  • --sampled-instr-period=<uint> β€” sets the profile instrumentation sample period. For every 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 65535 is optimized for generating efficient code that leverages unsigned integer wrapping in overflow πŸ‘‘
  • --sampled-instrumentation β€” do PGO instrumentation sampling, periodt πŸŽ€
  • --sanitizer-early-opt-ep β€” inserts sanitizers on OptimizerEarlyEP ✨
  • --save-temp-labels β€” don't discard temporary labels 🫢
  • --skip-ret-exit-block β€” suppresses 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 gets disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region 🧚
  • --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 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, bestie, and here's the whole menu:
    • =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
heads up on those last two: "force" means it might be unsafe, no cap, proceed with caution πŸ’€
  • --thinlto-assume-merged β€” assumes the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes ✨
  • --threads=<int> β€” no description in the source, it's giving mysterious πŸ™ˆ
  • --type-based-intrinsic-cost β€” calculates intrinsics cost based only on argument types πŸ’…
  • --ubsan-guard-checks β€” guards UBSAN checks with llvm.allow.ubsan.check(). slay 🌸
  • --ubsan-unique-traps β€” deoptimize traps for UBSAN so there's 1 trap per check πŸŽ€
  • --use-undef β€” use undef when generating programs πŸ¦‹
  • --verify-region-info β€” verifies 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-exnref β€” WebAssembly exception handling (exnref) ⭐
  • --wasm-enable-sjlj β€” WebAssembly setjmp/longjmp handling 🧚
  • --write-experimental-debuginfo β€” writes debug info in the new non-intrinsic format. It has no effect if --preserve-input-debuginfo-format=true πŸ’€
  • --x86-align-branch=<string> β€” specifies which 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> β€” controls 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 β€” aligns selected instructions to mitigate the negative performance impact of Intel's micro code update for errata skx102.
it may break assumptions about labels corresponding to particular instructions, and it should be used with caution πŸ’€
  • --x86-pad-max-prefix-size=<uint> β€” maximum number of prefixes to use for padding πŸ’…
  • --x86-relax-relocations β€” emits GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF ✨
  • --x86-sse2avx β€” specifies 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 ⭐

🌈 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-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 β€” 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 β€” bestie this one literally generates thread parallel code ✨ (isl codegen only, so don't come for me if your backend isn't isl πŸ’…)
  • --polly-parallel-force β€” same energy as above but it FORCES the generation of thread parallel code, straight up ignoring any cost model 😀 no vibe check, no permission, just vibes 🫢
  • --polly-pattern-matching-based-opts β€” performs optimizations based on pattern matching πŸ‘‘ it's giving "I recognize this shape and I'm gonna slay it"
  • --polly-postopts β€” applies post-rescheduling optimizations such as tiling 🌸 heads up though: this one requires -polly-reschedule, so don't skip that step, it's not optional fr fr πŸ™ˆ
  • --polly-pragma-based-opts β€” applies user-directed transformation from metadata πŸŽ€ you said what you wanted, it does it
  • --polly-pragma-ignore-depcheck β€” skips the dependency check for pragma-based transformations πŸ’€ lowkey living dangerously but okay, main character behavior
  • --polly-process-unprofitable β€” processes scops that are unlikely to benefit from Polly optimizations 🀑 optimistic queen, we love the commitment
  • --polly-register-tiling β€” enables register tiling 🧚 tiny tiles, big dreams
  • --polly-report β€” prints information about the activities of Polly πŸ“‹ it's giving "so what have you been up to lately" and honestly we're nosy, we want the tea β˜•
  • --polly-reschedule β€” optimizes SCoPs using ISL πŸ”₯
  • --polly-show β€” highlights the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions) 🌈 visual learner moment, iconic
  • --polly-show-only β€” highlights the code regions that will be optimized in a (CFG only BBs) πŸ‘€ same vibe, CFG-only edition
  • --polly-stmt-granularity=<value> β€” algorithm to use for splitting basic blocks into multiple statements βœ‚οΈ pick your fighter:
    • =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 πŸ¦‹ tensor contractions?? she contains multitudes
  • --polly-tiling β€” enables loop tiling ⭐
  • --polly-vectorizer=<value> β€” select the vectorization strategy πŸ’– choose wisely:
    • =none β€” No Vectorization
    • =stripmine β€” Strip-mine outer loops for the loop-vectorizer to trigger

and that's a wrap on the Polly flags, bestie πŸ’œ you now know all of them, no cap. go optimize something and make it iconic πŸ‘‘

okay so that's literally the whole page!! this was modularize version 19, dated June 2025, and yes the manual page title is MODULARIZE(1) πŸŽ€ thank you for reading the whole thing, you ate that fr fr πŸ«ΆπŸ’–βœ¨

πŸ“¦ where this page comes from