MODULARIZE(1)

πŸ“¦ version 11.1.0, in ubuntu jammy

MODULARIZE(1) πŸ’…

okay bestie, so this is the manual page for modularize, and it lives in the User Commands section of the manual πŸŽ€ it's long, it's iconic, and we're gonna get through it together. no cap 🫢


✨ NAME ✨

modularize β€” the manual page for modularize 11 🌸


πŸ¦‹ DESCRIPTION πŸ¦‹

OVERVIEW: modularize.

USAGE:

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

OPTIONS:

okay so this is the big part. buckle up, we're listing everything πŸ’–


πŸŽ€ Color Options πŸŽ€

  • --color β€” use colors in output πŸ’… (default=autodetect)

πŸ¦‹ General options πŸ¦‹

  • -I=<path> β€” include path for the coverage check πŸ—‚οΈ
  • --aarch64-neon-syntax=<value> β€” pick the style of NEON code that gets emitted from the AArch64 backend:
    • =generic β€” emit generic NEON assembly
    • =apple β€” emit Apple-style NEON assembly
  • --addrsig β€” emit an address-significance table ✨
  • --amdgpu-bypass-slow-div β€” skip 64-bit divide for dynamic 32-bit values
  • --amdgpu-disable-loop-alignment β€” do not align and prefetch loops
  • --amdgpu-disable-power-sched β€” disable scheduling to minimize mAI power bursts
  • --amdgpu-dpp-combine β€” enable DPP combiner
  • --amdgpu-dump-hsa-metadata β€” dump AMDGPU HSA Metadata
  • --amdgpu-enable-global-sgpr-addr β€” enable use of SGPR regs for GLOBAL LOAD/STORE instructions
  • --amdgpu-enable-merge-m0 β€” merge and hoist M0 initializations
  • --amdgpu-promote-alloca-to-vector-limit=<uint> β€” maximum byte size to consider promote alloca to vector
  • --amdgpu-reserve-vgpr-for-sgpr-spill β€” allocates one VGPR for future SGPR Spill
  • --amdgpu-sdwa-peephole β€” enable SDWA peepholer
  • --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 original gives us nothing here, no description, zero notes, it's giving 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 the 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 the first counter in a function (usually the entry counter)
  • --basicblock-sections=<all | <function list (file)> | labels | none> β€” emit basic blocks into separate sections
  • --block-check-header-list-only β€” only warn if #include directives are inside extern or namespace blocks when the included header is in the header list.
  • --bounds-checking-single-trap β€” use one trap block per function
  • --cfg-hide-deoptimize-paths β€” (no description in the original, bestie, it's just vibes πŸ™ˆ)
  • --cfg-hide-unreachable-paths β€” (again, no description given 😭)
  • --code-model=<value> β€” choose the code model:
    • =tiny β€” tiny code model
    • =small β€” small code model
    • =kernel β€” kernel code model
    • =medium β€” medium code model
    • =large β€” large code model
  • --cost-kind=<value> β€” target cost kind:
    • =throughput β€” reciprocal throughput
    • =latency β€” instruction latency
    • =code-size β€” code size
  • --coverage-check-only β€” only do the coverage check.
  • --cvp-dont-add-nowrap-flags β€” (yep, no description here either 🫠)
  • --data-sections β€” emit data into separate sections
  • --debug-entry-values β€” enable debug info for the debug entry values.
  • --debugger-tune=<value> β€” tune debug info for a particular debugger:
    • =gdb β€” gdb
    • =lldb β€” lldb
    • =sce β€” SCE targets (e.g. PS4)
  • --debugify-level=<value> β€” the kind of debug info to add:
    • =locations β€” locations only
    • =location+variables β€” locations and Variables
  • --debugify-quiet β€” suppress verbose debugify output 🀫
  • --denormal-fp-math=<value> β€” select which denormal numbers the code is permitted to require:
    • =ieee β€” IEEE 754 denormal numbers
    • =preserve-sign β€” the sign of a flushed-to-zero number is preserved in the sign of 0
    • =positive-zero β€” denormals are flushed to positive zero
  • --denormal-fp-math-f32=<value> β€” select which denormal numbers the code is permitted to require, but for float:
    • =ieee β€” IEEE 754 denormal numbers
    • =preserve-sign β€” the sign of a flushed-to-zero number is preserved in the sign of 0
    • =positive-zero β€” denormals are flushed to positive zero
  • --disable-promote-alloca-to-lds β€” disable promote alloca to LDS
  • --disable-promote-alloca-to-vector β€” disable promote alloca to vector
  • --disable-tail-calls β€” never emit tail calls
  • --display-file-lists β€” display lists of good files (no compile errors), problem files, and a combined list with problem files preceded by a '#'.
  • --do-counter-promotion β€” do counter register promotion
  • --dwarf-version=<int> β€” Dwarf version
  • --dwarf64 β€” generate debugging info in the 64-bit DWARF format
  • --emit-call-site-info β€” emit call site debug information, if debug information is enabled.
  • --emscripten-cxx-exceptions-allowed=<string> β€” the list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options)
  • --emulated-tls β€” use emulated TLS model
  • --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, it's a mystery, we respect it πŸ’œ)
  • --enable-gvn-sink β€” enable the GVN sinking pass (default = off)
  • --enable-load-in-loop-pre β€” (no description given πŸ™ˆ)
  • --enable-load-pre β€” (no description given πŸ™ˆ)
  • --enable-loop-simplifycfg-term-folding β€” (no description given πŸ™ˆ)
  • --enable-name-compression β€” enable name/filename string compression
  • --enable-no-infs-fp-math β€” enable FP math optimizations that assume no +-Infs
  • --enable-no-nans-fp-math β€” enable FP math optimizations that assume no NaNs
  • --enable-no-signed-zeros-fp-math β€” enable FP math optimizations that assume the sign of 0 is insignificant
  • --enable-no-trapping-fp-math β€” enable setting the FP exceptions build attribute not to use exceptions
  • --enable-unsafe-fp-math β€” enable optimizations that may decrease FP precision
  • --exception-model=<value> β€” exception model:
    • =default β€” default exception handling model
    • =dwarf β€” DWARF-like CFI based exception handling
    • =sjlj β€” SjLj exception handling
    • =arm β€” ARM EHABI exceptions
    • =wineh β€” Windows exception model
    • =wasm β€” WebAssembly exception handling
  • --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.
  • --fatal-warnings β€” treat warnings as errors 😀
  • --filetype=<value> β€” choose a file type (not all types are supported by all targets):
    • =asm β€” emit an assembly ('.s') file
    • =obj β€” emit a native object ('.o') file
    • =null β€” emit nothing, for performance testing
  • --filter=<string> β€” only process files that match this filter. this flag only applies to all-TUs.
  • --float-abi=<value> β€” choose float ABI type:
    • =default β€” target default float ABI type
    • =soft β€” soft float ABI (implied by -soft-float)
    • =hard β€” hard float ABI (uses FP registers)

bestie we are NOT done, the options keep going 😭 part 2 incoming πŸ’–

✨ OPTIONS ✨

okay so like, this is the part where the magic happens πŸ’« every single flag you could ever want (and some you didn't know you needed) is right here. let's get into it, bestie 🫢

  • --force-dwarf-frame-section β€” Always emit a debug frame section. like, no matter what, it's gonna be there πŸ’β€β™€οΈ
  • --fp-contract=<value> β€” Enable aggressive formation of fused FP ops. here's the vibe:
    • =fast β€” Fuse FP ops whenever profitable. if it makes sense, do it πŸ’…
    • =on β€” Only fuse 'blessed' FP ops. just the chosen ones ✨
    • =off β€” Only fuse FP ops when the result won't be affected. safety first, bestie πŸ›‘οΈ
  • --frame-pointer=<value> β€” Specify frame pointer elimination optimization. choices, choices:
    • =all β€” Disable frame pointer elimination. keep that pointer around πŸ‘€
    • =non-leaf β€” Disable frame pointer elimination for non-leaf frame. only for the non-leaf ones 🌿
    • =none β€” Enable frame pointer elimination. bye bye pointer πŸ‘‹
  • --function-sections β€” Emit functions into separate sections. each function gets its own lil section πŸŽ€
  • --gpsize=<uint> β€” Global Pointer Addressing Size. The default size is 8. so like, if you don't say anything, it's 8, periodt πŸ’―
  • --hash-based-counter-split β€” Rename counter variable of a comdat function based on cfg hash. it's giving hash-based renaming πŸ”’
  • --hot-cold-split β€” Enable hot-cold splitting pass. hot stuff and cold stuff get separated πŸ”₯❄️
  • --import-all-index β€” Import all external functions in index. bring 'em all in πŸ«‚
  • --incremental-linker-compatible β€” When used with filetype=obj, emit an object file which can be used with an incremental linker. so like, only when you're doing filetype=obj 🧩
  • --instcombine-code-sinking β€” Enable code sinking. sinking code, not the vibe πŸ’€
  • --instcombine-guard-widening-window=<uint> β€” How wide an instruction window to bypass looking for another guard. how wide? you tell me πŸ“
  • --instcombine-max-iterations=<uint> β€” Limit the maximum number of instruction combining iterations. don't overdo it, bestie πŸ›‘
  • --instcombine-max-num-phis=<uint> β€” Maximum number phis to handle in intptr/ptrint folding. max phis, got it πŸ”’
  • --instcombine-maxarray-size=<uint> β€” Maximum array size considered when doing a combine. if it's too big, we don't combine it 🚫
  • --instcombine-negator-enabled β€” Should we attempt to sink negations? like, should we? πŸ€”
  • --instcombine-negator-max-depth=<uint> β€” What is the maximal lookup depth when trying to check for viability of negation sinking. how deep do we go? πŸ•΅οΈβ€β™€οΈ
  • --instrprof-atomic-counter-update-all β€” Make all profile counter updates atomic (for testing only). testing only, don't @ me πŸ§ͺ
  • --internalize-public-api-file=<filename> β€” A file containing list of symbol names to preserve. keep these symbols safe πŸ›‘οΈ
  • --internalize-public-api-list=<list> β€” A list of symbol names to preserve. same but as a list πŸ“
  • --iterative-counter-promotion β€” Allow counter promotion across the whole loop nest. promote those counters everywhere πŸš€
  • --lto-embed-bitcode β€” Embed LLVM bitcode in object files produced by LTO. bitcode goes inside πŸ₯š
  • --lto-pass-remarks-filter=<regex> β€” Only record optimization remarks from passes whose names match the given regular expression. regex filter, fancy πŸ’…
  • --lto-pass-remarks-format=<format> β€” The format used for serializing remarks (default: YAML). default is YAML, fyi πŸ“„
  • --lto-pass-remarks-output=<filename> β€” Output filename for pass remarks. where do the remarks go? here πŸ“
  • --march=<string> β€” Architecture to generate code for (see --version). check --version for the tea πŸ—οΈ
  • --matrix-default-layout=<value> β€” Sets the default matrix layout. how do you like your matrices?
    • =column-major β€” Use column-major layout. columns first πŸ—‚οΈ
    • =row-major β€” Use row-major layout. rows first πŸ“Š
  • --mattr=<a1,+a2,-a3,...> β€” Target specific attributes (-mattr=help for details). need help? -mattr=help is your friend πŸ†˜
  • --max-counter-promotions=<int> β€” Max number of allowed counter promotions. don't promote too many 🚦
  • --max-counter-promotions-per-loop=<uint> β€” Max number counter promotions per loop to avoid increasing register pressure too much. keep that register pressure in check πŸ§˜β€β™€οΈ
  • --mc-relax-all β€” When used with filetype=obj, relax all fixups in the emitted object file. relax, take it easy πŸ›‹οΈ
  • --mcpu=<cpu-name> β€” Target a specific cpu type (-mcpu=help for details). -mcpu=help has the deets πŸ–₯️
  • --meabi=<value> β€” Set EABI type (default depends on triple). depends on the triple, so like, it varies πŸ€·β€β™€οΈ
    • =default β€” Triple default EABI version. the default default πŸ˜…
    • =4 β€” EABI version 4. version 4, got it 4️⃣
    • =5 β€” EABI version 5. version 5, slay 5️⃣
    • =gnu β€” EABI GNU. GNU style πŸƒ
  • --memop-size-large=<uint> β€” Set large value thresthold in memory intrinsic size profiling. Value of 0 disables the large value profiling. (yes, it says "thresthold" β€” we keep it exactly as is, bestie πŸ’–)
  • --memop-size-range=<string> β€” Set the range of size in memory intrinsic calls to be profiled precisely, in a format of <start_val>:<end_val>. format is start:end, periodt 🎯
  • --merror-missing-parenthesis β€” Error for missing parenthesis around predicate registers. missing parenthesis? error. simple πŸ’₯
  • --merror-noncontigious-register β€” Error for register names that aren't contigious. (typo in the original β€” "contigious" stays πŸ’€) if it's not contigious, error 🚨
  • --mhvx β€” Enable Hexagon Vector eXtensions. HVX on, bestie ✨
  • --mhvx=<value> β€” Enable Hexagon Vector eXtensions. which version?
    • =v60 β€” Build for HVX v60. v60 vibes πŸŒ€
    • =v62 β€” Build for HVX v62. v62 vibes πŸŒ€
    • =v65 β€” Build for HVX v65. v65 vibes πŸŒ€
    • =v66 β€” Build for HVX v66. v66 vibes πŸŒ€
    • =v67 β€” Build for HVX v67. v67 vibes πŸŒ€
  • --mips-compact-branches=<value> β€” MIPS Specific: Compact branch policy. MIPS only, just so you know 🧠
    • =never β€” Do not use compact branches if possible. never ever 🚫
    • =optimal β€” Use compact branches where appropriate (default). the default, optimal πŸ’―
    • =always β€” Always use compact branches if possible. always, no exceptions πŸ’―
  • --mips16-constant-islands β€” Enable mips16 constant islands. islands of constants 🏝️
  • --mips16-hard-float β€” Enable mips16 hard float. hard float, not soft 🧊
  • --mir-strip-debugify-only β€” Should mir-strip-debug only strip debug info from debugified modules by default. only from debugified ones, by default πŸ€”
  • --mno-compound β€” Disable looking for compound instructions for Hexagon. no compound for Hexagon 🚫
  • --mno-fixup β€” Disable fixing up resolved relocations for Hexagon. no fixup for Hexagon 🚫
  • --mno-ldc1-sdc1 β€” Expand double precision loads and stores to their single precision counterparts. double becomes single, interesting πŸ”„
  • --mno-pairing β€” Disable looking for duplex instructions for Hexagon. no pairing 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. so like, if no path and prefix is there, use prefix πŸ“‚
  • --mwarn-missing-parenthesis β€” Warn for missing parenthesis around predicate registers. warn, not error ⚠️
  • --mwarn-noncontigious-register β€” Warn for register names that arent contigious. (another typo β€” "arent" and "contigious" stay exactly πŸ’…) warn for non-contigious registers ⚠️
  • --mwarn-sign-mismatch β€” Warn for mismatching a signed and unsigned value. signed vs unsigned mismatch? warn ⚠️
  • --no-coverage-check β€” Don't do the coverage check. skip the coverage check, live a little 🎒
  • --no-deprecated-warn β€” Suppress all deprecated warnings. no deprecated warnings, periodt 🚫
  • --no-discriminators β€” Disable generation of discriminator information. no discriminators here 🚫
  • --no-warn β€” Suppress all warnings. all warnings? gone. silence 🀫
  • --no-xray-index β€” Don't emit xray_fn_idx section. no xray index section 🚫
  • --nozero-initialized-in-bss β€” Don't place zero-initialized symbols into bss section. zero-init symbols not in bss 🚫
  • --nvptx-sched4reg β€” NVPTX Specific: schedule for register pressue. (yep, "pressue" is another typo, we keep it πŸ’–) NVPTX only, schedule for register pressue 🎯
  • --poison-checking-function-local β€” Check that returns are non-poison (for testing). testing only, checking for poison ☠️
  • --prefix=<string> β€” Prepend header file paths with this prefix. If not specified, the files are considered to be relative to the header list file. so like, if you don't give a prefix, they're relative to the header list file πŸ“
  • --problem-files-list=<string> β€” List of files with compilation or modularization problems for assistant mode. This will be excluded. assistant mode, and these get excluded 🚫
  • --r600-ir-structurize β€” Use StructurizeCFG IR pass. structurize that CFG πŸ—οΈ
  • --rdf-dump β€” (no description, just vibes) πŸ€·β€β™€οΈ
  • --rdf-limit=<uint> β€” (no description, just vibes) πŸ€·β€β™€οΈ
  • --relax-elf-relocations β€” Emit GOTPCRELX/REX_GOTPCRELX instead of GOTPCREL on x86-64 ELF. x86-64 ELF specific, fancy relocations πŸ’…
  • --relocation-model=<value> β€” Choose relocation model. pick your fighter:
    • =static β€” Non-relocatable code. static, no relocation 🧱
    • =pic β€” Fully relocatable, position independent code. PIC, fully relocatable πŸ•ŠοΈ
    • =dynamic-no-pic β€” Relocatable external references, non-relocatable code. dynamic but no pic πŸ€”
    • =ropi β€” Code and read-only data relocatable, accessed PC-relative. ropi, PC-relative πŸ–₯️
    • =rwpi β€” Read-write data relocatable, accessed relative to static base. rwpi, static base πŸ“
    • =ropi-rwpi β€” Combination of ropi and rwpi. both, why not? 🀝
  • --root-module=<string> β€” Specify the name of the root module. name that root module 🌳
  • --runtime-counter-relocation β€” Enable relocating counters at runtime. relocate counters at runtime ⏱️
  • --safepoint-ir-verifier-print-only β€” (no description, just vibes) πŸ€·β€β™€οΈ
  • --sample-profile-check-record-coverage=<N> β€” Emit a warning if less than N% of records in the input profile are matched to the IR. less than N%? warning ⚠️
  • --sample-profile-check-sample-coverage=<N> β€” Emit a warning if less than N% of samples in the input profile are matched to the IR. same but for samples ⚠️
  • --sample-profile-max-propagate-iterations=<uint> β€” the max number of iterations to go through when you're propagating sample block/edge weights through the CFG. like, how many laps around the block before we stop. πŸƒβ€β™€οΈ
  • --speculative-counter-promotion-max-exiting=<uint> β€” the max number of exiting blocks of a loop that's allowed before we'll do speculative counter promotion. over that count? nope.
  • --speculative-counter-promotion-to-loop β€” when this 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. iykyk. πŸ”
  • --stack-alignment=<uint> β€” override the default stack alignment, bestie. you're the boss now.
  • --stack-size-section β€” emit a section that holds stack size metadata. it's giving receipts. 🧾
  • --stack-symbol-ordering β€” order local stack symbols. that's it, that's the whole thing.
  • --stackrealign β€” force-align the stack to the minimum alignment. no negotiating. πŸ’ͺ
  • --summary-file=<string> β€” the summary file to use for function importing.
  • --tail-predication=<value> β€” MVE tail-predication options. here's the menu, pick your vibe:
    • =disabled β€” don't tail-predicate loops. 🚫
    • =enabled-no-reductions β€” enable tail-predication, but not for reduction loops.
    • =enabled β€” enable tail-predication, reduction loops included. βœ…
    • =force-enabled-no-reductions β€” enable tail-predication, but not for reduction loops, and force this β€” which might be unsafe. ⚠️
    • =force-enabled β€” enable tail-predication, reduction loops included, and force this β€” which might be unsafe. ⚠️
  • --tailcallopt β€” turn fastcc calls into tail calls by (potentially) changing the ABI. yes, the ABI. that's the tradeoff, bestie. 😭
  • --thread-model=<value> β€” choose your threading model:
    • =posix β€” POSIX thread model.
    • =single β€” Single thread model.
  • --threads=<int> β€” okay so this one literally has no description on the page. it's just sitting there. mysterious main character energy. πŸ‘‘
  • --tls-size=<uint> β€” bit size of immediate TLS offsets.
  • --unique-bb-section-names β€” give unique names to every basic block section. no dupes allowed. ✨
  • --unique-section-names β€” give unique names to every section. same energy, bigger scope.
  • --use-ctors β€” use .ctors instead of .init_array. switching it up.
  • --verify-region-info β€” verify region info. heads up: this is 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 the value profiler.
  • --x86-align-branch=<string> β€” specify types of branches to align (it's a plus-separated list of types). the roster:
    • jcc β€” indicates conditional jumps
    • fused β€” indicates fused conditional jumps
    • jmp β€” indicates direct unconditional jumps
    • call β€” indicates direct and indirect calls
    • ret β€” indicates rets
    • indirect β€” indicates indirect unconditional jumps
  • --x86-align-branch-boundary=<uint> β€” control how the assembler should align branches with NOP. if the boundary's size isn't 0, it has to be a power of 2 and no less than 32. branches get aligned so they don't end up 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.
⚠️ real talk: this may break assumptions about labels corresponding to particular instructions, and should be used with caution. do not just send it. πŸ’€
  • --x86-pad-max-prefix-size=<uint> β€” maximum number of prefixes to use for padding.

✨ Generic Options ✨

the classics, the icons, the ones everyone knows:

  • --help β€” display available options (--help-hidden for more). πŸ†˜
  • --help-list β€” display the 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 (only at -O3, don't forget). πŸ¦‹
  • --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. β€” and yes, the paren really is left hanging open like that, we don't fix it, we respect it πŸ’…)
  • --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 the module after Polly transformations into a file suffixed with "-after".
  • --polly-dump-after-file=<string> β€” dump the module after Polly transformations to the given file.
  • --polly-dump-before β€” dump the module before Polly transformations into a file suffixed with "-before".
  • --polly-dump-before-file=<string> β€” dump the 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-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 β€” again, the original paren just stops there, we keep it exactly as it is πŸŽ€)
  • --polly-only-scop-detection β€” only run scop detection, but no other optimizations.
  • --polly-optimized-scops β€” Polly - dump the polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations applied on the schedule tree.
  • --polly-parallel β€” generate thread parallel code (isl codegen only).
  • --polly-parallel-force β€” force generation of thread parallel code, ignoring any cost model. πŸ’₯
  • --polly-pattern-matching-based-opts β€” perform optimizations based on pattern matching.
  • --polly-process-unprofitable β€” process scops that are unlikely to benefit from Polly optimizations.
  • --polly-register-tiling β€” enable register tiling.
  • --polly-report β€” print information about the activities of Polly.
  • --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 β€” scalar independence heuristic.
    • =store β€” store-level granularity.
  • --polly-target=<value> β€” the hardware to target:
    • =cpu β€” generate CPU code.
  • --polly-tiling β€” enable loop tiling.
  • --polly-vectorizer=<value> β€” select the vectorization strategy:
    • =none β€” no Vectorization.
    • =polly β€” Polly internal vectorizer.
    • =stripmine β€” strip-mine outer loops for the loop-vectorizer to trigger.

and that's a wrap on the whole page, bestie!! 🫢 you just read the entire thing, and honestly? iconic. this is modularize version 11, dated January 2022, from the MODULARIZE(1) manual page β€” go forth and modularize responsibly, mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from