MODULARIZE(1)
๐ธ NAME ๐ธ
modularize โ manual page for modularize 14. ๐
Manual name: MODULARIZE(1) ยท Section: User Commands
โจ DESCRIPTION โจ
OVERVIEW: modularize. ๐ซถ
USAGE: okay so bestie, the whole shape is literally this:
modularize [options] <list of one or more header list files> <arguments to be passed to front end>...
no cap, that's the vibe. ๐ซถ
OPTIONS: the rest of this page is giving options for days, and it is long, so hydrate. ๐ง
๐ OPTIONS ๐
๐จ Color Options ๐จ
--colorโ Use colors in output (default=autodetect). ๐
๐ General options ๐
-I=<path>โ Include path for coverage check. ๐--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. ๐--addrsigโ Emit an address-significance table. ๐--align-loops=<uint>โ Default alignment for loops. ๐--allow-ginsert-as-artifactโ AllowG_INSERTto be considered an artifact. Hack around AMDGPU test infinite loops. ๐--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-flat-scratchโ Use flat scratch 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-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. ๐ข--arm-add-build-attributesโ (no description in the source โ just a mystery box ๐)--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 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). ๐ฅ--basic-block-sections=<all | <function list (file)> | labels | none>โ Emit basic blocks into separate sections. ๐งฑ--block-check-header-list-onlyโ Only warn if#includedirectives are inside extern or namespace blocks if the included header is in the header list. ๐--bounds-checking-single-trapโ Use one trap block per function. ๐ชค--cfg-hide-cold-paths=<number>โ Hide blocks with relative frequency below the given value. โ๏ธ--cfg-hide-deoptimize-pathsโ (no description in the source โ mysterious ๐)--cfg-hide-unreachable-pathsโ (no description in the source โ mysterious ๐)--code-model=<value>โ Choose 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=size-latencyโ Code size and latency
--coverage-check-onlyโ Only do the coverage check. โ--data-sectionsโ Emit data into separate sections. ๐ฆ--debug-entry-valuesโ Enable debug info for the debug entry values. ๐--debug-info-correlateโ Use debug info to correlate profiles. ๐--debugger-tune=<value>โ Tune debug info for a particular debugger:=gdbโ gdb=lldbโ lldb=dbxโ dbx=sceโ SCE targets (e.g. PS4)
--debugify-level=<value>โ 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 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-i2p-p2i-optโ Disablesinttoptr/ptrtointroundtrip optimization. ๐ซ--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. ๐--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-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 emscriptenEMSCRIPTEN_CATCHING_ALLOWEDoptions). ๐--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 in the source โ mysterious ๐)--enable-gvn-sinkโ Enable the GVN sinking pass (default = off). โฌ๏ธ--enable-load-in-loop-preโ (no description in the source โ mysterious ๐)--enable-load-preโ (no description in the source โ mysterious ๐)--enable-loop-simplifycfg-term-foldingโ (no description in the source โ mysterious ๐)--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-split-backedge-in-load-preโ (no description in the source โ mysterious ๐)--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>โ how many threads get to chew through all the files at once ๐ set it to0and it'll just use your hardware concurrency. heads up tho: this flag only applies to all-TUs.--executor=<string>โ the name of the executor you wanna use. that's it, that's the whole vibe.--experimental-debug-variable-locationsโ use the experimental new value-tracking variable locations. experimental bestie, you know what that means ๐--fatal-warningsโ treat warnings as errors. no more "it's just a warning" gaslighting, everything is fatal now ๐ญ--filetype=<value>โ pick a file type, slay. (not every target supports every type, so don't come for me):=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. and yes, this flag only applies to all-TUs ๐--float-abi=<value>โ choose your float ABI type:=defaultโ Target default float ABI type=softโ Soft float ABI (implied by-soft-float)=hardโ Hard float ABI (uses FP registers)
--force-dwarf-frame-sectionโ always emit a debug frame section. always. no takebacks ๐--fp-contract=<value>โ enable aggressive formation of fused FP ops (fancy!!):=fastโ Fuse FP ops whenever profitable=onโ Only fuse 'blessed' FP ops.=offโ Only fuse FP ops when the result won't be affected.
--frame-pointer=<value>โ specify frame pointer elimination optimization:=allโ Disable frame pointer elimination=non-leafโ Disable frame pointer elimination for non-leaf frame=noneโ Enable frame pointer elimination
--fs-profile-debug-bw-threshold=<uint>โ only show the debug message if the source branch weight is greater than this value. otherwise? silence. ๐คซ--fs-profile-debug-prob-diff-threshold=<uint>โ only show the debug message if the branch probility is greater than this value (in percentage).--function-sectionsโ emit functions into separate sections โจ--generate-merged-base-profilesโ when you're generating nested context-sensitive profiles, always generate an extra base profile for the function with all its context profiles merged into it. she's thorough ๐--gpsize=<uint>โ Global Pointer Addressing Size. the default size is8.--hash-based-counter-splitโ rename counter variable of a comdat function based on cfg hash ๐ฅ--hot-cold-splitโ enable hot-cold splitting pass--ignore-xcoff-visibilityโ don't emit the visibility attribute for asm in AIX OS, or give all symbols 'unspecified' visibility in XCOFF object file--import-all-indexโ import all external functions in index. all of them. no crumbs left ๐--incremental-linker-compatibleโ when used withfiletype=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-iterations=<uint>โ limit the maximum number of instruction combining iterations--instcombine-max-num-phis=<uint>โ maximum number phis to handle in intptr/ptrint folding--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, bestie, do not make this your whole personality)--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. the whole nest. iconic.--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--march=<string>โ architecture to generate code for (see--version) ๐ฆ--matrix-default-layout=<value>โ sets the default matrix layout:=column-majorโ Use column-major layout=row-majorโ Use row-major layout
--mattr=<a1,+a2,-a3,...>โ target specific attributes (-mattr=helpfor details)--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 withfiletype=obj, relax all fixups in the emitted object file--mcabacโ tbd ๐ (genuinely, that's all it says. we know nothing. nobody knows.)--mcpu=<cpu-name>โ target a specific cpu type (-mcpu=helpfor details)--meabi=<value>โ set EABI type (default depends on triple):=defaultโ Triple default EABI version=4โ EABI version 4=5โ EABI version 5=gnuโ EABI GNU
--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 (yes, she's back, now with opinions):=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
--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โ shouldmir-strip-debugonly strip debug info from debugified modules by default--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. we're skipping the vibe check, periodt.--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. all of them. living in bliss ๐--no-xray-indexโ don't emitxray_fn_idxsection--nozero-initialized-in-bssโ don't place zero-initialized symbols into bss section--nvptx-sched4regโ NVPTX specific ๐ : schedule for register pressure. No cap, that's literally what it does.--opaque-pointersโ use opaque pointers, bestie โจ--poison-checking-function-localโ check that returns are non-poison (for testing ๐งช)--prefix=<string>โ prepend header file paths with this prefix. If you don't specify it, the files are considered to be relative to the header list file. iykyk.--print-pipeline-passesโ print a-passescompatible string describing the pipeline (best-effort only, so likeโฆ don't @ me if it's not perfect ๐).--problem-files-list=<string>โ list of files with compilation or modularization problems for assistant mode. This will be excluded. bye felicia ๐--r600-ir-structurizeโ useStructurizeCFGIR pass--rdf-dumpโ (that's it. that's the description. iconic minimalism ๐)--rdf-limit=<uint>โ (also just vibes. no description given.)--relax-elf-relocationsโ emitGOTPCRELX/REX_GOTPCRELXinstead ofGOTPCRELon x86-64 ELF ๐ฅ--relocation-model=<value>โ choose relocation model:=staticโ non-relocatable code=picโ fully relocatable, position independent code=dynamic-no-picโ relocatable external references, non-relocatable code=ropiโ code and read-only data relocatable, accessed PC-relative=rwpiโ read-write data relocatable, accessed relative to static base=ropi-rwpiโ combination ofropiandrwpi
--root-module=<string>โ specify the name of the root module ๐ฑ--runtime-counter-relocationโ enable relocating counters at runtime.--safepoint-ir-verifier-print-onlyโ (yes bestie, that is the whole thing ๐)--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.--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 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.--split-machine-functionsโ split out cold basic blocks from machine functions based on profile information ๐ฅถ--stack-size-sectionโ emit a section containing stack size metadata.--stack-symbol-orderingโ order local stack symbols.--stackrealignโ force align the stack to the minimum alignment.--strict-dwarfโ use strict dwarf.--summary-file=<string>โ the summary file to use for function importing.--swift-async-fp=<value>โ determine when the Swift async frame pointer should be set:=autoโ determine based on deployment target=alwaysโ always set the bit=neverโ never set the bit
--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
ok so the force-enabled ones literally say "might be unsafe" โ that's a real warning, bestie, not a vibe. proceed with caution ๐จ
--tailcalloptโ turnfastcccalls into tail calls by (potentially) changing ABI.--thinlto-assume-mergedโ assume the input has already undergone ThinLTO function importing and the other pre-optimization pipeline changes.--thread-model=<value>โ choose threading model:=posixโ POSIX thread model=singleโ single thread model
--threads=<int>โ (no description, just trust โจ)--tls-size=<uint>โ bit size of immediate TLS offsets.--unique-basic-block-section-namesโ give unique names to every basic block section.--unique-section-namesโ give unique names to every section.--use-ctorsโ use.ctorsinstead of.init_array.--vec-extabiโ enable the AIX Extended Altivec ABI.--verify-region-infoโ verify region info (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.--x86-align-branch=<string>โ specify types of branches to align (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 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 value0does not align branches.--x86-branches-within-32B-boundariesโ align selected instructions to mitigate negative performance impact of Intel's micro code update for errataskx102. May break assumptions about labels corresponding to particular instructions, and should be used with caution.
this one is giving "yes but at what cost" ๐ญ โ it literally says use with caution.
--x86-pad-max-prefix-size=<uint>โ maximum number of prefixes to use for padding.--xcoff-traceback-tableโ emit the XCOFF traceback table.
โจ 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 ๐ธ
โจ 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-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-1schedules 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-on-isl-error-abortโ abort if an isl error is encountered
okay bestie we're STILL in flag city and honestly? the Polly girlies ate with this list. keep scrolling, we're almost at the end ๐
--polly-only-func=<string>โ only run on functions that match a regex. You can comma-separate multiple regexes, and scop detection will run on all functions that match ANY of the regexes you gave it. no cap.--polly-only-region=<identifier>โ only run on certain regions. heads up: the identifier you pass has to appear in the name of that region's entry block. (yes the original sentence is missing its closing paren, she's just like that ๐)--polly-only-scop-detectionโ scop detection ONLY, no other optimizations. that's it, that's the whole vibe. ๐--polly-optimized-scopsโ Polly dumps the polyhedral description of Scops optimized with the isl scheduling optimizer, and the set of post-scheduling transformations gets applied on the schedule tree. very main character. โจ--polly-parallelโ generate thread parallel code (isl codegen only, so don't get any ideas)--polly-parallel-forceโ force generation of thread parallel code, ignoring any cost model. she does NOT care what the numbers say ๐--polly-pattern-matching-based-optsโ perform optimizations based on pattern matching--polly-postoptsโ apply post-rescheduling optimizations such as tiling. โ ๏ธ this one requires-polly-reschedule, so don't come crying to me when it's not enabled--polly-pragma-based-optsโ apply user-directed transformation from metadata--polly-pragma-ignore-depcheckโ skip the dependency check for pragma-based transformations--polly-process-unprofitableโ process scops that are unlikely to benefit from Polly optimizations. giving "I can fix her" energy fr fr ๐ญ--polly-register-tilingโ enable register tiling--polly-reportโ print information about the activities of Polly. she's telling you where she's been ๐--polly-rescheduleโ optimize SCoPs using ISL--polly-showโ highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions)--polly-show-onlyโ highlight the code regions that will be optimized in a (CFG only BBs)
--polly-stmt-granularity=<value>โ the algorithm to use for splitting basic blocks into multiple statements. pick your fighter:=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 the whole page bestie, we made it ๐ซถ this gorgeous mess is modularize version 14, dated May 2025 โ so go forth, flag responsibly, and stan a compiler that does polyhedral stuff for fun. mwah ๐๐ธ๐ฆ
๐ฆ where this page comes from
- ubuntu questing: clang-tools-14 1:14.0.6-20ubuntu3
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms