MODULARIZE(1)
๐ MODULARIZE(1) ๐
okay bestie, welcome to the User Commands manual page for modularize โ yeah, version 15. and it's giving iconic but also a LOT. like, there are SO many flags on this thing. but we're going through every single one together, no skips, no cap. ๐
๐ธ NAME ๐ธ
modularize โ manual page for modularize 15
โจ DESCRIPTION โจ
OVERVIEW: modularize.
USAGE:
modularize [options] <list of one or more header list files> <arguments to be passed to front end>...
so you hand it one or more header list files, plus whatever arguments you want forwarded along to the front end. that's the whole vibe. ๐ฆ
๐ OPTIONS ๐
here comes the parade, bestie. every flag, every value, nothing skipped, periodt. ๐
๐ Color Options
--colorโ throws colors into your output (default=autodetect). yes, it autodetects by default. it's giving sparkle. ๐
๐ง General options
-I <path>โ an include path for the coverage check.--aarch64-neon-syntax=<value>โ picks which flavor of NEON code the AArch64 backend spits out:=genericโ emit generic NEON assembly=appleโ emit Apple-style NEON assembly
--aarch64-use-aaโ turns on using AA during codegen.--abort-on-max-devirt-iterations-reachedโ bails out the moment the max iterations for the devirtualization CGSCC repeat pass get hit.--addrsigโ emits an address-significance table.--align-loops=<uint>โ the default alignment for loops.--allow-ginsert-as-artifactโ letsG_INSERTcount as an artifact. it's a hack to dodge AMDGPU test infinite loops.--amdgpu-bypass-slow-divโ skips the 64-bit divide for dynamic 32-bit values.--amdgpu-disable-loop-alignmentโ don't align or prefetch loops, thanks.--amdgpu-dpp-combineโ turns on the DPP combiner.--amdgpu-dump-hsa-metadataโ dumps the AMDGPU HSA Metadata.--amdgpu-enable-merge-m0โ merges and hoists M0 initializations.--amdgpu-enable-power-schedโ schedules stuff so mAI power bursts stay minimal.--amdgpu-igrouplpโ turns on building Instruction Groups and ordering them for scheduling.--amdgpu-promote-alloca-to-vector-limit=<uint>โ the max byte size to even consider promoting alloca to vector.--amdgpu-sdwa-peepholeโ turns on the SDWA peepholer.--amdgpu-use-aa-in-codegenโ turns on using AA during codegen.--amdgpu-verify-hsa-metadataโ verifies the AMDGPU HSA Metadata.--amdgpu-vgpr-index-modeโ uses GPR indexing mode instead ofmovrelfor vector indexing.--arm-add-build-attributesโ no description in the original, it just exists. ๐--arm-implicit-it=<value>โ lets conditional instructions live outside of an IT block:=alwaysโ accept in both ISAs, and 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โ emits the internal instruction representation into the assembly file.--atomic-counter-update-promotedโ does the counter update with atomic fetch add, but only for promoted counters.--atomic-first-counterโ uses atomic fetch add for the first counter in a function (which is usually the entry counter).--basic-block-sections=<all | <function list (file)> | labels | none>โ emits basic blocks into separate sections.--block-check-header-list-onlyโ only warns you if#includedirectives sit inside extern or namespace blocks and the included header is in the header list.--bounds-checking-single-trapโ uses one trap block per function.--cfg-hide-cold-paths=<number>โ hides blocks whose relative frequency is below the value you gave.--cfg-hide-deoptimize-pathsโ no description in the original.--cfg-hide-unreachable-pathsโ no description in the original.--code-model=<value>โ picks 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>โ the target cost kind:=throughputโ reciprocal throughput=latencyโ instruction latency=code-sizeโ code size=size-latencyโ code size and latency
--coverage-check-onlyโ only does the coverage check. nothing else.--data-sectionsโ emits data into separate sections.--debug-entry-valuesโ turns on debug info for the debug entry values.--debug-info-correlateโ uses debug info to correlate profiles.--debugger-tune=<value>โ tunes the debug info for a specific debugger:=gdbโ gdb=lldbโ lldb=dbxโ dbx=sceโ SCE targets (e.g. PS4)
--debugify-func-limit=<ulong>โ sets the max number of processed functions per pass.--debugify-level=<value>โ the kind of debug info to add:=locationsโ locations only=location+variablesโ locations and variables
--debugify-quietโ mutes the verbose debugify output.--denormal-fp-math=<value>โ selects which denormal numbers the code is allowed 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>โ same deal, but for float. selects which denormal numbers the code is allowed 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
--disable-i2p-p2i-optโ kills theinttoptr/ptrtointroundtrip optimization.--disable-promote-alloca-to-ldsโ disables promoting alloca to LDS.--disable-promote-alloca-to-vectorโ disables promoting alloca to vector.--disable-tail-callsโ never emits tail calls. ever.--display-file-listsโ shows you lists of good files (no compile errors), problem files, and a combined list where problem files come with a'#'in front.--do-counter-promotionโ does counter register promotion.--dot-cfg-mssa=<file name for generated dot file>โ the file name for the generated dot file.--dwarf-version=<int>โ the Dwarf version.--dwarf64โ generates debugging info in the 64-bit DWARF format.--emit-call-site-infoโ emits call site debug information, as long as debug info is enabled.--emit-dwarf-unwind=<value>โ controls whether DWARF EH frame entries get emitted:=alwaysโ always emit EH frame entries=no-compact-unwindโ only emit EH frame entries when compact unwind isn't available=defaultโ use the target platform default
--emscripten-cxx-exceptions-allowed=<string>โ the list of function names where Emscripten-style exception handling is turned on (peep the emscriptenEMSCRIPTEN_CATCHING_ALLOWEDoptions).--emulated-tlsโ uses the emulated TLS model.--enable-approx-func-fp-mathโ turns on FP math optimizations that assume approx func.--enable-cse-in-irtranslatorโ should turn on CSE in irtranslator.--enable-cse-in-legalizerโ should turn on CSE in Legalizer.--enable-emscripten-cxx-exceptionsโ WebAssembly Emscripten-style exception handling.--enable-emscripten-sjljโ WebAssembly Emscripten-style setjmp/longjmp handling.--enable-gvn-hoistโ turns on the GVN hoisting pass (default = off).--enable-gvn-memdepโ no description in the original.--enable-gvn-sinkโ turns on the GVN sinking pass (default = off).--enable-jmc-instrumentโ instruments functions with a call to__CheckForDebuggerJustMyCode.--enable-load-in-loop-preโ no description in the original.--enable-load-preโ no description in the original.--enable-loop-simplifycfg-term-foldingโ no description in the original.--enable-name-compressionโ turns on name/filename string compression.--enable-no-infs-fp-mathโ turns on FP math optimizations that assume no+-Infs.--enable-no-nans-fp-mathโ turns on FP math optimizations that assume no NaNs.
and that's only part 1, bestie โ the flags keep coming, so don't go anywhere. ๐
--enable-no-signed-zeros-fp-mathโ bestie, this turns on FP math optimizations that just assume the sign of 0 doesn't matter ๐ like okay sure--enable-no-trapping-fp-mathโ enables setting the FP exceptions build attribute to not use exceptions ๐ซถ--enable-split-backedge-in-load-preโ no description given, it's just vibing there, mysterious โจ--enable-unsafe-fp-mathโ enables optimizations that may decrease FP precision ๐ญ so like, fast but slightly unhinged, know what you're signing up for--exception-model=<value>โ the exception model, pick your fighter ๐ฅ=defaultโ the default exception handling model ๐=dwarfโ DWARF-like CFI based exception handling ๐ง=sjljโ SjLj exception handling=armโ ARM EHABI exceptions=winehโ the Windows exception model ๐ช=wasmโ WebAssembly exception handling ๐
--execute-concurrency=<uint>โ how many threads get used to process all the files in parallel ๐โโ๏ธ๐จ set it to0for hardware concurrency. Heads up though, this flag only applies to all-TUs (iykyk)--executor=<string>โ the name of the executor to use, that's it, that's the whole thing ๐--experimental-debug-variable-locationsโ use the experimental new value-tracking variable locations ๐งช lowkey mad scientist energy--fatal-warningsโ treat warnings as errors ๐ค no chill, no mercy--filetype=<value>โ choose a file type. not all types are supported by all targets, so don't come for me when yours isn't there ๐=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 ๐ฏ again, 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, periodt ๐--fp-contract=<value>โ enables aggressive formation of fused FP ops โจ=fastโ fuse FP ops whenever it's profitable ๐ฐ=onโ only fuse the 'blessed' FP ops ๐=offโ only fuse FP ops when the result won't be affected ๐ง
--frame-pointer=<value>โ specifies the 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 a debug message if the source branch weight is greater than this value ๐--fs-profile-debug-prob-diff-threshold=<uint>โ only show a debug message if the branch probility is greater than this value (in percentage) ๐ (yes it says "probility", we don't edit the ancestors' typo, we preserve the lore)--function-sectionsโ emit functions into separate sections โ๏ธ main character gets her own room--generate-merged-base-profilesโ when generating nested context-sensitive profiles, always generate an extra base profile for a function with all its context profiles merged into it ๐ซ--gpsize=<uint>โ Global Pointer Addressing Size. the default size is8๐--hash-based-counter-splitโ rename the counter variable of a comdat function based on cfg hash #๏ธโฃ--hot-cold-splitโ enable the 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 an XCOFF object file ๐--import-all-indexโ import all external functions in index ๐ฅ--incremental-linker-compatibleโ when used withfiletype=obj, emit an object file that 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 max number of instruction combining iterations ๐--instcombine-max-num-phis=<uint>โ max number phis to handle inintptr/ptrintfolding ๐--instcombine-max-sink-users=<uint>โ max number of undroppable users for instruction sinking โ--instcombine-maxarray-size=<uint>โ max array size considered when doing a combine ๐--instcombine-negator-enabledโ should we attempt to sink negations? ๐ค big question honestly--instcombine-negator-max-depth=<uint>โ what's 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 a 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 ๐--lower-global-dtors-via-cxa-atexitโ lowerllvm.global_dtors(global destructors) via__cxa_atexit๐--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๐ซฅ (the devs really said "we'll figure it out later" and honestly? iconic)--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 โ ๏ธ (again, keeping the ancestral spelling, it's part of the family history)--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 โญ
--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 ๐ค--misexpect-tolerance=<uint>โ prevents emiting diagnostics when profile counts are within N% of the threshold.. ๐ (two periods, we respect the punctuation)--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>โ turns module map output ON and tells it where to write it (path or filename, bestie, your call). If you don't give a path and you did pass--prefix, then the prefix gets used as the file path. Slay.--mwarn-missing-parenthesisโ warns when predicate registers are missing their parenthesis ๐ซถ--mwarn-noncontigious-registerโ warns about register names that arent contigious (yes, that's the spelling in the flag, do NOT come for me ๐ญ)--mwarn-sign-mismatchโ warns when a signed value and an unsigned value are mismatching ๐--no-coverage-checkโ literally just don't do the coverage check. periodt.--no-deprecated-warnโ suppress all deprecated warnings, every single one, silence โจ--no-discriminatorsโ disables generation of discriminator information.--no-type-checkโ suppresses type errors (Wasm) ๐--no-warnโ suppress all warnings. all of them. nothing gets through. iconic.--no-xray-indexโ don't emit thexray_fn_idxsection--nozero-initialized-in-bssโ don't place zero-initialized symbols into thebsssection--nvptx-sched4regโ NVPTX Specific: schedule for register pressue (again, that's the original wording, typo and all ๐)--opaque-pointersโ use opaque pointers--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. ngl this one matters--print-pipeline-passesโ prints a-passescompatible string describing the pipeline (best-effort only, so don't be shocked if it's not perfect ๐ซ )--problem-files-list=<string>โ list of files with compilation or modularization problems for assistant mode. This will be excluded.--r600-ir-structurizeโ use theStructurizeCFGIR pass--rdf-dumpโ no description given, it's just out here existing, mysterious main character energy ๐ฆ--rdf-limit=<uint>โ also no description. iconic silence. ๐--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โ 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.--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. (read it twice, it's fine, I believe in you ๐ซถ)--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.--sve-tail-folding=<string>โ control the use of vectorisation using tail-folding for SVE: ๐disabledโ no loop types will vectorize using tail-foldingdefaultโ uses the default tail-folding settings for the target CPUallโ all legal loop types will vectorize using tail-foldingsimpleโ use tail-folding for simple loops (not reductions or recurrences)reductionsโ use tail-folding for loops containing reductionsrecurrencesโ use tail-folding for loops containing first order recurrences
--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 ๐ญ
bestie. the two force-enabled variants are literally described as "might be unsafe" in the source. that's not me being dramatic, that's a direct quote. proceed with caution fr fr ๐
--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 provided, she's just there ๐--tls-size=<uint>โ bit size of immediate TLS offsets--type-based-intrinsic-costโ calculate intrinsics cost based only on argument types--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 โณ so like, maybe not on a deadline)--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 not0, it should be a power of 2 and no less than32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value0does not align branches. (so0= no alignment, got it ๐)--x86-branches-within-32B-boundariesโ align selected instructions to mitigate negative performance impact of Intel's micro code update for errataskx102.
heads up bestie: this one may break assumptions about labels corresponding to particular instructions, and should be used with caution. not a vibe to yolo ๐
--x86-pad-max-prefix-size=<uint>โ maximum number of prefixes to use for padding--xcoff-traceback-tableโ emit the XCOFF traceback table
โจ Generic Options โจ
these are the OGs, the universal besties, they work everywhere ๐ซถ
--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
and the Polly lore continues in the next part, don't go anywhere ๐ฆ
--pollyโ turns the polly optimizer ON, bestie โจ (and yes it only does its thing alongside-O1,-O2or-O3, so don't forget those)--polly-2nd-level-tilingโ enables a 2nd level loop of loop tiling ๐งฑ like tiling but make it double-stacked--polly-ast-print-accessesโ prints the memory access functions, so you can see exactly what's being touched ๐--polly-context=<isl parameter set>โ hands you extra constraints to slap onto 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>โ max number of isl operations to invest in lifetime analysis;0means no limit, go feral ๐--polly-detect-full-functionsโ allows the detection of full functions ๐ซถ--polly-dump-afterโ dumps the module after Polly transformations into a file suffixed with-after--polly-dump-after-file=<string>โ same energy, but 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. so like, if it matches even one, it's getting ghosted ๐ป--polly-isl-arg=<argument>โ an option passed to ISL--polly-on-isl-error-abortโ aborts if an isl error is encountered ๐จ like no recovering, we're out--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 โ so match any one and you're in the club ๐--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. detection only, no notes ๐--polly-optimized-scopsโ Polly โ dumps the 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. no thoughts, just threads ๐ค--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 ๐ (the safety net? we removed it)--polly-process-unprofitableโ processes scops that are unlikely to benefit from Polly optimizations. giving main character energy to the underdogs ๐ฅบ--polly-register-tilingโ enables register tiling ๐--polly-reportโ prints information about the activities of Polly ๐ very "what did you do today" of it--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=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โ enables loop tiling ๐งฑ--polly-vectorizer=<value>โ selects 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 thing, bestie!! ๐ this page is from modularize 15, dated July 2023, and it's literally the MODULARIZE(1) manual page โ so if you ever forget what any of these flags do, it's all right here waiting for you. slay, go optimize something gorgeous ๐ธ๐ฆ๐
๐ฆ where this page comes from
- ubuntu jammy: clang-tools-15 1:15.0.7-0ubuntu0.22.04.3 ยท APACHE-2-LLVM-EXCEPTIONS
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms