1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/sdvcn-mculib4d

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
ldc2.txt 180 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
sdv Отправлено 25.03.2024 16:30 f0acc0e
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345
这份文档是关于 LLVM D 编译器(LDC)的概述和使用说明。LDC 是一个基于 LLVM 后端的 D 语言编译器,支持生成高性能的 D 语言程序。以下是文档内容的翻译:
概述:LDC - LLVM D 编译器
使用说明:ldc2 [选项] 文件 --run 运行生成的程序,并传递剩余的参数给它
选项:
-D - 生成文档
--Dd=<目录> - 将文档文件写入<目录>
--Df=<文件名> - 将文档文件写入<文件名>
-H - 生成'头文件'
--HC - 生成 C++ 头文件
--HCd=<目录> - 将 C++ '头文件'写入<目录>
--HCf=<文件名> - 将 C++ '头文件'写入<文件名>
--Hd=<目录> - 将'头文件'写入<目录>
--Hf=<文件名> - 将'头文件'写入<文件名>
--Hkeep-all-bodies - 保留 .di 文件中的所有函数体
-I=<目录> - 也在<目录>中查找导入
-J=<目录> - 也在<目录>中查找字符串导入
-L=<linkerflag> - 将<linkerflag>传递给链接器
设置优化级别:
-O - 等同于 -O3
--O0 - 无优化(默认)
--O1 - 简单优化
--O2 - 良好的优化
--O3 - 积极的优化
--O4 - 等同于 -O3
--O5 - 等同于 -O3
--Os - 类似于 -O2,但具有额外的尺寸优化
--Oz - 类似于 -Os,但进一步减少代码大小
-X - 生成 JSON 文件
--Xcc=<cccflag> - 将<cccflag>传递给 GCC/Clang 进行链接
--Xf=<文件名> - 将 JSON 文件写入<文件名>
--aarch64-a57-fp-load-balancing-force-all - 总是修改目标寄存器,不管颜色如何
--aarch64-a57-fp-load-balancing-override=<uint> - 忽略平衡信息,总是返回(1: 偶数, 2: 奇数)。
--aarch64-bcc-offset-bits=<uint> - 限制 Bcc 指令的范围(调试)
--aarch64-cbz-offset-bits=<uint> - 限制 CB[N]Z 指令的范围(调试)
--aarch64-ccmp-limit=<uint> - 每个推测块的最大指令数。
--aarch64-early-ifcvt - 启用早期 if 转换通道
--aarch64-elf-ldtls-generation - 允许 AArch64 本地动态 TLS 代码生成
--aarch64-enable-atomic-cfg-tidy - 在扩展原子操作后运行 SimplifyCFG,利用 cmpxchg 基于流的信息,以优化代码生成。
--aarch64-enable-branch-relax - 放宽超出范围的条件分支。
--aarch64-enable-branch-targets - 启用 AArch64 分支目标通道。
--aarch64-enable-ccmp - 启用 CCMP 形成通道。
--aarch64-enable-collect-loh - 启用发出链接优化提示(LOH)的通道。
--aarch64-enable-compress-jump-tables - 使用尽可能小的条目进行跳转表。
--aarch64-enable-cond-br-tune - 启用条件分支调整通道。
--aarch64-enable-condopt - 启用条件优化通道。
--aarch64-enable-copyelim - 启用冗余复制消除通道。
--aarch64-enable-dead-defs - 启用删除死定义并用零寄存器存储替换存储的通道。
--aarch64-enable-early-ifcvt - 运行早期 if 转换。
--aarch64-enable-falkor-hwpf-fix - 启用 Falkor HWPF 修复。
--aarch64-enable-gep-opt - 启用复杂 GEP 优化。
--aarch64-enable-gisel-ldst-postlegal - 启用 GlobalISel 的后合法化加载/存储优化通道。
--aarch64-enable-gisel-ldst-prelegal - 启用 GlobalISel 的前合法化加载/存储优化通道。
--aarch64-enable-global-isel-at-O=<int> - 在优化级别(-1 禁用)或以下启用 GlobalISel。
--aarch64-enable-global-merge - 启用全局合并通道。
--aarch64-enable-ldst-opt - 启用加载/存储对优化通道。
--aarch64-enable-logical-imm - 启用 AArch64 逻辑立即指令优化。
--aarch64-enable-loop-data-prefetch - 启用循环数据预取通道。
--aarch64-enable-mcr - 启用机器合并通道。
--aarch64-enable-mgather-combine - 合并 AArch64 遮罩聚集内在扩展。
--aarch64-enable-nonlazybind - 通过直接 GOT 加载调用 nonlazybind 函数。
--aarch64-enable-promote-const - 启用提升常量通道。
--aarch64-enable-simd-scalar - 启用 AdvSIMD 标量整数指令的使用。
--aarch64-enable-stp-suppress - 抑制 AArch64 的 STP。
--aarch64-enable-sve-intrinsic-opts - 启用 SVE 内在优化。
--aarch64-load-store-renaming - 重命名 AArch64 的加载/存储指令。
--aarch64-load-store-scan-limit=<uint> - 扫描限制。
--aarch64-mark-bti-property - 在汇编文件中添加带有 BTI 的 .note.gnu.property。
--aarch64-neon-syntax=<value> - 选择从 AArch64 后端发出的 NEON 代码风格:
=generic - 发出通用 NEON 汇编。
=apple - 发出 Apple 风格的 NEON 汇编。
--aarch64-order-frame-objects - 排序栈分配。
--aarch64-redzone - 在 AArch64 上启用红区。
--aarch64-simd-scalar-force-all - 在所有地方强制使用 AdvSIMD 标量指令。
--aarch64-slh-loads - 清理从内存的加载。
--aarch64-stress-ccmp - 将所有旋钮调至 11。
--aarch64-stress-promote-const - 推广所有向量常量。
--aarch64-sve-vector-bits-max=<uint> - 假设 SVE 向量寄存器最大为这个大小,零表示不假设最大大小。
--aarch64-sve-vector-bits-min=<uint> - 假设 SVE 向量寄存器至少为这个大小,零表示不假设最小大小。
--aarch64-tbz-offset-bits=<uint> - 限制 TB[N]Z 指令的范围(调试)。
--aarch64-update-scan-limit=<uint> - 扫描限制。
--aarch64-use-aa - 在代码生成期间启用 AA 的使用。
--aarch64-use-tbi - 假设地址的高位被忽略。
--aarch64o0prelegalizercombinerhelper-disable-rule=<string> - 在 AArch64O0PreLegalizerCombinerHelper 通道中暂时禁用一个或多个组合器规则。
--aarch64o0prelegalizercombinerhelper-only-enable-rule=<string> - 禁用 AArch64O0PreLegalizerCombinerHelper 通道中的所有规则,然后重新启用指定的规则。
--aarch64postlegalizercombinerhelper-disable-rule=<string> - 在 AArch64PostLegalizerCombinerHelper 通道中暂时禁用一个或多个组合器规则。
--aarch64postlegalizercombinerhelper-only-enable-rule=<string> - 禁用 AArch64PostLegalizerCombinerHelper 通道中的所有规则,然后重新启用指定的规则。
--aarch64postlegalizerloweringhelper-disable-rule=<string> - 在 AArch64PostLegalizerLoweringHelper 通道中暂时禁用一个或多个组合器规则。
--aarch64postlegalizerloweringhelper-only-enable-rule=<string> - 禁用 AArch64PostLegalizerLoweringHelper 通道中的所有规则,然后重新启用指定的规则。
--aarch64prelegalizercombinerhelper-disable-rule=<string> - 在 AArch64PreLegalizerCombinerHelper 通道中暂时禁用一个或多个组合器规则。
--aarch64prelegalizercombinerhelper-only-enable-rule=<string> - 禁用 AArch64PreLegalizerCombinerHelper 通道中的所有规则,然后重新启用指定的规则。
--abort-on-max-devirt-iterations-reached - 当达到 devirtualization CGSCC 重复通道的最大迭代次数时中止。
--accel-tables=<value> - 输出 dwarf 加速器表。
=Default - 平台的默认值。
=Disable - 禁用。
=Apple - Apple。
=Dwarf - DWARF。
--adce-remove-control-flow - 移除控制流。
--adce-remove-loops - 移除循环。
--addr-sink-combine-base-gv - 允许在地址下沉中合并 BaseGV 字段。
--addr-sink-combine-base-offs - 允许在地址下沉中合并 BaseOffs 字段。
--addr-sink-combine-base-reg - 允许在地址下沉中合并 BaseReg 字段。
--addr-sink-combine-scaled-reg - 允许在地址下沉中合并 ScaledReg 字段。
--addr-sink-new-phis - 允许在地址下沉中创建 Phis。
--addr-sink-new-select - 允许在地址下沉中创建 selects。
--addr-sink-using-gep - 在 CGP 中使用 GEP 进行地址下沉。
--addrsig - 发出地址重要性表。
--agg-antidep-debugdiv=<int> - 用于调试的激进反依赖破坏的控制。
--agg-antidep-debugmod=<int> - 用于调试的激进反依赖破坏的控制。
--aggregate-extracted-args - 聚合到代码提取函数的参数。
--aggressive-ext-opt - 激进的扩展优化。
--aix-ssp-tb-bit - 在 AIX 上启用 SSP Canary 信息的 Trackback。
--alias-set-saturation-threshold=<uint> - 指针可能别名集最多包含的指针数量,超过此数量将导致退化。
--align-all-blocks=<uint> - 以 log2 格式强制对所有块进行对齐(例如 4 表示按 16B 边界对齐)。
--align-all-functions=<uint> - 以 log2 格式强制对所有函数进行对齐(例如。4 表示按 16B 边界对齐)。
--align-all-nofallthru-blocks=<uint> - 强制对所有没有 fall-through 前驱的块(即不添加 nop 执行的块)进行对齐。以 log2 格式(例如 4 表示按 16B 边界对齐)。
--align-loops=<uint> - 循环的默认对齐。
--align-neon-spills - 在 prolog 和 epilog 中对 ARM NEON 溢出进行对齐。
--allinst - 为所有模板实例生成代码。
--allow-arm-wlsloops - 启用 WLS 循环的生成。
--allow-ginsert-as-artifact - 允许 G_INSERT 被视为工件。解决 AMDGPU 测试中的无限循环。
--allow-unroll-and-jam - 允许循环被展开和压缩。
--amdgcn-skip-cache-invalidations - 使用此选项跳过插入缓存使无效指令。
--amdgpu-any-address-space-out-arguments - 将非私有地址空间的指针输出参数替换为结构体返回值。
--amdgpu-assume-dynamic-stack-object-size=<uint> - 假设任何变量大小对象的额外堆栈使用量(以字节为单位)。
--amdgpu-assume-external-call-stack-size=<uint> - 假设任何外部调用的堆栈使用量(以字节为单位)。
--amdgpu-atomic-optimizations - 启用原子优化。
--amdgpu-bypass-slow-div - 跳过 64 位除法以获取动态 32 位值。
--amdgpu-dce-in-ra - 在 regalloc 内启用机器 DCE。
--amdgpu-disable-loop-alignment - 不对循环和预取进行对齐和预取。
--amdgpu-disable-power-sched - 禁用调度以最小化 mAI 功耗突发。
--amdgpu-dpp-combine - 启用 DPP 合并器。
--amdgpu-dump-hsa-metadata - 转储 AMDGPU HSA 元数据。
--amdgpu-early-ifcvt - 运行早期 if-转换。
--amdgpu-early-inline-all - 早期内联所有函数。
--amdgpu-enable-flat-scratch - 使用平面抓痕指令。
--amdgpu-enable-lds-replace-with-pointer - 启用 LDS 替换为指针通道。
--amdgpu-enable-lower-module-lds - 启用降低模块 lds 通道。
--amdgpu-enable-merge-m0 - 合并和提升 M0 初始化。
--amdgpu-enable-pre-ra-optimizations - 启用 Pre-RA 优化通道。
--amdgpu-enable-promote-kernel-arguments - 将平面内核指针参数提升为全局。
--amdgpu-enable-structurizer-workarounds - 启用对 StructurizeCFG 通道的解决方法。
--amdgpu-function-calls - 启用 AMDGPU 函数调用支持。
--amdgpu-indirect-access-weight=<uint> - 间接访问内存指令的权重。
--amdgpu-inline-arg-alloca-cost=<uint> - alloca 参数的成本。
--amdgpu-inline-arg-alloca-cutoff=<uint> - 用于内联成本的最大 alloca 大小。
--amdgpu-inline-max-bb=<ulong> - 内联后允许的最大 BB 数(编译时约束)。
--amdgpu-internalize-symbols - 启用消除非内核函数和未使用的全局变量。
--amdgpu-ir-lower-kernel-arguments - 在 IR 通道中降低内核参数加载。
--amdgpu-large-stride-threshold=<uint> - 大跨度内存访问阈值。
--amdgpu-large-stride-weight=<uint> - 大跨度内存访问权重。
--amdgpu-late-structurize - 启用晚期 CFG 结构化。
--amdgpu-limit-wave-threshold=<uint> - 内核限制波阈值(%)。
--amdgpu-load-store-vectorizer - 启用负载/存储向量化器。
--amdgpu-max-memory-clause=<uint> - 内存子句的最大长度,指令数。
--amdgpu-max-return-arg-num-regs=<uint> - 大致限制用于替换输出参数的返回寄存器数量。
--amdgpu-mem-intrinsic-expand-size=<int> - 集内存内在扩展的最小 mem 内在大小。
--amdgpu-membound-threshold=<uint> - 函数内存绑定阈值(%)。
--amdgpu-mode-register - 启用模式寄存器通道。
--amdgpu-opt-exec-mask-pre-ra - 在 Pre-RA 执行掩码优化。
--amdgpu-opt-vgpr-liverange - 启用 VGPR 活变量优化,用于 if-else 结构。
--amdgpu-prelink - 启用预链接模式优化。
--amdgpu-promote-alloca-to-vector-limit=<uint> - 考虑提升 alloca 到向量的最大字节大小。
--amdgpu-reassign-regs - 在 gfx10+ 上启用寄存器重新分配优化。
--amdgpu-scalar-ir-passes - 启用标量 IR 通道。
--amdgpu-scalarize-global-loads - 启用全局加载标量化。
--amdgpu-sdwa-peephole - 启用 SDWA 窥视器。
--amdgpu-simplify-libcall - 启用 amdgpu 库简化。
--amdgpu-skip-threshold=<uint> - 在跳过发散控制流之前指令的数量。
--amdgpu-stress-function-calls - 强制所有函数为 noinline。
--amdgpu-super-align-lds-globals - 增加 LDS 的对齐,如果它不在对齐边界上。
--amdgpu-unroll-max-block-to-analyze=<uint> - 内联 AMDGPU 时分析的内部循环块大小阈值。
--amdgpu-unroll-runtime-local - 允许在循环中使用运行时展开,如果使用了局部内存。
--amdgpu-unroll-threshold-if=<uint> - 循环内每个 if 语句的展开阈值增量。
--amdgpu-unroll-threshold-local=<uint> - AMDGPU 使用局部内存的展开阈值。
--amdgpu-unroll-threshold-private=<uint> - AMDGPU 使用私有内存的展开阈值。
--amdgpu-use-aa-in-codegen - 在代码生成期间启用 AA 的使用。
--amdgpu-use-divergent-register-indexing - 使用间接寄存器寻址进行发散索引。
--amdgpu-use-legacy-divergence-analysis - 启用 AMDGPU 的传统发散分析。
--amdgpu-use-native[=<string>] - 用本地替换函数的逗号分隔列表,或全部。
--amdgpu-verify-hsa-metadata - 验证 AMDGPU HSA 元数据。
--amdgpu-vgpr-index-mode - 使用 GPR 索引模式代替 movrel 进行向量索引。
--amdgpu-waitcnt-forcezero - 强制所有 waitcnt 指令以 s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 发出。
--amdgpupostlegalizercombinerhelper-disable-rule=<string> - 在 AMDGPUPostLegalizerCombinerHelper 通道中暂时禁用一个或多个组合器规则。
--amdgpupostlegalizercombinerhelper-only-enable-rule=<string> - 禁用 AMDGPUPostLegalizerCombinerHelper 通道中的所有规则,然后重新启用指定的规则。
--amdgpuprelegalizercombinerhelper-disable-rule=<string> - 在 AMDGPUPreLegalizerCombinerHelper 通道中暂时禁用一个或多个组合器规则。
--amdgpuprelegalizercombinerhelper-only-enable-rule=<string> - 禁用 AMDGPUPreLegalizerCombinerHelper 通道中的所有规则,然后重新启用指定的规则。
--amdgpuregbankcombinerhelper-disable-rule=<string> - 在 AMDGPURegBankCombinerHelper 通道中暂时禁用一个或多个组合器规则。
--amdgpuregbankcombinerhelper-only-enable-rule=<string> - 禁用 AMDGPURegBankCombinerHelper 通道中的所有规则,然后重新启用指定的规则。
--amdhsa-code-object-version=<uint> - AMDHSA 代码对象版本。
--ar=<string> - 归档器。
--arc-opt-max-ptr-states=<uint> - 优化器跟踪的指针状态的最大数量。
--arm-add-build-attributes - 添加构建属性。
--arm-adjust-jump-tables - 调整基本块布局以更好地使用 TB[BH]。
--arm-assume-itcm-bankconflict - 假设 ITCM 银行冲突。
--arm-assume-misaligned-load-store - 在 ARM 负载/存储优化中更加保守。
--arm-atomic-cfg-tidy - 在扩展原子操作后运行 SimplifyCFG,利用 cmpxchg 基于流的信息。
--arm-constant-island-max-iteration=<uint> - 收敛的最大迭代次数。
--arm-data-bank-mask=<int> - 数据银行掩码。
--arm-enable-merge-loopenddec - 启用合并 Loop End 和 Dec 指令。
--arm-enable-subreg-liveness - 启用子寄存器生命周期。
--arm-force-fast-isel - 强制使用快速 ISel。
--arm-global-merge - 启用全局合并通道。
--arm-implicit-it=<value> - 允许在 IT 块之外的条件指令。
=always - 在 ARM 和 Thumb 中接受,在 Thumb 中发出隐式 IT。
=never - 在 ARM 中警告,在 Thumb 中拒绝。
=arm - 只在 ARM 中接受,拒绝在 Thumb 中。
=thumb - 在 ARM 中警告,在 Thumb 中发出隐式 IT。
--arm-interworking - 启用/禁用 ARM 互操作(仅限调试)。
--arm-load-store-opt - 启用 ARM 负载/存储优化通道。
--arm-loloops-disable-tailpred - 禁用 ARM LowOverheadLoop 通道的尾部预测。
--arm-memtransfer-tploop=<value> - 控制将 memcpy 转换为尾预测循环(WLSTP)。
=force-disabled - 不转换 memcpy 为 TP 循环。
=force-enabled - 始终转换 memcpy 为 TP 循环。
=allow - 允许(可能受某些条件限制)将 memcpy 转换为 TP 循环。
--arm-parallel-dsp-load-limit=<uint> - 限制分析的负载数量。
--arm-prera-ldst-opt-reorder-limit=<uint> - 预 RA 重排序限制。
--arm-promote-constant - 启用/禁用将未命名地址常量提升到常量池。
--arm-promote-constant-max-size=<uint> - 提升到常量池的常量的最大大小。
--arm-promote-constant-max-total=<uint> - 所有常量提升到常量池的最大大小。
IT 块支持
--arm-default-it - 根据架构生成 IT 块。
--arm-restrict-it - 根据 ARMv8 禁用已弃用的 IT。
--arm-no-restrict-it - 允许基于 ARMv7 的 IT 块。
--arm-set-lr-predicate - 在尾预测区域中将 lr 设置为谓词。
--arm-synthesize-thumb-1-tbb - 通过合成相当于 TBB/TBH 指令的压缩跳表,在 Thumb-1 中使用。
--arm-use-mulops - 使用乘法操作。
--as-secure-log-file-name=<value> - 作为安全日志文件名(从 AS_SECURE_LOG_FILE 环境变量初始化)。
--asan-always-slow-path - 对所有访问使用带有慢路径的仪器。
--asan-debug=<int> - 调试。
--asan-debug-func=<string> - 调试函数。
--asan-debug-max=<int> - 调试最大指令数。
--asan-debug-min=<int> - 调试最小指令数。
--asan-debug-stack - 调试堆栈。
--asan-destructor-kind=<value> - 设置 ASan 析构函数类型。默认值是使用传递给通道构造函数的值。
=none - 没有析构函数。
=global - 使用全局析构函数。
--asan-detect-invalid-pointer-cmp - 使用指针操作数的仪器化 <, <=, >, >=。
--asan-detect-invalid-pointer-pair - 使用指针操作数的仪器化 <, <=, >, >=, -。
--asan-detect-invalid-pointer-sub - 使用指针操作数的仪器化 - 操作。
--asan-force-dynamic-shadow - 将阴影地址加载到每个函数的本地变量中。
--asan-force-experiment=<uint> - 强制优化实验(用于测试)。
--asan-globals - 处理全局对象。
--asan-globals-live-support - 使用链接器功能支持全局的死代码剥离。
--asan-guard-against-version-mismatch - 防守编译器/运行时版本不匹配。
--asan-initialization-order - 处理 C++ 初始化顺序。
--asan-instrument-atomics - 仪器化原子指令(rmw, cmpxchg)。
--asan-instrument-byval - 仪器化 byval 调用参数。
--asan-instrument-dynamic-allocas - 仪器化动态 allocas。
--asan-instrument-reads - 仪器化读取指令。
--asan-instrument-writes - 仪器化写入指令。
--asan-instrumentation-with-call-threshold=<int> - 如果正在仪器化的函数包含超过这个数量的内存访问,则使用回调而不是内联检查(-1 表示从不使用回调)。
--asan-kernel - 启用 KernelAddressSanitizer 仪器化。
--asan-mapping-offset=<ulong> - ASan 阴影映射的偏移量 [实验性]。
--asan-mapping-scale=<int> - ASan 阴影映射的比例。
--asan-max-inline-poisoning-size=<uint> - 内联阴影中毒块的最大大小(以字节为单位)。
--asan-max-ins-per-bb=<int> - 在任何给定的基本块中仪器化的最大指令数。
--asan-memory-access-callback-prefix=<string> - 内存访问回调的前缀。
--asan-opt - 优化仪器化。
--asan-opt-globals - 不仪器化标量全局变量。
--asan-opt-same-temp - 只仪器化一次相同的临时变量。
--asan-opt-stack - 不仪器化标量栈变量。
--asan-optimize-callbacks - 优化回调。
--asan-realign-stack=<uint> - 根据这个标志的值(2 的幂)重新对齐堆栈。
--asan-recover - 启用恢复模式(继续错误后执行)。
--asan-redzone-byval-args - 为 byval 参数创建红区(需要额外的复制)。
--asan-skip-promotable-allocas - 不仪器化可提升的 allocas。
--asan-stack - 处理堆栈内存。
--asan-stack-dynamic-alloca - 使用动态 alloca 表示堆栈变量。
--asan-use-after-return=<value> - 设置检测堆栈使用后返回的模式。
=never - 永不检测堆栈在返回后的使用。
=runtime - 如果二进制标志 'ASAN_OPTIONS=detect_stack_use_after_return' 被设置,则检测堆栈在返回后的使用。
=always - 总是检测堆栈在返回后的使用。
--asan-use-after-scope - 检查堆栈使用后超出作用域。
--asan-use-odr-indicator - 使用 ODR 指示符改善 ODR 报告。
--asan-use-private-alias - 使用私有别名为全局变量。
--asan-use-stack-safety - 使用栈安全分析结果。
--asan-with-comdat - 将 ASan 构造函数放置在 comdat 部分。
--asan-with-ifunc - 通过 ifunc 全局访问动态阴影,支持的平台。
--asan-with-ifunc-suppress-remat - 通过内联汇编在序言中传递动态阴影地址,抑制动态阴影地址的重新生成。
--asm-macro-max-nesting-depth=<uint> - 允许的汇编宏最大嵌套深度。
--asm-show-inst - 将内部指令表示输出到汇编文件。
--assume-preserve-all - 启用保留所有属性的功能,即使那些不太可能有用。
--atomic-counter-update-promoted - 仅对提升的计数器使用原子 fetch add 进行计数器更新。
--atomic-first-counter - 使用原子 fetch add 进行第一个计数器(通常是入口计数器)。
--attributor-allow-deep-wrappers - 允许 Attributor 使用从非精确函数派生的信息进行 IP 信息。
--attributor-allow-shallow-wrappers - 允许 Attributor 为非精确定义创建浅层包装器。
--attributor-annotate-decl-cs - 注释函数声明的调用点。
--attributor-depgraph-dot-filename-prefix=<string> - 用于 CallGraph dot 文件名称的前缀。
--attributor-dump-dep-graph - 将依赖图转储为 dot 文件。
--attributor-enable=<value> - 启用 Attributor 跨过程推断通道。
=all - 启用所有 Attributor 运行。
=module - 启用模块范围的 Attributor 运行。
=cgscc - 启用调用图 SCC Attributor 运行。
=none - 禁用 Attributor 运行。
--attributor-enable-call-site-specific-deduction - 允许 Attributor 进行特定于调用点的分析。
--attributor-manifest-internal - 展示 Attributor 内部字符串属性。
--attributor-max-initialization-chain-length=<uint> - 最大连锁初始化数量(以避免栈溢出)。
--attributor-max-interfering-writes=<uint> - 在假定所有可能干扰之前要检查的最大干扰写入数量。
--attributor-max-iterations=<uint> - 最大固定点迭代次数。
--attributor-max-iterations-verify - 验证 max-iterations 是固定点的严格界限。
--attributor-max-potential-values=<uint> - 跟踪每个位置的潜在值的最大数量。
--attributor-print-call-graph - 打印 Attributor 的内部调用图。
--attributor-print-dep - 打印属性依赖关系。
--attributor-simplify-all-loads - 尝试简化所有负载。
--attributor-view-dep-graph - 查看依赖图。
--available-load-scan-limit=<uint> - 用于指定从给定指令向后扫描的最大指令数量,当搜索可用加载值时使用。
--avoid-speculation - MachineLICM 应避免推测。
--basic-aa-recphi - 基本 AA 记录 PHI。
--basic-block-sections=<all | list of function list (file) | labels | none> - 将基本块发射到单独的节中。
--bbsections-cold-text-prefix=<string> - 用于冷基本块集群的文本前缀。
--bbsections-detect-source-drift - 检查是否存在 fdo instr. profile hash 不匹配的情况。
--betterC - 省略生成一些运行时信息和辅助函数。
--bitcode-flush-threshold=<uint> - 用于刷新 LLVM 位码的阈值(单位 M)。
--bitcode-mdindex-threshold=<uint> - 元数据数量超过此值时,发出索引以实现延迟加载。
--block-freq-ratio-threshold=<uint> - 如果目标块的热度是源块的 N 倍,则不提升指令。
--block-placement-exit-block-bias=<uint> - 循环出口块需要超过原始出口块的块频率百分比,才能被视为新的出口。
--bonus-inst-threshold=<uint> - 控制额外指令的数量(默认 = 1)。
--bounds-checking-single-trap - 使用单个陷阱块。
--boundscheck=<value> - 数组边界检查。
=off - 禁用。
=safeonly - 仅对 @safe 函数启用。
=on - 对所有函数启用。
--bpf-disable-avoid-speculation - BPF: 禁用避免推测代码移动。
--bpf-disable-serialize-icmp - BPF: 禁用序列化 ICMP 指令。
--bpf-expand-memcpy-in-order - 将 memcpy 展开为按顺序的 load/store 对。
--branch-fold-placement - 在放置期间执行分支折叠。减小代码大小。
--branch-on-poison-as-ub - 分支上的毒化被视为未定义。
--branch-relax-asm-large - asm 中的分支放松。
--branch-relax-safety-buffer=<uint> - 安全缓冲区大小。
--break-anti-dependencies=<string> - 打破后 RA 调度的反依赖性:"critical"、"all" 或 "none"。
-c - 仅编译,不链接。
--cache=<cache dir> - 启用编译缓存,使用 <cache dir> 存储缓存文件(实验性)。
--cache-prune - 启用缓存修剪。
--cache-prune-expiration=<dur> - 将缓存文件的修剪过期时间设置为 <dur> 秒(默认:1 周)。意味着 --cache-prune。
--cache-prune-interval=<dur> - 将缓存修剪间隔设置为 <dur> 秒(默认:20 分钟)。设置为 0 以强制修剪。意味着 --cache-prune。
--cache-prune-maxbytes=<size> - 将最大缓存大小设置为 <size> 字节。意味着 --cache-prune。
--cache-prune-maxpercentage=<perc> - 将缓存大小限制设置为可用空间的 <perc> 百分比(默认:75%)。意味着 --cache-prune。
--cache-retrieval=<value> - 设置缓存检索机制(默认:copy)。
=copy - 复制缓存文件。
=hardlink - 创建缓存文件的硬链接(推荐)。
=link - 在 Windows 上等同于 'hardlink',在 Unix 和 OS X 上等同于 'symlink'。
=symlink - 创建缓存文件的符号链接。
--callgraph-dot-filename-prefix=<string> - 用于 CallGraph dot 文件名称的前缀。
--callgraph-heat-colors - 在调用图中显示热力图颜色。
--callgraph-multigraph - 显示调用多图(不删除并行边)。
--callgraph-show-weights - 显示带有权重的边。
--callsite-splitting-duplication-threshold=<uint> - 仅允许在调用之前插入指令,如果它们的成本低于 DuplicationThreshold。
--canon-nth-function=<N> - 函数编号用于规范化。
--canonicalize-icmp-predicates-to-unsigned - 启用将有符号关系谓词规范化为无符号(例如 sgt => ugt)。
--capture-tracking-max-uses-to-explore=<uint> - 探索的最大使用次数。
--cfg-dot-filename-prefix=<string> - 用于 CFG dot 文件名称的前缀。
--cfg-func-name=<string> - 函数名称(或其子字符串),其 CFG 被查看/打印。
--cfg-heat-colors - 在 CFG 中显示热力图颜色。
--cfg-hide-cold-paths=<number> - 隐藏相对频率低于给定值的块。
--cfg-hide-deoptimize-paths - 隐藏去优化路径。
--cfg-hide-unreachable-paths - 隐藏不可达路径。
--cfg-raw-weights - 使用原始权重标记标签。使用百分比作为默认值。
--cfg-weights - 显示带有权重的边。
--cgp-freq-ratio-to-skip-merge=<uint> - 如果空块的频率与目标块的频率之比大于此比率,则跳过合并空块。
--cgp-icmp-eq2icmp-st - 启用 ICMP_EQ 到 ICMP_S(L|G)T 转换。
--cgp-optimize-phi-types - 启用在 CodeGenPrepare 中转换 phi 类型。
--cgp-split-large-offset-gep - 启用拆分大型偏移的 GEP。
--cgp-type-promotion-merge - 启用冗余 sexts 合并当一个支配另一个时。
--cgp-verify-bfi-updates - 启用 CodeGenPrepare 中的 BFI 更新验证。
--cgscc-inline-replay=<filename> - 包含内联注释的优化备注文件,由 cgscc 内联重放。
--cgscc-inline-replay-fallback=<value> - cgscc 内联重放如何处理不来自重放的站点。原始:将所有未在重放中的决策发送给原始顾问(默认),AlwaysInline:内联所有不在重放中的站点,NeverInline:不内联不在重放中的站点。
=Original - 所有不在重放中的决策都发送给原始顾问(默认)。
=AlwaysInline - 所有不在重放中的决策都被内联。
=NeverInline - 所有不在重放中的决策都不被内联。
--cgscc-inline-replay-format=<value> - cgscc 内联重放文件的格式。
=Line - <行号>。
=LineColumn - <行号>:<列号>。
=LineDiscriminator - <行号>.<鉴别符>。
=LineColumnDiscriminator - <行号>:<列号>.<鉴别符>(默认)。
--cgscc-inline-replay-scope=<value> - 内联重放应用于整个模块还是仅应用于在备注中作为调用者存在的函数(默认)。
=Function - 在具有备注关联的函数上重放(默认)。
=Module - 在整个模块上重放。
--check-bfi-unknown-block-queries - 检查是否对未知块进行了块频率查询以调试遗漏的 BFI 更新。
--check-early-avail - 检查是否对未知块进行了块频率查询以调试遗漏的 BFI 更新。
--checkaction=<value> - 当断言/边界检查/最终开关失败时采取的操作。
=D - D 行为的通常方式,抛出 AssertError。
=C - 调用 C 运行时库断言失败函数。
=halt - 停止程序执行(非常轻量级)。
=context - 使用带有上下文信息的 D 断言(当可用时)。
--chr-bias-threshold=<number> - CHR 认为分支偏差大于此比率时有偏差。
--chr-function-list=<string> - 指定文件以检索要应用 CHR 的函数列表。
--chr-merge-threshold=<uint> - CHR 合并 N 个分支/选择,其中 N >= 此值。
--chr-module-list=<string> - 指定文件以检索要应用 CHR 的模块列表。
--code-model=<value> - 选择代码模型。
=tiny - 小型代码模型。
=small - 小型代码模型。
=kernel - 内核代码模型。
=medium - 中型代码模型。
=large - 大型代码模型。
--cold-branch-ratio=<number> - 考虑区域为冷的最小 BranchProbability。
--cold-callsite-rel-freq=<int> - 在没有配置文件信息的情况下,对于一个调用站点被认为是冷的最大块频率,表示为调用者入口频率的百分比。
--cold-synthetic-count=<int> - 冷函数的初始合成入口计数。
--coldcc-rel-freq=<int> - 为了启用 coldcc,调用站点被认为是冷的最大块频率,表示为调用者入口频率的百分比。
--combiner-global-alias-analysis - 启用 DAG combiner 的 IR 别名分析。
--combiner-reduce-load-op-store-width - DAG combiner 启用减少 load/op/store 序列的宽度。
--combiner-shrink-load-replace-store-with-store - DAG combiner 启用用更窄的 store 替换 load/<replace bytes>/store。
--combiner-split-load-index - DAG combiner 可以拆分索引从负载。
--combiner-store-merge-dependence-limit=<uint> - 限制在存储合并依赖性检查中相同的 StoreNode 和 RootNode 放弃的次数。
--combiner-store-merging - DAG combiner 启用合并多个存储到更宽的存储。
--combiner-stress-load-slicing - 绕过负载切片的盈利性模型。
--combiner-tokenfactor-inline-limit=<uint> - 内联 Token Factors 的操作数限制。
--combiner-use-tbaa - 启用 DAG combiner 的 TBAA 使用。
--commgep-const - 常量 gep。
--commgep-inv - 反 gep。
--commgep-speculate - 推测 gep。
--compile-time-mem-idiom-threshold=<uint> - 如果运行时循环计数(内存传输大小)在编译时已知,则执行转换的阈值(以字节为单位)。
--compute-dead - 计算死亡符号。
--conf=<filename> - 使用配置文件 <filename>。
--consider-local-interval-cost - 在选择最佳拆分候选时考虑由拆分候选创建的局部间隔的成本。
--consthoist-gep - 尝试提升常量 gep 表达式。
--consthoist-min-num-to-rebase=<uint> - 如果基础的依赖常量数量少于这个数字,则不重新定位。
--consthoist-with-block-frequency - 启用使用块频率分析来减少常量物化执行的机会,而不是提升。
--cost-kind=<value> - 目标成本种类。
=throughput - 吞吐量倒数。
=latency - 指令延迟。
=code-size - 代码大小。
=size-latency - 代码大小和延迟。
--costmodel-reduxcost - 识别简化模式。
--cov - 编译时包含代码覆盖分析和 .lst 文件生成。使用 -cov=<n> 表示所需的最小覆盖率百分比。使用 -cov=ctfe 包括在 CTFE 期间执行的代码。
--cov-increment=<value> - 设置覆盖行计数增量类型。
=default - 使用默认值(原子)。
=atomic - 原子增量。
=non-atomic - 非原子增量(不线程安全)。
=boolean - 不读取,只将计数器设置为 1。
--crash-diagnostics-dir=<directory> - 崩溃诊断文件目录。
--cvp-max-functions-per-value=<uint> - 跟踪每个格值的最大函数数。
允许已弃用的语言特性和符号:
-d - 默默允许已弃用的特性和符号。
--dw - 当使用已弃用的特性或符号时发出消息(默认)。
--de - 当使用已弃用的特性或符号时发出错误(停止编译)。
--d-debug[=<level/idents>] - 编译时加入调试代码 > = <level> 或由 <idents> 识别。
--d-version=<level/idents> - 编译时加入版本代码 > = <level> 或由 <idents> 识别。
--da-delinearize - 尝试对数组引用进行非线性化。
--da-disable-delinearization-checks - 禁用尝试静态验证非线性化下标有效性的检查。启用此选项可能会导致对于允许下标维度溢出或下溢到另一个维度的语言,依赖向量的错误依赖性。
--da-miv-max-level-threshold=<uint> - 递归算法用于探索 MIV 方向向量的最大深度。
--dag-dump-verbose - 在转储选择 DAG 节点时显示更多信息。
--dag-maps-huge-region=<uint> - 在调度之前构建 DAG 时使用的上限,此时将做出权衡以避免过度编译时间。
--dag-maps-reduction-size=<uint> - 每次在巨大的调度区域中减少的节点数。默认为 HugeRegion / 2。
--data-sections - 将数据发射到单独的节中。
--dataflow-edge-limit=<uint> - 在评估交换操作数的交换效益时,遍历的最大数据流边数。
--ddg-pi-blocks - 创建 pi-block 节点。
--ddg-simplify - 通过合并具有较少有趣边的节点来简化 DDG。
--debug-counter - 逗号分隔的调试计数器跳过和计数列表。
=dce-transform - 控制消除哪些指令。
=dse-memoryssa - 控制消除哪些 MemoryDefs。
=instcombine-visit - 控制访问哪些指令。
=early-cse - 控制移除哪些指令。
=newgvn-vn - 控制为哪些操作数进行值编号。
=newgvn-phi - 控制我们为哪些操作创建操作的 phi。
=attributor-manifest - 确定在 IR 中体现哪些属性。
=partially-inline-libcalls-transform - 控制 partially-inline-libcalls 中的转换。
=assume-builder-counter - 控制创建哪个假设。
=predicateinfo-rename - 控制哪些变量使用 predicateinfo 重命名。
=assume-queries-counter - 控制创建哪些假设。
=aarch64-ldst-opt-reg-renaming - 控制哪些对被重命名。
=falkor-hwpf - 控制避免哪些标签冲突。
=si-insert-waitcnts-forceexp - 强制发出 s_waitcnt expcnt(0) 指令。
=si-insert-waitcnts-forcelgkm - 强制发出 s_waitcnt lgkmcnt(0) 指令。
=si-insert-waitcnts-forcevm - 强制发出 s_waitcnt vmcnt(0) 指令。
=machine-cp-fwd - 控制转发哪些寄存器 COPY。
=conds-eliminated - 控制消除哪些条件。
=div-rem-pairs-transform - 控制 div-rem 对的转换。
=instcombine-negator - 控制 InstCombine 通道中的 Negator 转换。
--debug-entry-values - 启用调试信息以获取入口值。
--debug-info-correlate - 使用调试信息关联配置文件。
--debug-pass=<value> - 打印旧 PassManager 的调试信息。
=Disabled - 禁用调试输出。
=Arguments - 打印传递给 'opt' 的通道参数。
=Structure - 在运行之前打印通道结构。
=Executions - 在执行之前打印通道名称。
=Details - 在执行时打印通道细节。
--debugger-tune=<value> - 为特定调试器调整调试信息。
=gdb - gdb。
=lldb - lldb。
=dbx - dbx。
=sce - SCE 目标(例如 PS4)。
--debugify-and-strip-all-safe - 在每个通道之前对 MIR 进行调试化,除了已知在存在调试信息时不安全的通道之外,每个通道之后剥离调试信息。
--debugify-check-and-strip-all-safe - 在每个通道之前,通过检查和剥离调试信息,对 MIR 进行调试化,除了已知在存在调试信息时不安全的通道之外。
--debugify-level=<value> - 要添加的调试信息类型。
=locations - 仅位置。
=location+variables - 位置和变量。
--debugify-quiet - 抑制冗长的 debugify 输出。
--debuglib=<lib1,lib2,...> - 调试版本的默认库(覆盖之前的)。如果省略选项,LDC 将在链接时附加 -debug 到 -defaultlib 名称,当使用 -link-defaultlib-debug 时。
--default-gcov-version=<string> -
--default-trip-count=<uint> - 使用此来指定循环的默认行程计数。
--defaultlib=<lib1,lib2,...> - 默认链接库(覆盖之前的)。
--demote-catchswitch-only - 仅降级 catchswitch BBs(适用于 wasm EH)。
--denormal-fp-math=<value> - 选择代码允许使用的 denormal 数。
=ieee - IEEE 754 denormal 数。
=preserve-sign - 冲刷为零的数字的符号在 0 的符号中保留。
=positive-zero - denormals 被冲刷到正零。
--denormal-fp-math-f32=<value> - 选择代码允许使用的 float denormal 数。
=ieee - IEEE 754 denormal 数。
=preserve-sign - 冲刷为零的数字的符号在 0 的符号中保留。
=positive-zero - denormals 被冲刷到正零。
--deps[=<filename>] - 将模块依赖项写入 <filename>(仅导入)。'-deps' 单独打印模块依赖项(导入/文件/版本/调试/库)。
--dfa-cost-threshold=<uint> - 接受转换的最大成本。
--dfa-hazard-rec - 使用基于 DFA 的危险识别器。
--dfa-instr-limit=<uint> - 如果存在,停止在 N 条指令后的数据包化。
--dfa-jump-view-cfg-before - 在 DFA 跳跃线程之前查看 CFG。
--dfa-max-path-length=<uint> - 查找线程以找到线程路径的最大块数。
--dfa-sched-reg-pressure-threshold=<int> - 跟踪寄存器压力并在深入时切换优先级。
--dfsan-abilist=<string> - 列出 native ABI 函数以及该通道如何处理它们的文件。
--dfsan-combine-offset-labels-on-gep - 在指针算术时,将偏移量的标签与指针的标签结合起来。
--dfsan-combine-pointer-labels-on-load - 在从内存加载时,将指针的标签与数据的标签结合起来。
--dfsan-combine-pointer-labels-on-store - 在存储到内存时,将指针的标签与数据的标签结合起来。
--dfsan-conditional-callbacks - 在条件上插入对回调函数的调用。
--dfsan-debug-nonzero-labels - 在观察到参数、负载或返回具有非零标签时,插入对 __dfsan_nonzero_label 的调用。
--dfsan-event-callbacks - 在数据事件上插入对 __dfsan_*_callback 函数的调用。
--dfsan-ignore-personality-routine - 如果标记为未仪器化的 ABI 列表中的人格例程,则不为其创建包装器。
--dfsan-instrument-with-call-threshold=<int> - 如果被仪器化的函数需要比这个数字更多的 origin stores,则使用回调而不是内联检查(-1 意味着永远不使用回调)。
--dfsan-preserve-alignment - 尊重由输入 IR 提供
--dfsan-track-origins=<int> - 跟踪标签的起源。
--dfsan-track-select-control-flow - 将标签从选择指令的条件值传播到结果。
--dgc2stack-size-limit=<uint> - 要求分配大小小于 n 字节才能提升,0 表示忽略。
--disable-2addr-hack - 禁用调度器的双地址 hack。
--disable-a15-sd-optimization - 抑制 A15 上 S -> D 注册访问的优化。
--disable-adv-copy-opt - 禁用高级复制优化。
--disable-arm-loloops - 禁用生成低开销循环。
--disable-arm-parallel-dsp - 禁用 ARM 平行 DSP 通道。
--enable-asserts=<value> - (*) 启用断言。
--disable-basic-aa -
--disable-binop-extract-shuffle - 禁用 binop 提取到 shuffle 转换。
--disable-bitcode-version-upgrade - 禁用自动位码升级以匹配版本。
--disable-block-placement - 禁用概率驱动的块放置。
--disable-bpf-peephole - 禁用 BPF 的机器 peepholes。
--disable-branch-fold - 禁用分支折叠。
--disable-cgp - 禁用 Codegen Prepare。
--disable-cgp-branch-opts - 禁用 CodeGenPrepare 中的分支优化。
--disable-cgp-ext-ld-promotion - 禁用在 CodeGenPrepare 中的 ext(promotable(ld)) -> promoted(ext(ld)) 优化。
--disable-cgp-gc-opts - 禁用 CodeGenPrepare 中的 GC 优化。
--disable-cgp-select2branch - 禁用 select 到分支的转换。
--disable-cgp-store-extract - 禁用 CodeGenPrepare 中的 store(extract) 优化。
--disable-cleanups - 不删除不可行的终结符或其他类似的清理。
--disable-complex-addr-modes - 禁用在优化内存指令时结合具有不同部分的寻址模式。
--disable-const64 - 禁用 const64 的生成。
--disable-constant-hoisting - 禁用常量提升。
--disable-copyprop - 禁用复制传播通道。
--disable-d-passes - 禁用所有 D 特定的通道。
--disable-debug-info-print - 禁用调试信息打印。
--disable-demotion - 克隆多色基本块但不降级跨作用域。
--disable-dfa-sched - 禁用在调度期间使用 DFA。
--disable-early-ifcvt - 禁用早期 If-转换。
--disable-early-taildup - 禁用预寄存器分配尾部复制。
--disable-expand-reductions - 禁用运行展开归约内在的通道。
--disable-gc2stack - 禁用将 GC 分配提升到堆栈内存。
--disable-gep-const-evaluation - 禁用带有常量操作数的 GetElementPtr 的评估。
--disable-gisel-legality-check - 不验证 MIR 在 GlobalISel 通道之间是否完全合法。
--disable-hcp - 禁用 Hexagon 常量传播。
--disable-hexagon-amodeopt - 禁用 Hexagon 寻址模式优化。
--disable-hexagon-cfgopt - 禁用 Hexagon CFG 优化。
--disable-hexagon-dealloc-ret - 禁用 Dealloc Return for Hexagon 目标。
--disable-hexagon-hwloops - 禁用 Hexagon 硬件循环。
--disable-hexagon-misched - 禁用 Hexagon MI 调度。
--disable-hexagon-nv-schedule - 禁用新值存储的调度调整。
--disable-hexagon-opt-ext-to-64 - 禁用扩展到 i64 的优化。
--disable-hexagon-optszext - 禁用 Sign/Zero Extends 的优化。
--disable-hexagon-peephole - 禁用 Hexagon 窥视孔优化。
--disable-hexagon-pnotp - 禁用 PNotP 的优化。
--disable-hexagon-shuffle - 禁用 Hexagon 指令洗牌。
--disable-hexagon-volatile-memcpy - 为易失性目标启用 Hexagon 特定的 memcpy。
--disable-hoisting-to-hotter-blocks=<value> - 禁用将指令提升到更热的块。
=none - 禁用该功能。
=pgo - 在使用 profile 数据时启用该功能。
=all - 在有/无 profile 数据时启用该功能。
--disable-hsdr - 禁用拆分双寄存器。
--disable-i2p-p2i-opt - 禁用 inttoptr/ptrtoint 往返优化。
--disable-icp - 禁用间接调用提升。
--disable-ifcvt-diamond -
--disable-ifcvt-forked-diamond -
--disable-ifcvt-simple -
--disable-ifcvt-simple-false -
--disable-ifcvt-triangle -
--disable-ifcvt-triangle-false -
--disable-ifcvt-triangle-false-rev -
--disable-ifcvt-triangle-rev -
--disable-inlined-alloca-merging -
--disable-interleaved-load-combine - 禁用交错加载的合并。
--enable-invariants=<value> - (*) 启用不变量。
--disable-lanai-mem-alu-combiner - 不组合 ALU 和内存操作。
--disable-layout-fsprofile-loader - 禁用 MIRProfileLoader 在 BlockPlacement 之前。
--disable-lftr - 禁用线性函数测试替换优化。
--disable-libcalls-shrinkwrap - 禁用收缩包装库调用。
--disable-licm-promotion - 禁用 LICM 通道中的内存提升。
--disable-linker-strip-dead - 在链接时不尝试移除未使用的符号。
--disable-loop-unrolling - 禁用所有相关通道中的循环展开。
--disable-loop-vectorization - 禁用循环向量化通道。
--disable-lsr - 禁用 Loop Strength Reduction Pass。
--disable-machine-cse - 禁用机器公共子表达式消除。
--disable-machine-dce - 禁用机器死亡代码消除。
--disable-machine-licm - 禁用机器 LICM。
--disable-machine-sink - 禁用机器下沉。
--disable-memcpy-idiom - 禁用循环习语识别中的 memcpy 生成。
--disable-memmove-idiom - 禁用循环习语识别中的 memmove 生成。
--disable-memop-opt - 禁用优化。
--disable-merge-into-combines - 禁用合并到 combines。
--disable-mergeicmps - 禁用 MergeICmps 通道。
--disable-mips-delay-filler - 用 NOP 填充所有延迟槽。
--disable-mips-df-backward-search - 禁止 MIPS 延迟填充向后搜索。
--disable-mips-df-forward-search - 禁止 MIPS 延迟填充向前搜索。
--disable-mips-df-succbb-search - 禁止 MIPS 延迟填充搜索后继基本块。
--disable-mr-partial-inlining - 禁用多区域部分内联。
--disable-nofree-inference - 停止在函数属性通道中推断 nofree 属性。
--disable-nounwind-inference - 停止在函数属性通道中推断 nounwind 属性。
--disable-nvjump - 禁用 New Value Jumps。
--disable-nvptx-load-store-vectorizer - 禁用 load/store 向量化器。
--disable-nvptx-require-structured-cfg - 过渡性标志,用于关闭 NVPTX 对保留结构化 CFG 的要求。只有在出现意外的回归时才应禁用此要求。
--disable-ondemand-mds-loading - 强制禁用导入时元数据的按需加载。
--disable-packetizer - 禁用 Hexagon packetizer 通道。
--disable-partial-inlining - 禁用部分内联。
--disable-partial-libcall-inlining - 禁用部分库调用内联。
--disable-peephole - 禁用 peephole 优化器。
--disable-phi-elim-edge-splitting - 禁用 PHI 消除期间的关键边拆分。
--disable-post-ra - 禁用 Post Regalloc 调度器。
--disable-postra-machine-licm - 禁用机器 LICM。
--disable-postra-machine-sink - 禁用 PostRA 机器下沉。
--disable-ppc-cmp-opt - 禁用比较指令优化。
--disable-ppc-constant-hoisting - 禁用 PPC 上的常量提升。
--disable-ppc-ctrloop-analysis - 禁用 CTR 循环分析。
--disable-ppc-ctrloops - 禁用 PPC 上的 CTR 循环。
--disable-ppc-ilp-pref - 禁用在 PPC 上设置 ILP 的节点调度优先级。
--disable-ppc-innermost-loop-align32 - 不总是将内循环对齐到 32 字节。
--disable-ppc-instr-form-prep - 禁用 PPC 循环指令形式准备。
--disable-ppc-peephole - 禁用机器 peepholes 优化。
--disable-ppc-preinc - 禁用在 PPC 上的预增加 load/store 生成。
--disable-ppc-sched-addi-load - 禁用在 PPC 上的 scheduling addi 指令在 load 前。
--disable-ppc-sco - 禁用 PPC 上的兄弟调用优化。
--disable-ppc-unaligned - 禁用在 PPC 上的未对齐 load/store 生成。
--disable-ppc-vsx-fma-mutation - 禁用 VSX FMA 指令变异。
--disable-ppc-vsx-swap-removal - 禁用 VSX Swap Removal for PPC。
--disable-preheader-prot - 禁用防止删除循环预头的保护。
--disable-preinline - 禁用预即席内联器。
--disable-promote-alloca-to-lds - 禁用提升 alloca 到 LDS。
--disable-promote-alloca-to-vector - 禁用提升 alloca 到向量。
--disable-ra-fsprofile-loader - 禁用 MIRProfileLoader 在 RegAlloc 之前。
--disable-red-zone - 不发射使用红区的代码。
--disable-sched-critical-path - 禁用 scheduled-height 优先级中的 critical path 优先级。
--disable-sched-cycles - 禁用 preRA 调度中的周期级精度。
--disable-sched-hazard - 禁用 preRA 调度期间的危险检测。
--disable-sched-height - 禁用 scheduled-height 优先级中的 height 优先级。
--disable-sched-live-uses - 禁用 scheduled-height 优先级中的 live use 优先级。
--disable-sched-physreg-join - 禁用 physreg def-use 亲和力。
--disable-sched-reg-pressure - 禁用 scheduled-height 优先级中的 regpressure 优先级。
--disable-sched-stalls - 禁用 scheduled-height 优先级中的 no-stall 优先级。
--disable-sched-vrcycle - 禁用 virtual register cycle interference checks。
--disable-separate-const-offset-from-gep - 不要将常量偏移量从 GEP 指令中分离。
--disable-shifter-op - 禁用 shifter-op 的 isel。
--disable-simplify-drtcalls - 禁用 druntime 调用的简化。
--disable-simplify-libcalls - 禁用众所周知的 C 运行时调用的简化。
--disable-slp-vectorization - 禁用 slp 向量化通道。
--disable-sparc-delay-filler - 禁用 Sparc 延迟槽填充器。
--disable-sparc-leaf-proc - 禁用 Sparc 叶程序优化。
--disable-spill-fusing - 禁用spill代码与指令的融合。
--disable-spill-hoist - 禁用内联 spill hoisting。
--disable-ssc - 禁用堆栈槽着色。
--disable-store-widen - 禁用存储扩展。
--disable-strictnode-mutation - 不要将 strict-float 节点变异为合法节点。
--disable-symbolication - 禁用崩溃回溯符号化。
--disable-tail-duplicate - 禁用尾部复制。
--disable-thinlto-funcattrs - 不在 thinLTO 中传播函数属性。
--disable-type-promotion - 禁用类型提升通道。
--disable-vecdbl-nv-stores - 禁用 vector double 新值存储。
--disable-vector-combine - 禁用所有向量组合转换。
--disable-verify - 不验证结果模块。
--disable-vp - 禁用值分析。
--disable-wasm-fallthrough-return-opt - WebAssembly: 禁用 fallthrough-return 优化。
--disable-whole-program-visibility - 禁用全程序可见性(覆盖启用选项)。
--disable-x86-domain-reassignment - X86: 禁用虚拟寄存器重新分配。
--disable-x86-lea-opt - X86: 禁用 LEA 优化。
--dllimport=<value> - Windows 专用:隐式地将哪些 extern(D) 全局变量作为 dllimport,如果它们在根模块中未定义。
=none - 无(默认情况下,-link-defaultlib-shared=false)。
=defaultLibsOnly - 仅 druntime/Phobos 符号(默认情况下,-link-defaultlib-shared 并且 -fvisibility=hidden)。。
=all - 所有(默认情况下,-link-defaultlib-shared 并且 -fvisibility=public)。
--do-comdat-renaming - 将函数哈希附加到 COMDAT 函数的名称上,以避免由于 preinliner 导致函数哈希不匹配。
--do-counter-promotion - 执行计数器寄存器提升。
--dom-conditions-max-uses=<uint> -
--dom-tree-reachability-max-bbs-to-explore=<uint> - 用于可达性分析的最大基本块数。
--dot-cfg-after-color=<string> - 用于更改 IR 后的点 - cfg 后元素的颜色。
--dot-cfg-before-color=<string> - 用于更改 IR 之前的点 - cfg 之前元素的颜色。
--dot-cfg-common-color=<string> - 用于更改 IR 常见元素的点 - cfg 颜色。
--dot-cfg-dir=<string> - 为更改的 IR 生成点文件并放入指定目录。
--dot-ddg-filename-prefix=<string> - DDG 点文件名称的前缀。
--dot-ddg-only - 简单的 ddg 点图。
--dse-memoryssa-defs-per-block-limit=<uint> - 考虑作为消除其他存储的候选存储的 MemoryDefs 的数量(默认 = 5000)。
--dse-memoryssa-otherbb-cost=<uint> - 与杀死 MemoryDef 的不同基本块中的步骤的成本(默认 = 5)。
--dse-memoryssa-partial-store-limit=<uint> - 只部分覆盖杀死 MemoryDef 的候选者的最大数量(默认 = 5)。
--dse-memoryssa-path-check-limit=<uint> - 在尝试证明所有路径都通过杀死块时检查的块的最大数量(默认 = 50)。
--dse-memoryssa-samebb-cost=<uint> - 与杀死 MemoryDef 相同的基本块中的步骤的成本(默认 = 1)。
--dse-memoryssa-scanlimit=<uint> - 用于死存储消除的存储指令的数量(默认 = 150)。
--dse-memoryssa-walklimit=<uint> - 在向上行走以查找可能被杀死的 MemoryDefs 时的最大步骤数(默认 = 90)。
--dse-optimize-memoryssa - 允许 DSE 优化内存访问。
--dump-thin-cg-sccs - 转储 ThinLTO 索引的调用图中的 SCC。
--dwarf-extended-loc=<value> - 禁用在 .loc 指令中发出扩展标志。
=Default - 平台的默认值。
=Enable - 启用。
=Disable - 禁用。
--dwarf-inlined-strings=<value> - 使用内联字符串而不是字符串段。
=Default - 平台的默认值。
=Enable - 启用。
=Disable - 禁用。
--dwarf-linkage-names=<value> - 发出的 DWARF 链接名称属性。
=Default - 平台的默认值。
=All - 所有。
=Abstract - 抽象子程序。
--dwarf-op-convert=<value> - 启用使用 DWARFv5 DW_OP_convert 运算符。
=Default - 平台的默认值。
=Enable - 启用。
=Disable - 禁用。
--dwarf-sections-as-references=<value> - 使用段偏移作为引用,而不是标签。
=Default - 平台的默认值。
=Enable - 启用。
=Disable - 禁用。
--dwarf-version=<integer> - Dwarf 版本。
--dwarf64 - 以 64 位 DWARF 格式生成调试信息。
--eagerly-invalidate-analyses - 急切地使更多分析在默认管道中失效。
--early-ifcvt-limit=<uint> - 推测块中的最大指令数。
--early-live-intervals - 在管道中提前运行 live interval 分析。
--earlycse-debug-hash - 执行额外的断言检查,以验证 SimpleValue 的 hash 函数在其 isEqual 谓词方面表现良好。
--earlycse-mssa-optimization-cap=<uint> - 在早期 CSE 中启用不精确性,以在病态情况下加快编译。限制了 MemorySSA 破坏调用的次数。
--eif-limit=<uint> - Hexagon 早期 if-转换的大小限制。
--eif-no-loop-exit - 不转换可能退出循环的分支。
--emit-call-site-info - 如果启用了调试信息,则发出调用站点调试信息。
--emscripten-cxx-exceptions-allowed=<string> -允许 Emscripten 风格的异常处理的函数名称列表(参见 emscripten EMSCRIPTEN_CATCHING_ALLOWED 选项)。
--emulate-old-livedebugvalues - 像旧的 LiveDebugValues 那样行动。
--emulated-tls - 使用模拟 TLS 模型。
--enable-aa-sched-mi - 启用在 MI DAG 构造期间使用 AA。
--enable-acc-forwarding - 启用 vec acc 转发。
--enable-alu-forwarding - 启用 vec alu 转发。
--enable-amdgpu-aa - 启用 AMDGPU 别名分析。
--enable-andcmp-sinking - 启用 sinking 和/cmp 进入分支。
--enable-arm-3-addr-conv - 启用 ARM 2-addr 到 3-addr 转换。
--enable-arm-maskedgatscat - 启用生成 masked gathers 和 scatters。
--enable-arm-maskedldst - 启用生成 masked loads 和 stores。
--enable-block-placement-stats - 收集概率驱动的块放置统计信息。
--enable-bsb-sched -
--enable-chr - 启用控制高度降低优化(CHR)。
--enable-cold-section - 启用将提取的冷函数放置到单独的冷热分离后的区段中。
--enable-coldcc-stress-test - 启用冷cc的应力测试,通过添加对所有内部函数的调用约定。
--enable-color=<value> - (*) 强制控制台输出彩色。
--enable-cond-stores-vec - 启用在向量化期间对存储的条件存储。
--enable-constraint-elimination - 启用基于线性约束消除条件的通道。
--enable-contracts=<value> - (*) 启用函数的前置和后置条件。
--enable-cross-module-inlining=<value> - (*) 启用跨模块函数内联(默认禁用)。
--enable-cse-in-irtranslator - 应该在 irtranslator 中启用 CSE。
--enable-cse-in-legalizer - 应该在 Legalizer 中启用 CSE。
--enable-cur-sched - 启用调度器以生成 .cur。
--enable-deferred-spilling - 而不是立即溢出变量,将实际的代码插入推迟到分配结束。这样,分配器可能仍然找到适合这种变量的颜色,因为其他被驱逐的变量。
--enable-dfa-jump-thread - 启用 DFA 跳跃线程。
--enable-double-float-shrink - 启用不安全的双精度到单精度缩小,用于数学库调用。
--enable-dse-partial-overwrite-tracking - 启用 DSE 中的部分覆盖跟踪。
--enable-dse-partial-store-merging - 启用 DSE 中的部分存储合并。
--enable-emscripten-cxx-exceptions - WebAssembly Emscripten 风格的异常处理。
--enable-emscripten-sjlj - WebAssembly Emscripten 风格的 setjmp/longjmp 处理。
--enable-epilogue-vectorization - 启用尾声循环的向量化。
--enable-ext-tsp-block-placement - 启用基于 ext-tsp 模型的机器块放置,优化 I-cache 利用率。
--enable-falkor-hwpf-unroll-fix -
--enable-fs-discriminator - 启用添加流敏感的鉴别符。
--enable-function-specialization - 启用函数专业化通道。
--enable-gen-insn - 生成所有带有 TC 的指令。
--enable-global-merge - 启用全局合并通道。
--enable-gvn-hoist - 启用 GVN 提升通道(默认关闭)。
--enable-gvn-memdep -
--enable-gvn-sink - 启用 GVN 下沉通道(默认关闭)。
--enable-heap-to-stack-conversion -
--enable-hexagon-br-prob - 启用分支概率信息。
--enable-hexagon-sdnode-sched - 启用 Hexagon SDNode 调度。
--enable-hexagon-vector-print - 启用 Hexagon Vector print instr 通道。
--enable-if-conversion - 启用向量化中的 if 转换。
--enable-implicit-null-checks - 将空检查折叠到故障内存操作中。
--enable-import-metadata - 启用导入元数据,如 'thinlto_src_module'。
--enable-ind-var-reg-heur - 在交错时仅计算一次 induction variable。
--enable-inlining=<value> - (*) 启用函数内联(默认在 -O2 及更高级别时启用)。
--enable-interleaved-mem-accesses - 启用循环中交错内存访问的向量化。
--enable-ipra - 启用跨过程寄存器分配以减少过程调用的 load/store。
--enable-knowledge-retention - 启用在代码转换过程中保留属性。
--enable-legalize-types-checking -
--enable-linkonceodr-ir-outlining - 启用对 linkonceodr 函数的 IR 概述器。
--enable-linkonceodr-outlining - 启用对 linkonceodr 函数的机器概述器。
--enable-load-in-loop-pre -
--enable-load-pre -
--enable-loadstore-runtime-interleave - 启用运行时交错,直到 load/store 端口饱和。
--enable-local-reassign - 局部重新分配可以产生更好的分配决策,但可能会增加编译时间。
--enable-loop-distribute - 启用新的实验性 LoopDistribution Pass。
--enable-loop-flatten - 启用 LoopFlatten Pass。
--enable-loop-simplifycfg-term-folding -
--enable-loop-versioning-licm - 启用实验性的 Loop Versioning LICM 通道。
--enable-loopinterchange - 启用实验性的 LoopInterchange Pass。
--enable-lsr-phielim - 启用 LSR phi 消除。
--enable-lto-internalization - 启用 LTO 中的全局值内部化。
--enable-machine-outliner - 启用机器概述器。
--enable-machine-outliner=<value> - 启用机器概述器。
=always - 对所有函数运行,保证有益。
=never - 禁用所有概述。
--enable-masked-interleaved-mem-accesses - 启用循环中 masked 交错内存访问的向量化。
--enable-matrix - 启用矩阵内在的降低。
--enable-mem-access-versioning - 启用符号步进内存访问版本控制。
--enable-mem-prof - 启用内存分析器。
--enable-memcpy-dag-opt - 将 memcpy 的加载和存储组合起来,由内联产生。
--enable-memcpyopt-without-libcalls - 即使在 libcalls 被禁用的情况下也启用 memcpyopt。
--enable-merge-functions - 启用函数合并作为优化流水线的一部分。
--enable-misched - 启用机器指令调度通道。
--enable-ml-inliner=<value> - 启用 ML 策略的内联器。目前仅针对 -Oz 进行了训练。
=default - 基于启发式的内联器版本。
=development - 使用开发模式(运行时可加载模型)。
=release - 使用发布模式(AOT 编译模型)。
--enable-module-inliner - 启用模块内联器。
--enable-mssa-in-legacy-loop-sink - 启用 Legacy 通道管理器中的 MemorySSA for LoopSink。
--enable-mssa-in-loop-sink - 启用新通道管理器中的 MemorySSA for LoopSink。
--enable-mve-interleave - 启用 MVE 向量操作降低的交错。
--enable-name-compression - 启用名称/文件名字符串压缩。
--enable-newgvn - 运行 NewGVN 通道。
--enable-no-infs-fp-math - 启用假设没有 +Infs 的 FP 数学优化。
--enable-no-nans-fp-math - 启用假设没有 NaNs 的 FP 数学优化。
--enable-no-rerun-simplification-pipeline - 防止在函数多次访问的情况下运行简化管道,只要函数本身没有改变。
--enable-no-signed-zeros-fp-math - 启用假设 0 的符号不重要的 FP 数学优化。
--enable-no-trapping-fp-math - 启用设置 FP 异常构建属性不使用异常的优化。
--enable-noalias-to-md-conversion - 在内联时将 noalias 属性转换为元数据。
--enable-nonnull-arg-prop - 尝试从调用站点传播非空参数属性到调用者函数。
--enable-nontrivial-unswitch - 强制启用非平凡的循环变换,而不是遵循传入通道的配置。
--enable-npm-O3-nontrivial-unswitch - 启用 -O3 的非平凡循环变换。
--enable-npm-pgo-inline-deferral - 启用 PGO 期间的内联延迟。
--enable-npm-synthetic-counts - 运行合成函数入口计数生成通道。
--enable-objc-arc-opts - 启用/禁用所有 ARC 优化。
--enable-order-file-instrumentation - 启用订单文件仪器(默认 = 关)。
--enable-partial-inlining - 运行部分内联通道。
--enable-patchpoint-liveness - 启用 PatchPoint Liveness Analysis Pass。
--enable-pgo-indirect-calls=<value> - (*) 启用 PGO 的间接调用。
--enable-phi-of-ops -
--enable-pipeliner - 启用软件管道化。
--enable-pipeliner-opt-size - 启用 SWP 在 Os 上。
--enable-post-misched - 启用 post-ra 机器指令调度通道。
--enable-postconditions=<value> - (*) 启用函数后置条件。
--enable-ppc-branch-coalesce - 启用 PPC 上的重复分支合并。
--enable-ppc-extra-toc-reg-deps - 添加额外的 TOC 注册依赖项。
--enable-ppc-prefetching - 启用 PPC 上的软件预取。
--enable-pre -
--enable-preconditions=<value> - (*) 启用函数前置条件。
--enable-save-restore-long - 启用保存-恢复存根的长调用。
--enable-scoped-noalias -
--enable-selectiondag-sp -
--enable-shrink-wrap - 启用收缩包装通道。
--enable-sign-dependent-rounding-fp-math - 强制代码假设舍入模式可以动态改变。
--enable-simple-loop-unswitch - 启用简单的循环变换通道。还会启用集成到循环通道管理器流水线中的独立清理通道。
--enable-split-backedge-in-load-pre -
--enable-split-machine-functions - 根据配置文件信息将冷块从机器函数中拆分出来。
--enable-stackovf-sanitizer - 启用运行时检查栈溢出。
--enable-store-refinement -
--enable-subreg-liveness - 启用子寄存器生命周期跟踪。
--enable-switch-errors=<value> - (*) 启用运行时错误处理未处理的 switch 情况。
--enable-tail-merge -
--enable-tbaa -
--enable-tc-latency-sched -
--enable-timing-class-latency - 启用定时类延迟。
--enable-unroll-and-jam - 启用 Unroll And Jam 通道。
--enable-unsafe-fp-math - 启用可能会降低 FP 精度的优化。
--enable-unsafe-globalsmodref-alias-results -
--enable-unswitch-cost-multiplier - 启用禁止指数级爆炸的非平凡变换成本乘数。
--enable-vfe - 启用虚函数消除。
--enable-vplan-native-path - 启用 VPlan-native 向量化路径,支持外部循环向量化。
--enable-vplan-predication - 启用 VPlan-native 向量化路径的预测器,支持外部循环向量化。
--enable-x86-scalar-amx - X86: 启用 AMX 标量化。
--epilogue-vectorization-force-VF=<uint> - 当启用尾声向量化时,如果指定了大于 1 的值,则强制对所有适用的尾声循环使用给定的 VF。
--epilogue-vectorization-minimum-VF=<uint> - 只有向量化因子等于或大于指定值的循环才考虑用于尾声向量化。
--exception-model=<value> - 异常模型。
=default - 默认异常处理模型。
=dwarf - 基于 DWARF 的 CFI 异常处理。
=sjlj - SjLj 异常处理。
=arm - ARM EHABI 异常。
=wineh - Windows 异常模型。
=wasm - WebAssembly 异常处理。
--exhaustive-register-search - 穷举搜索寄存器,绕过最后机会重新着色深度和干扰截止。
--expand-all-fp-mlx -
--expand-condsets-coa-limit=<uint> - 最大段合并数。
--expand-condsets-tfr-limit=<uint> - 最大 mux 扩展数。
--expand-limit=<uint> -
--expandvp-override-evl-transform=<string> - 选项:<empty>|Legal|Discard|Convert。如果非空,则忽略 TargetTransformInfo 并始终对此参数使用此转换(用于测试)。
--expandvp-override-mask-transform=<string> - 选项:<empty>|Legal|Discard|Convert。如果非空,则忽略 TargetTransformInfo 并始终对此参数使用此转换(用于测试)。
--experimental-debug-variable-locations - 使用实验性的新值跟踪变量位置。
--expose-ppc-andi-glue-bug - 暴露 PPC 上的 ANDI 胶水 bug。
--ext-tsp-backward-distance=<uint> - ExtTSP 的向后跳转的最大距离(字节)。
--ext-tsp-backward-weight=<number> - ExtTSP 值的向后跳转权重。
--ext-tsp-chain-split-threshold=<uint> - 应用拆分的最大链大小。
--ext-tsp-enable-chain-split-along-jumps - 应用拆分的最大链大小。
--ext-tsp-forward-distance=<uint> - ExtTSP 的向前跳转的最大距离(字节)。
--ext-tsp-forward-weight=<number> - ExtTSP 值的向前跳转权重。
--extern-std=<value> - C++ 标准,用于名称 mangling 兼容性。
=c++98 - 将 `__traits(getTargetInfo, "cppStd")` 设置为 `199711`。
=c++11 - 将 `__traits(getTargetInfo, "cppStd")` 设置为 `201103`(默认)。
=c++14 - 将 `__traits(getTargetInfo, "cppStd")` 设置为 `201402`。
=c++17 - 将 `__traits(getTargetInfo, "cppStd")` 设置为 `201703`。
=c++20 - 将 `__traits(getTargetInfo, "cppStd")` 设置为 `202002`。
--extra-vectorizer-passes - 在向量化后运行清理优化通道。
--extract-blocks-erase-funcs - 删除现有函数。
--extract-blocks-file=<filename> - 包含要提取的基本块列表的文件。
--extract-cutoff=<uint> - 生成 "extract" 指令的截止值。
--extract-needand - 需要在提取模式中使用 &。
--extract-nosr0 - 没有偏移量为 0 的提取指令。
--fast-cluster-threshold=<uint> - 快速群集的阈值。
--fast-isel - 启用 "fast" 指令选择器。
--fast-isel-abort=<int> - 启用在 "fast" 指令选择失败时的中止调用,0 禁用中止,1 将中止但仅适用于参数、调用和终结符,2 也将中止参数降低,3 将永远不会回退到 SelectionDAG。
--fast-isel-report-on-fallback - 当 "fast" 指令选择回退到 SelectionDAG 时发出诊断。
--fdmd-trace-functions - DMD 风格的运行时性能分析生成的代码。
--ffast-math - 为所有函数设置 @fastmath。
--filter-passes=<pass names> - 仅考虑名称匹配的 IR 更改的通道,用于打印-changed 选项。
--filter-print-funcs=<function names> - 仅打印名称匹配此选项的所有打印-[before|after][-all] 选项的函数的 IR。
--finstrument-functions - 用与 GCC 兼容的分析调用插入函数的入口和出口。
--fixup-allow-gcptr-in-csr - 允许将 GC 指针参数传递到 callee saved 寄存器中。
--fixup-byte-word-insts - 将字节和字指令更改为更大的大小。
--fixup-max-csr-statepoints=<uint> - 允许传递 GC 指针的寄存器的最大状态点数。
--fixup-scs-enable-copy-propagation - 在寄存器重加载期间启用简单的复制传播。
--fixup-scs-extend-slot-size - 允许在大于寄存器大小的spill槽中溢出。
--flat-loop-tripcount-threshold=<uint> - 如果循环的运行时行程计数低于阈值,则将循环视为平坦,并且不会过于积极地展开。
--flattened-profile-used - 表示使用的样本配置文件是扁平化的,即配置文件中不存在内联层次结构。
--float-abi=<value> - 用于浮点类型的 ABI/操作:
=default - 目标默认浮点 ABI。
=soft - 软件浮点 ABI 和操作。
=softfp - 软浮点 ABI,但硬件浮点指令。
=hard - 硬件浮点 ABI 和指令。
--float2int-max-integer-bw=<uint> - 考虑在 float2int 中的最大整数位宽(默认 = 64)。
--flto=<value> - 设置 LTO 模式,需要链接器支持。
=full - 将所有输入合并到一个模块中。
=thin - 并行导入和代码生成(比 'full' 快)。
--flto-binary=<file> - 设置链接器 LTO 插件库文件(例如 LLVMgold.so(Unixes)或 libLTO.dylib(Darwin))。
--fno-delete-null-pointer-checks - 将空指针解引用视为定义行为(而不是未定义行为),当优化时。这防止了优化器假设任何解引用的指针一定不为空,并相应地优化掉分支。
--fno-discard-value-names - 不丢弃 LLVM IR 中的值名称。
--fno-plt - 不使用 PLT 进行函数调用。
--force-attribute=<string> - 向函数添加属性。这应该是 'function-name:attribute-name' 的一对,例如 -force-attribute=foo:noinline。此选项可以指定多次。
--force-chr - 为所有函数应用 CHR。
--force-dwarf-frame-section - 始终发出调试帧部分。
--force-fast-cluster - 切换到快速群集算法,牺牲了一些融合机会。
--force-function-specialization - 强制为每个带有常量参数的调用站点进行函数专业化。
--force-fuse-matrix - 强制矩阵指令融合,即使不划算。
--force-hardware-loop-guard - 强制生成循环守卫内在。
--force-hardware-loop-phi - 强制硬件循环计数器通过 phi 更新。
--force-hardware-loops - 强制插入硬件循环内在。
--force-hvx-float - 在 v68 上启用向量浮点指令的代码生成。
--force-import-all - 导入 noinline 属性的函数。
--force-instr-ref-livedebugvalues - 使用基于指令引用的 LiveDebugValues 与普通 DBG_VALUE 输入一起使用。
--force-legal-indexing - 强制所有索引操作对 GlobalISel 组合器合法。
--force-loop-cold-block - 强制从循环中概述冷块。
--force-mips-long-branch - MIPS:将所有分支扩展为长格式。
--force-nested-hardware-loop - 强制允许嵌套硬件循环。
--force-ordered-reductions - 启用具有顺序(严格)FP 归约的循环的向量化。
--force-pgso - 强制进行(基于配置文件的)大小优化。
--force-precise-rotation-cost - 强制使用精确的成本循环旋转策略。
--force-remove-attribute=<string> - 从函数中移除属性。这应该是 'function-name:attribute-name' 的一对,例如 -force-remove-attribute=foo:noinline。此选项可以指定多次。
--force-split-store - 强制拆分存储,不管目标查询说什么。
--force-summary-edges-cold=<value> - 强制所有边缘在函数摘要中变冷。
=none - 无。
=all-non-critical - 所有非关键边缘。
=all - 所有边缘。
--force-target-instruction-cost=<uint> - 覆盖目标的预期指令成本的旗帜,为单个常量值。主要用于获得一致的测试。
--force-target-max-scalar-interleave=<uint> - 覆盖目标的标量循环的最大交错因子的旗帜。
--force-target-max-vector-interleave=<uint> - 覆盖目标的向量化循环的最大交错因子的旗帜。
--force-target-num-scalar-regs=<uint> - 覆盖目标的标量寄存器数量的旗帜。
--force-target-num-vector-regs=<uint> - 覆盖目标的向量寄存器数量的旗帜。
--force-target-supports-scalable-vectors - 假设支持可扩展向量,即使目标不支持它们。此旗帜仅应用于测试。
--force-vector-interleave=<uint> - 设置向量化交错计数。零是自动选择。
--force-vector-width=<uint> - 设置 SIMD 宽度。零是自动选择。
--forget-scev-loop-unroll - 在进行 LoopUnroll 时忘记 SCEV 中的所有内容,而不仅仅是当前顶层循环。这有时更受欢迎,可以减少编译时间。
--forward-switch-cond - 将 switch 条件转发到 phi ops(默认 = false)。
--fp-contract=<value> - 启用激进的形成融合 FP 操作。
=fast - 只要有利可图就融合 FP 操作。
=on - 仅融合 'blessed' FP 操作。
=off - 仅在结果不会受到影响的情况下融合 FP 操作。
--fprofile-generate[=<filename>] - 生成用于收集运行时配置文件的代码,输出到 default.profraw(可以通过 '=<filename>' 或 LLVM_PROFILE_FILE 环境变量覆盖)。
--fprofile-instr-generate[=<filename>] - 生成用于收集运行时配置文件的代码,输出到 default.profraw(可以通过 '=<filename>' 或 LLVM_PROFILE_FILE 环境变量覆盖)。
--fprofile-instr-use=<filename> - 使用配置文件数据进行基于配置文件的优化。
--fprofile-use=<filename> - 使用配置文件数据进行基于配置文件的优化。
--frame-helper-size-threshold=<int> - 概述到框架助手中的最小指令数(默认 = 2)。
--frame-pointer=<value> - 指定帧指针消除优化。
=all - 禁用帧指针消除。
=non-leaf - 禁用非叶子帧的帧指针消除。
=none - 启用帧指针消除。
--freeze-loop-unswitch-cond - 如果启用,将在循环 unswitch 的条件中添加冻结指令,以防止错误编译。
--fs-no-final-discrim - 不在 emit 之前插入 FS-AFDO 鉴别符。
--fs-profile-debug-bw-threshold=<uint> - 仅在源分支权重大于此值时显示调试消息。
--fs-profile-debug-prob-diff-threshold=<uint> - 仅在分支概率大于此值(百分比)时显示调试消息。
--fs-profile-file=<filename> - 流感知配置文件文件名。
--fs-remapping-file=<filename> - 流感知配置文件重映射文件名。
--fs-viewbfi-after - 在 MIR 加载后查看 BFI。
--fs-viewbfi-before - 在 MIR 加载前查看 BFI。
--fsanitize=<checks> - 启用运行时检查各种未定义或可疑行为。
--fsanitize-blacklist=<file> - 将 <file> 添加到 sanitizer 的黑名单文件中。
--fsanitize-coverage=<type> - 指定 -fsanitize 覆盖类型。
--fsanitize-memory-track-origins=<int> - 在 MemorySanitizer 中启用起源跟踪(0=禁用,默认)。
--fsave-optimization-record[=<filename>] - 生成优化记录文件,记录 LLVM 执行的优化。
--fthread-model=<value> - 线程模型。
=global-dynamic - 全局动态 TLS 模型(默认)。
=local-dynamic - 本地动态 TLS 模型。
=initial-exec - 初始执行 TLS 模型。
=local-exec - 本地执行 TLS 模型。
--ftime-trace - 打开时间分析器。根据输出文件名生成基于 JSON 的文件(另见 --ftime-trace-file)。
--ftime-trace-file=<filename> - 指定时间跟踪文件目的地。
--ftime-trace-granularity=<uint> - 时间分析器追踪的最小时间粒度(以微秒为单位)。
--func-specialization-avg-iters-cost=<uint> - 循环平均迭代计数成本。
--func-specialization-max-clones=<uint> - 允许为单个函数专业化的最大克隆数。
--func-specialization-max-iters=<uint> - 运行函数专业化的最大迭代次数。
--func-specialization-on-address - 启用基于全局值地址的函数专业化。
--func-specialization-size-threshold=<uint> - 不要为指令数少于此阈值的函数进行专业化。
--function-sections - 将函数发射到单独的节中。
--function-specialization-for-literal-constant - 启用将字面常量作为参数的函数专业化。
--fuse-matrix - 启用/禁用矩阵指令的融合。
--fuse-matrix-tile-size=<uint> - 使用正方形瓦片进行矩阵指令融合的瓦片大小。
--fuse-matrix-use-loops - 为瓦片生成循环嵌套。
--fvisibility=<value> - 符号的默认可见性。
=default - 对于 Windows 目标,默认情况下隐藏,对于其他目标,如果未标记 'export',则为公共。
=hidden - 仅导出标记为 'export' 的符号。
=public - 导出所有符号。
--fxray-instruction-threshold=<value> - 设置最小函数大小以使用 XRay 进行插桩。
--fxray-instrument - 在函数入口和出口生成 XRay 插桩。
生成调试信息:
-g - 添加符号调试信息。
--gc - 添加符号调试信息,为非 D 调试器优化。
--gline-tables-only - 仅添加行表。
--gcc=<gcc|clang|...> - 用于链接(和外部汇编)的 C 编译器。如果设置了 CC 环境变量,则默认为该变量,否则为 `cc`。
--gcolumn-info - 在行调试信息中包含列号。对于非 MSVC 目标,默认情况下为 true。
--gcov-atomic-counter - 使计数器更新为原子操作。
--gdwarf - 为 MSVC 目标发射 DWARF 调试信息(而不是 CodeView)。
--generate-arange-section - 生成 dwarf aranges。
--generate-merged-base-profiles - 在生成嵌套的上下文敏感配置文件时,始终为具有所有其上下文配置文件合并的函数生成额外的基础配置文件。
--generate-type-units - 生成 DWARF4 类型单元。
--global-isel - 启用 "global" 指令选择器。
--global-isel-abort=<value> - 启用在 "global" 指令选择失败时的中止调用。
=0 - 禁用中止。
=1 - 启用中止。
=2 - 禁用中止,但在失败时发出诊断。
--global-merge-group-by-use - 改进全局合并通道,查看使用情况。
--global-merge-ignore-single-use - 改进全局合并通道,忽略仅单独使用的全局。
--global-merge-max-offset=<uint> - 设置全局合并通道的最大偏移量。
--global-merge-on-const - 启用对常量的全局合并通道。
--global-merge-on-external - 启用对外部链接的全局合并通道。
--gpsize=<uint> - 全局指针寻址大小。默认大小为 8。
--guard-widening-widen-branch-guards - 是否应加宽表示为分支的条件守卫。
--guards-predicate-pass-branch-weight=<uint> - 假设守卫失败的概率是这个值的倒数(默认 = 1 < 20)。
--gvn-hoist-max-bbs=<int> - 在提升位置之间的最大基本块数(默认 = 4,无限制 = -1)。
--gvn-hoist-max-chain-length=<int> - 提升的最大依赖链长度(默认= 10,无限制 = -1)。
--gvn-hoist-max-depth=<int> - 从 BB 开始向上提升指令的最大深度(默认 = 100,无限制 = -1)。
--gvn-max-block-speculations=<uint> - 我们愿意推测的块数(并递归进入),当推断一个值在 GVN 中是否完全可用时(默认 = 600)。
--gvn-max-hoisted=<int> - 提升的最大指令数(默认无限 = -1)。
--gvn-max-num-deps=<uint> - 尝试 Load PRE 的最大依赖数(默认 = 100)。
-h - 帮助的别名。
--hardware-loop-counter-bitwidth=<uint> - 设置循环计数器的位宽。
--hardware-loop-decrement=<uint> - 设置循环减少量。
--hash-based-counter-split - 基于 CFG 哈希重命名 comdat 函数的计数器变量。
--hash-threshold=<uint> - 哈希长于此阈值的符号名称(实验性)。
--help - 显示可用选项(--help-hidden 查看更多)。
--help-hidden - 显示所有可用选项。
--help-list - 显示可用选项列表(--help-list-hidden 查看更多)。
--help-list-hidden - 显示所有可用选项列表。
--hexagon-align-loads - 将未对齐的加载重写为一对对齐的加载。
--hexagon-amode-growth-limit=<int> - 地址模式优化的代码增长限制。
--hexagon-autohvx - 启用 HVX 的循环向量化器。
--hexagon-bit - 位简化。
--hexagon-cext - 启用 Hexagon 常量扩展优化。
--hexagon-cext-limit=<uint> - 最大替换次数。
--hexagon-cext-threshold=<uint> - 触发替换的最小扩展器数量。
--hexagon-check-bank-conflict - 启用检查缓存银行冲突。
--hexagon-commgep - 启用 GEP 指令的 commoning。
--hexagon-disable-args-min-alignment - 禁用在堆栈上传递的参数的最小对齐为 1 的优化。
--hexagon-eif - 启用早期 if-转换。
--hexagon-emit-jt-text - 在函数部分中发出 Hexagon 跳转表。
--hexagon-emit-jump-tables - 控制 Hexagon 目标上的跳转表发射。
--hexagon-emit-lookup-tables - 控制 Hexagon 目标上的查找表发射。
--hexagon-emit-lut-text - 在函数部分中发出 Hexagon 查找表。
--hexagon-enable-branch-prediction - 启用分支预测。
--hexagon-expand-condsets - 早期扩展 MUX。
--hexagon-extract - 生成 "extract" 指令。
--hexagon-fp-elim - 尽可能避免使用 FP。
--hexagon-frame-index-reuse-limit=<uint> - 帧索引消除中重用寄存器的最大数量。
--hexagon-frame-index-search-range=<uint> - 帧索引消除中指令搜索范围的限制。
--hexagon-gen-mux-threshold=<uint> - 谓词定义与两个谓词使用之间最小距离。
--hexagon-gen-pred - 启用将算术操作转换为谓词指令的转换。
--hexagon-hvx-widen=<uint> - 降低阈值(以字节为单位)以加宽到 HVX 向量。
--hexagon-hwloop-preheader - 如果不存在,则向硬件循环添加预头。
--hexagon-initial-cfg-cleanup - 在原子扩展通道之后简化 CFG。
--hexagon-insert - 生成 "insert" 指令。
--hexagon-instsimplify - 启用 instsimplify。
--hexagon-isel-su - 启用检查 SDNode 的单用途状态。
--hexagon-long-calls - 如果存在,则强制/禁用使用长调用。
--hexagon-loop-prefetch - 在 Hexagon 上启用循环数据预取。
--hexagon-loop-range=<uint> - 限制 loopN 指令的范围(仅用于测试)。
--hexagon-loop-resched - 循环重调度。
--hexagon-masked-vmem - 启用 masked 负载/存储器的 HVX。
--hexagon-mux - 启用将条件传输转换为 MUX 指令。
--hexagon-noopt - 禁用后端优化。
--hexagon-opt-spill - 优化spill槽。
--hexagon-opt-vextract - 启用 vextract 优化。
--hexagon-packetize-volatiles - 允许非独奏 packetization 的易失性内存引用。
--hexagon-pred-calls - 考虑调用为可预测的。
--hexagon-sched-inline-asm - 不考虑内联汇编作为调度/packetization 的边界。
--hexagon-shrink-frame - 启用堆栈帧收缩包装。
--hexagon-small-data-threshold=<uint> - sdata 部分中对象的最大大小。
--hexagon-statics-in-small-data - 允许在 .sdata 中的静态变量。
--hexagon-subreg-liveness - 启用子寄存器生命周期跟踪 for Hexagon。
--hexagon-vector-combine - 启用 HVX 向量合并。
--hexagon-vextract-threshold=<uint> - 触发 vextract 替换的阈值。
--hexagon-vlcr-iteration-lim=<int> - 处理循环承载依赖的最大距离。
--hexbit-bitsplit - 生成 bitsplit 指令。
--hexbit-extract - 生成 extract 指令。
--hexbit-keep-tied - 保留绑定操作中的子寄存器。
--hexbit-max-bitsplit=<uint> -
--hexbit-max-extract=<uint> -
--hints-allow-reordering - 允许启用循环提示以在向量化期间重新排序 FP 操作。
--hlir-simplify-limit=<uint> - HLIR 中最大的简化步骤数。
--hoist-cheap-insts - MachineLICM 应该提升即使是便宜的指令。
--hoist-common-insts - 提升公共指令(默认 = false)。
--hoist-const-stores - 提升不变存储。
--homogeneous-prolog-epilog - 为大小优化发出均匀的序言和尾声(默认 = 关闭)。
--hot-callsite-rel-freq=<int> - 在没有配置文件信息的情况下,对于一个调用站点被认为是热的最小块频率,表示为调用者入口频率的倍数。
--hot-callsite-threshold=<int> - 热调用站点的阈值。
--hot-cold-split - 启用热-冷拆分通道。
--hot-cold-static-analysis -
--hotcoldsplit-cold-section-name=<string> - 包含通过热-冷拆分提取的冷函数的区段名称。
--hotcoldsplit-max-params=<int> - 拆分函数的最大参数数量。
--hotcoldsplit-threshold=<int> - 拆分冷代码的基本惩罚(作为 TCC_Basic 的倍数)。
--hsdr-no-mem - 不拆分负载或存储。
--hsdr-split-all - 拆分所有分区。
--huge-size-for-split=<uint> - 可能会在全局拆分中导致高编译时间成本的活范围大小阈值。
--hwasan-experimental-use-page-aliases - 在 HWASan 中使用页面别名。
--hwasan-globals - 仪器化全局。
--hwasan-inline-all-checks - 内联所有检查。
--hwasan-instrument-atomics - 仪器化原子指令(rmw, cmpxchg)。
--hwasan-instrument-byval - 仪器化 byval 参数。
--hwasan-instrument-landing-pads - 仪器化着陆垫。
--hwasan-instrument-mem-intrinsics - 仪器化内存内在。
--hwasan-instrument-personality-functions - 仪器化人格函数。
--hwasan-instrument-reads - 仪器化读取指令。
--hwasan-instrument-stack - 仪器化堆栈(alloca)。
--hwasan-instrument-with-calls - 通过回调仪器化读取和写入。
--hwasan-instrument-writes - 仪器化写入指令。
--hwasan-kernel - 启用 KernelHWAddressSanitizer 仪器化。
--hwasan-mapping-offset=<ulong> - HWASan 阴影映射偏移量 [实验性]。
--hwasan-match-all-tag=<int> - 不报告通过具有此标签的指针进行的不良访问。
--hwasan-memory-access-callback-prefix=<string> - 内存访问回调的前缀。
--hwasan-record-stack-history - 在线程本地环形缓冲区中记录带有标记分配的堆栈帧。
--hwasan-recover - 启用恢复模式(继续错误后执行)。
--hwasan-uar-retag-to-zero -在从函数返回之前清除 alloca 标签,以允许非仪器化和仪器化函数调用混合。当设置为 false 时,在从函数返回之前重新标记 allocas,以检测使用后返回。
--hwasan-use-after-scope - 在函数内检测使用后超出作用域。
--hwasan-use-short-granules - 在 allocas 和概述检查中使用短粒度。
--hwasan-use-stack-safety - 使用栈安全分析结果。
--hwasan-with-ifunc - 通过 ifunc 全局访问动态阴影,支持的平台。
--hwasan-with-tls - 通过线程本地指针访问动态阴影,支持的平台。
--hwloop-spec-preheader - 允许推测 preheader 指令。
-i[=<pattern>] - 包含导入模块在编译中。
--icp-call-only - 仅针对调用指令运行间接调用提升。
--icp-csskip=<uint> - 跳过此编号的调用站点,用于此编译。
--icp-cutoff=<uint> - 此编译中的最大提升数。
--icp-dumpafter - 转换发生后转储 IR。
--icp-invoke-only - 仅针对 invoke 指令运行间接调用提升。
--icp-lto - 在 LTO 模式下运行间接调用提升。
--icp-max-annotations=<uint> - 单个间接调用调用站点的最大注释数。
--icp-max-prom=<uint> - 单个间接调用调用站点的最大提升数。
--icp-remaining-percent-threshold=<uint> - 剩余未提升间接调用计数的百分比阈值,用于提升。
--icp-samplepgo - 在 SamplePGO 模式下运行间接调用提升。
--icp-total-percent-threshold=<uint> - 总计数的百分比阈值,用于提升。
--ifcvt-branch-fold -
--ifcvt-fn-start=<int> -
--ifcvt-fn-stop=<int> -
--ifcvt-limit=<int> -
--ignore - 忽略不支持的指令。
--ignore-bb-reg-pressure -
--ignore-xcoff-visibility - 不为 AIX OS 的汇编发出可见性属性,或在 XCOFF 目标文件中给所有符号 'unspecified' 可见性。
--imp-null-check-page-size=<int> - 目标的页面大小(以字节为单位)。
--imp-null-max-insts-to-consider=<uint> - 考虑提升(该算法是二次的)的指令的最大数量。
--import-all-index - 导入索引中的所有外部函数。
--import-cold-multiplier=<N> - 乘以 'import-instr-limit' 阈值,用于冷调用站点。
--import-constants-with-refs - 导入带有引用的常量全局变量。
--import-critical-multiplier=<x> - 乘以 'import-instr-limit' 阈值,用于关键调用站点。
--import-cutoff=<N> - 只导入前 N 个函数,如果 N>=0(默认 -1)。
--import-full-type-definitions - 为 ThinLTO 导入完整的类型定义。
--import-hot-evolution-factor=<x> - 随着我们导入函数,将 'import-instr-limit' 阈值乘以此因子,然后再处理新导入的函数。
--import-hot-multiplier=<x> - 乘以 'import-instr-limit' 阈值,用于热调用站点。
--import-instr-evolution-factor=<x> - 随着我们导入函数,将 'import-instr-limit' 阈值乘以此因子,然后再处理新导入的函数。
--import-instr-limit=<N> - 只导入少于 N 条指令的函数。
--incremental-linker-compatible - 当与 filetype=obj 一起使用时,发出可以与增量链接器一起使用的 object 文件。
--indvars-post-increment-ranges - 在 IndVarSimplify 中使用后增量控制依赖范围。
--indvars-predicate-loops - 在只读循环中预测条件。
--indvars-widen-indvars - 允许加宽 indvars 以消除 s/zext。
--info-output-file=<filename> - 附加 -stats 和 -timer 输出的文件。
--initial-synthetic-count=<int> - 合成入口计数的初始值。
--inline-call-penalty=<int> - 每次调用站点内联时应用的调用惩罚。
--inline-caller-superset-nobuiltin - 允许在调用者具有超集的 nobuiltin 属性时内联。
--inline-cold-callsite-threshold=<int> - 内联冷调用站点的阈值。
--inline-cost-full - 即使成本超过阈值,也要计算调用站点的完整内联成本。
--inline-deferral - 启用延迟内联。
--inline-deferral-scale=<int> - 限制内联延迟的成本。
--inline-enable-cost-benefit-analysis - 启用内联器的成本效益分析。
--inline-enable-priority-order - 启用内联器的优先顺序。
--inline-remark-attribute - 启用添加内联备注属性到内联处理但决定不内联的调用站点。
--inline-savings-multiplier=<int> - 乘以循环节省的周期数,内联时使用。
--inline-size-allowance=<int> - 内联的最大调用者大小,即使没有足够的循环节省也会被内联。
--inline-synthetic-count=<int> - 内联函数的初始合成入口计数。
--inline-threshold=<int> - 控制执行的内联量(默认 = 225)。
--inlinecold-threshold=<int> - 内联具有冷属性的函数的阈值。
--inlinedefault-threshold=<int> - 默认执行的内联量。
--inlinehint-threshold=<int> - 内联具有内联提示的函数的阈值。
--inliner-function-import-stats=<value> - 启用导入函数的内联器统计信息。
=basic - 基本统计。
=verbose - 打印每个内联函数的统计信息。
--insert-all0 -
--insert-const -
--insert-dist-cutoff=<uint> - Vreg 距离截止值,用于插入生成。
--insert-has0 -
--insert-max-ifmap=<uint> - IFMap 的最大大小。
--insert-max-orl=<uint> - OrderedRegisterList 的最大大小。
--insert-timing - 启用插入生成的计时。
--insert-timing-detail - 启用插入生成的详细计时。
--insert-vreg-cutoff=<uint> - Vreg# 截止值,用于插入生成。
--instcombine-code-sinking - 启用代码下沉。
--instcombine-guard-widening-window=<uint> - 绕过查找另一个守卫的指令窗口宽度。
--instcombine-infinite-loop-threshold=<uint> - 认为无限循环的指令组合迭代次数。
--instcombine-lower-dbg-declare -
--instcombine-max-iterations=<uint> - 限制指令组合迭代的最大次数。
--instcombine-max-num-phis=<uint> - 在 intptr/ptrint 折叠中处理的最大 phis 数量。
--instcombine-maxarray-size=<uint> - 在组合时考虑的最大数组大小。
--instcombine-negator-enabled - 我们是否尝试下沉否定?
--instcombine-negator-max-depth=<uint> - 在尝试检查否定下沉的可行性时的最大查找深度。
--instrprof-atomic-counter-update-all - 使所有配置文件计数器更新为原子(仅用于测试)。
--interleave-loops - 启用循环交错。
--interleave-small-loop-scalar-reduction - 启用交错以暴露小迭代计数循环中的 ILP。
--internalize-public-api-file=<filename> - 包含要保留的符号名称列表的文件。
--internalize-public-api-list=<list> - 要保留的符号名称列表。
--intra-scc-cost-multiplier=<int> - 内联成本乘数,用于乘以新的内部 SCC 调用,其中原始调用已经是内部 SCC(不适用于原始调用已经是内部 SCC 的情况)。这可能会在多次内联中累积(例如,如果一个调用站点已经有了成本乘数,并且它的一个内联调用也适用此乘数,那么内联调用将具有原始乘数乘以内部 SCC 成本乘数的值)。这是为了防止通过子 SCC 进行大量内联,这可能会导致可怕的编译时间。
--ir-outliner - 启用 ir 概述器通道。
--irce-allow-narrow-latch - 如果设置为 true,IRCE 可以消除具有狭窄 latch 条件的循环中的宽范围检查。
--irce-allow-unsigned-latch -
--irce-loop-size-cutoff=<uint> -
--irce-min-runtime-iterations=<uint> -
--irce-print-changed-loops -
--irce-print-range-checks -
--irce-skip-profitability-checks -
--isel-rebalance-addr - 重新平衡地址计算树以改善指令选择。
--iterative-bfi-max-iterations-per-block=<uint> - 迭代推断:每个块更新的最大迭代次数。
--iterative-bfi-precision=<number> - 迭代推断:收敛精度;较小的值通常会导致更好的结果,但会降低运行时。
--iterative-counter-promotion - 允许跨整个循环嵌套进行计数器提升。
--join-globalcopies - 合并跨越块的副本(默认为子目标)。
--join-liveintervals - 合并副本(默认为 true)。
--join-splitedges - 合并拆分边缘上的副本(默认为子目标)。
--jump-inst-cost=<uint> - 跳转指令的成本。
--jump-is-expensive - 不要创建额外的分支来拆分比较逻辑。
--jump-table-density=<uint> - 构建正常函数中的跳转表的最小密度。
--jump-threading-across-loop-headers - 允许 JumpThreading 跨过循环头。
--jump-threading-freeze-select-cond - 展开选择时冻结条件。
--jump-threading-implication-search-threshold=<uint> - 搜索更强条件以用于穿过较弱条件的前驱数。
--jump-threading-threshold=<uint> - 为跳转线程复制的块的最大大小。
--keep-inline-advisor-for-printing -
--keep-loops - 保留规范循环结构(默认 = true)。
--lanai-constant-mul-threshold=<int> - 生成常量乘法指令时的最大指令数,而不是调用库函数 [默认 = 14]。
--lanai-nop-delay-filler - 用 NOP 填充 Lanai 延迟槽。
--lanai-ssection-threshold=<uint> - 小数据和 bss 部分的阈值大小(默认 = 0)。
--large-interval-freq-threshold=<uint> - 对于一个大区间,如果它与其他活区间合并的次数多于阈值,停止其合并以控制编译时间。
--large-interval-size-threshold=<uint> - 如果 valnos 大小的区间大于阈值,则视为大区间。
--late-remat-update-threshold=<uint> - 在重新材料化用于复制的指令时,如果 def 指令有其他复制使用需要重新材料化,延迟多个单独的活区间更新工作,并在所有这些重新材料化完成后一次性完成。这将节省大量重复的工作。
--lcr-max-depth=<uint> - 最后机会重新着色的深度。
--lcr-max-interf=<uint> - 最后机会重新着色时同时考虑的最大干扰数量。
--ldstmemcpy-glue-max=<int> - 复制粘贴 ld/st 的数量限制。
--lib - 创建静态库。
--licm-control-flow-hoisting - 启用在 LICM 中的控制流(和 PHI)提升。
--licm-max-num-uses-traversed=<uint> - 用于识别循环中 load 独立性的使用数的最大值(默认 = 8)。
--licm-mssa-max-acc-promotion=<uint> - [LICM & MemorySSA] 当 LICM 中的 MSSA 被禁用时,此选项无效。当 LICM 中的 MSSA 被启用时,这是允许出现在循环中的访问的最大数量,以便启用内存提升。
--licm-mssa-optimization-cap=<uint> - 在路径情况下,启用 LICM 中的不精确性,以换取更快的编译。限制 MemorySSA 破坏调用的次数。
--licm-versioning-invariant-threshold=<number> - LoopVersioningLICM 的最小允许百分比,每个循环中的可能不变指令。
--licm-versioning-max-depth-threshold=<uint> - LoopVersioningLICM 的最大允许循环嵌套/深度阈值。
--likely-branch-weight=<uint> - 可能被执行的分支的权重(默认 = 2000)。
--limit-float-precision=<uint> - 为某些浮点库调用生成低精度内联序列。
--link-debuglib - 链接调试库的别名。
--link-defaultlib-debug - 链接调试版本的默认库。
--link-defaultlib-shared - 链接默认库的共享版本。在生成共享库(-shared)时默认为 true。
--link-internally - 使用内部 LLD 进行链接。
--link-no-cpp - 禁用与 C++ 标准库的自动链接。
--linker=<lld-link|lld|gold|bfd|...> - 设置要使用的链接器。明确设置为 ''(空)时,防止 LDC 向 'cc' 传递 `-fuse-ld`。
--live-debug-variables - 启用活动调试变量通道。
--livedebugvalues-input-bb-limit=<uint> - 在 DBG_VALUE 限制适用之前的最大输入基本块数。
--livedebugvalues-input-dbg-value-limit=<uint> - 支持的输入 DBG_VALUE 指令的最大数量。
--livedebugvalues-max-stack-slots=<uint> - livedebugvalues-stack-ws-limit。
--llvm-color - 在输出中使用颜色(默认 = 自动检测)。
--llvm-ffast-math - 启用快速数学处理。
--llvm-float-abi=<value> - 选择浮点 ABI 类型。
=default - 目标默认浮点 ABI 类型。
=soft - 软浮点 ABI(意味着 -soft-float)。
=hard - 硬浮点 ABI(使用 FP 寄存器)。
--locally-hot-callsite-threshold=<int> - 本地热调用站点的阈值。
--loop-deletion-enable-symbolic-execution - 通过符号执行第一次迭代尝试证明 backedge 永远不会被取,来断开 backedge。
--loop-distribute-non-if-convertible - 是否分发到可能无法通过循环向量化器进行 if 转换的循环中。
--loop-distribute-scev-check-threshold=<uint> - 循环分发允许的最大 SCEV 检查数。
--loop-distribute-scev-check-threshold-with-pragma=<uint> - 循环分发对于标记有 #pragma loop distribute(enable) 的循环允许的最大 SCEV 检查数。
--loop-distribute-verify - 打开 DominatorTree 和 LoopInfo 验证后的循环分发。
--loop-flatten-assume-no-overflow - 假设两个迭代行程计数的乘积永远不会溢出。
--loop-flatten-cost-threshold=<uint> - 由于循环展平而重复指令的成本限制。
--loop-flatten-widen-iv - 放宽循环引数变量,如果可能,使溢出检查不会拒绝展平。
--loop-fusion-dependence-analysis=<value> - 循环融合应使用哪种依赖分析?
=scev - 使用标量进化接口。
=da - 使用依赖分析接口。
=all - 使用所有可用的分析。
--loop-fusion-peel-max-count=<uint> - 从循环中剥离的最大迭代次数,以便融合可以发生。
--loop-interchange-threshold=<int> - 如果你获得的收益超过这个数字,就进行交换。
--loop-load-elimination-scev-check-threshold=<uint> - 循环加载消除允许的最大 SCEV 检查数。
--loop-predication-enable-count-down-loop -
--loop-predication-enable-iv-truncation -
--loop-predication-latch-probability-scale=<number> - 阈值的缩放因子。值应大于 1。较低的值将被忽略。
--loop-predication-predicate-widenable-branches-to-deopt - 是否我们应该预测可加宽的分支守卫以使块退化。
--loop-predication-skip-profitability-checks -
--loop-prefetch-writes - 预取写地址。
--loop-rotate-multi - 允许多次循环旋转以达到更好的出口。
--loop-to-cold-block-ratio=<uint> - 如果(循环频率 / 块频率)大于这个比率,则从循环链中概述循环块。
--loop-unswitch-memoryssa-threshold=<uint> - 在部分 unswitching 分析期间探索的最大内存使用数。
--loop-unswitch-threshold=<uint> - 要 unswitch 的最大循环大小。
--loop-vectorize-with-block-frequency - 启用使用块频率分析来访问 PGO 启发式,以在冷区域最小化代码增长,并在热区域更具攻击性。
--loop-version-annotate-no-alias - 为通过 memchecks 消除的指令添加 no-alias 注释。
--lower-interleaved-accesses - 启用降低交错访问到内在的指令。
--lowertypetests-avoid-reuse - 尝试避免使用别名重用字节数组地址。
--lowertypetests-drop-type-tests - 简单地丢弃类型测试假设序列。
--lowertypetests-read-summary=<string> - 在运行通道之前,从给定的 YAML 文件中读取摘要。
--lowertypetests-summary-action=<value> - 运行通道时对摘要的处理方式。
=none - 什么也不做。
=import - 从摘要和全局导入 typeid 解析。
=export - 将 typeid 解析导出到摘要和全局。
--lowertypetests-write-summary=<string> - 在运行通道后,将摘要写入给定的 YAML 文件。
--lowmem - 启用 LDC 前端的垃圾收集器。这减少了编译器的内存需求,但增加了编译时间。
--lsr-complexity-limit=<uint> - LSR 搜索空间复杂度限制。
--lsr-exp-narrow - 使用期望的寄存器数量缩小 LSR 复杂解决方案。
--lsr-filter-same-scaled-reg - 通过过滤具有相同 ScaledReg 和 Scale 的非最优公式来缩小 LSR 搜索空间。
--lsr-insns-cost - 将指令计数添加到 LSR 成本模型中。
--lsr-preferred-addressing-mode=<value> - 覆盖目标的首选寻址模式的标志。
=none - 不喜欢任何寻址模式。
=preindexed - 喜欢预索引寻址模式。
=postindexed - 喜欢后索引寻址模式。
--lsr-setupcost-depth-limit=<uint> - LSRs 设置成本的递归深度限制。
--lto-embed-bitcode=<value> - 在 LTO 生成的对象文件中嵌入 LLVM 位码。
=none - 不嵌入。
=optimized - 在所有优化后嵌入。
=post-merge-pre-opt - 在合并后但优化前嵌入。
--m32 - 32 位目标。
--m64 - 64 位目标。
--mabi=<string> - 要从后端目标的 ABI 名称。
--machine-combiner-dump-subst-intrs - 转储所有替换的 intrs。
--machine-combiner-inc-threshold=<uint> - 增量深度计算将用于具有更多指令的基本块。
--machine-combiner-verify-pattern-order - 验证生成的模式是否按延迟增加排序。
--machine-outliner-reruns=<uint> - 在初始概述之后重新运行概述器的次数。
--machine-sink-bfi - 使用块频率信息查找后继以下沉。
--machine-sink-load-blocks-threshold=<uint> - 如果直线中的块号高于此阈值,则不要尝试查找别名存储以下沉负载。
--machine-sink-load-instrs-threshold=<uint> - 如果路径中的块号高于此阈值,则不要尝试查找别名存储以下沉负载。
--machine-sink-loop-limit=<uint> - 考虑循环下沉的最大指令数。
--machine-sink-split - 在机器下沉期间拆分关键边缘。
--machine-sink-split-probability-threshold=<uint> - 单指令关键边缘拆分的概率阈值。如果分支阈值高于此阈值,我们允许最多 1 个指令的推测执行,以避免拆分关键边缘。
--main - 添加默认 main(),如果尚未存在(例如,用于单元测试)。
--makedeps[=<filename>] - 将模块依赖项以 Makefile 兼容格式写入 <filename>/stdout(仅导入)。
--mandatory-inlining-first - 在执行内联之前,首先执行模块范围内的强制内联。
--march=<string> - 生成代码的架构(参见 --version)。
--mark-data-regions - 标记代码段跳转表数据区域。
--matrix-allow-contract - 允许使用 FMAs(如果可用且有利可图)。这可能导致不同的结果,因为舍入误差较小。
--matrix-default-layout=<value> - 设置默认矩阵布局。
=column-major - 使用列主布局。
=row-major - 使用行主布局。
--mattr=<a1,+a2,-a3,...> - 目标特定属性(-mattr=help 查看详情)。
--max-bytes-for-alignment=<uint> - 强制在填充对齐时允许的最大字节数。
--max-counter-promotions=<int> - 允许的最大计数器提升数。
--max-counter-promotions-per-loop=<uint> - 每个循环允许的最大计数器提升数,以避免过多增加寄存器压力。
--max-deopt-or-unreachable-succ-check-depth=<uint> - 设置检查一个基本块是否由一个终止去优化调用的块或以不可达终止的块跟随的最大路径长度。
--max-dependences=<uint> - 循环访问分析收集的最大依赖数(默认 = 100)。
--max-heap-to-stack-size=<int> -
--max-hsdr=<uint> - 最大拆分分区数。
--max-inst-checked-for-throw-during-inlining=<uint> - 分析内联体中可能抛出异常的最大指令数。
--max-interleave-group-factor=<uint> - 最大交错访问组因子(默认 = 8)。
--max-jump-table-size=<uint> - 设置跳转表的最大大小。
--max-loads-per-memcmp=<uint> - 设置在展开 memcmp 时使用的最大负载数。
--max-loads-per-memcmp-opt-size=<uint> - 设置在 -Os/Oz 时展开 memcmp 使用的最大负载数。
--max-nested-scalar-reduction-interleave=<uint> - 在嵌套循环中交错标量约简时使用的最大交错数。
--max-num-inline-blocks=<uint> - 要部分内联的最大块数。
--max-num-inst-between-tfr-and-nv-store=<uint> - tfr 喂养的存储我们认为仍然是新ifiable 的最大距离。
--max-partial-inlining=<int> - 最大部分内联数。默认值为无限。
--max-prefetch-iters-ahead=<uint> - 要预取的最大迭代次数。
--max-registers-for-gc-values=<uint> - 允许通过 GC 指针元参数传递的最大 VRegs 数量。
--max-sched-reorder=<int> - 在 sched:list-ilp 中允许的指令数,超出关键路径的提前量。
--max-speculation-depth=<uint> - 在计算推测执行指令的成本时,限制最大递归深度。
--max-store-memcpy=<int> - 最大的 memcpy 存储数。
--max-store-memcpy-Os=<int> - 最大的 memcpy 存储数。
--max-store-memmove=<int> - 最大的 memmove 存储数。
--max-store-memmove-Os=<int> - 最大的 memmove 存储数。
--max-store-memset=<int> - 最大的 memset 存储数。
--max-store-memset-Os=<int> - 最大的 memset 存储数。
--max-uses-for-sinking=<uint> - 不要下沉具有太多使用的指令。
--mc-relax-all - 在与 filetype=obj 一起使用时,放宽所有修正。
--mcabac - tbd。
--mcpu=<cpu-name> - 针对特定的 cpu 类型(-mcpu=help 查看详情)。
--mdcompute-file-prefix=<prefix> - 前缀,附加到生成的内核文件之前。
--mdcompute-targets=<targets> - 为指定的 DCompute 目标列表生成代码。使用 'ocl-xy0' 表示 OpenCL x.y,使用 'cuda-xy0' 表示 CUDA CC x.y。
--meabi=<value> - 设置 EABI 类型(默认取决于 triple):
=default - 三重默认 EABI 版本。
=4 - EABI 版本 4。
=5 - EABI 版本 5。
=gnu - EABI GNU。
--membedded-data - MIPS:尽可能在以下部分中分配变量:.rodata、.sdata、.data。
--memcmp-num-loads-per-block=<uint> - 仅与零比较时,内联展开 memcmp 的每个基本块的负载数。
--memdep-block-number-limit=<uint> - 在内存依赖分析期间要扫描的块数(默认 = 1000)。
--memdep-block-scan-limit=<uint> - 在内存依赖分析中扫描一个块中的指令数(默认 = 100)。
--memop-max-annotations=<uint> - 单个 memopintrinsic 的最大精确值注释数。
--memop-value-prof-max-opt-size=<uint> - 优化 memop 大小 <= 此值。
--memory-check-merge-threshold=<uint> - 在尝试合并运行时内存检查时,进行的比较的最大数量。(默认 = 100)
--memprof-debug=<int> - 调试。
--memprof-debug-func=<string> - 调试函数。
--memprof-debug-max=<int> - 调试最大指令数。
--memprof-debug-min=<int> - 调试最小指令数。
--memprof-guard-against-version-mismatch - 防守编译器/运行时版本不匹配。
--memprof-instrument-atomics - 仪器化原子指令(rmw, cmpxchg)。
--memprof-instrument-reads - 仪器化读取指令。
--memprof-instrument-stack - 仪器化标量堆栈变量。
--memprof-instrument-writes - 仪器化写入指令。
--memprof-mapping-granularity=<int> - memprof 阴影映射的粒度。
--memprof-mapping-scale=<int> - memprof 阴影映射的比例。
--memprof-memory-access-callback-prefix=<string> - 内存访问回调的前缀。
--memprof-use-callbacks - 使用回调而不是内联仪器化序列。
--memssa-check-limit=<uint> - MemorySSA 将考虑尝试走过的存储/phis 的最大数量(默认 = 100)。
--mergefunc-preserve-debug-info - 在 thunk 转换时保留调试信息。
--mergefunc-sanity=<uint> - 合并函数通道的模块中可以使用的函数数量。'0' 禁用此检查。仅在使用 '-debug' 键时有效。
--mergefunc-use-aliases - 允许 mergefunc 创建别名。
--merror-missing-parenthesis - 缺少括号周围的错误。
--merror-noncontigious-register - 非连续寄存器名称的错误。
--mextern-sdata - MIPS:使用 gp_rel 为当前对象未定义的数据。
--mfix4300 - 启用 VR4300 mulmul 错误修正。
--mfs-count-threshold=<uint> - 块必须执行的最小次数才能被保留。
--mfs-psi-cutoff=<uint> - 用于确定冷块的百分比概要文件截止。
--mgpopt - 启用 MIPS 小数据项的 gp 相对寻址。
--mhvx - 启用 Hexagon Vector eXtensions。
--mhvx=<value> - 启用 Hexagon Vector eXtensions。
=v60 - 为 HVX v60 构建。
=v62 - 为 HVX v62 构建。
=v65 - 为 HVX v65 构建。
=v66 - 为 HVX v66 构建。
=v67 - 为 HVX v67 构建。
=v68 - 为 HVX v68 构建。
=v69 - 为 HVX v69 构建。
--mhvx-ieee-fp - 启用 HVX IEEE 浮点扩展。
--mhwmult=<value> - MSP430 的硬件乘法器使用模式。
=none - 不使用硬件乘法器。
=16bit - 使用 16 位硬件乘法器。
=32bit - 使用 32 位硬件乘法器。
=f5series - 使用 F5 系列硬件乘法器。
--min-block-execution=<uint> - 考虑其 BranchProbabilityInfo 有效的最小块执行次数。
--min-ctr-loop-threshold=<uint> - 常量行程计数小于此值的循环将不使用计数寄存器。
--min-jump-table-entries=<uint> - 设置跳转表的最小条目数。
--min-prefetch-stride=<uint> - 添加预取的最小步长。
--min-region-size-ratio=<number> - 每个轮廓候选区域与原始函数的相对大小的最小比率。
--minimize-addr-in-v5=<value> - 总是使用 DW_AT_ranges 在 DWARFv5 中,只要它允许更多的地址池条目共享以减少重定位/对象大小。
=Default - 默认地址最小化策略。
=Ranges - 如果允许使用 pre-existing 基地址的连续范围,则使用 rnglists。
=Expressions - 对于任何具有先前基地址地址的地址,使用 exprloc addrx+offset 表达式。
=Form - 对于任何具有先前基地址地址的地址,使用 addrx+offset 扩展形式。
=Disabled - 其他。
--minimum-jump-tables=<int> - 设置最小跳转表。
--mips-align-constant-islands - 对齐代码中的常量岛。
--mips-compact-branches=<value> - MIPS 特定:紧凑分支策略。
=never - 尽可能不使用紧凑分支。
=optimal - 在适当的地方使用紧凑分支(默认)。
=always - 尽可能使用紧凑分支。
--mips-constant-islands-no-load-relaxation - 不放松到长加载 - 出于测试目的。
--mips-constant-islands-small-offset=<uint> - 为了测试目的,使小偏移量为此数量。
--mips-erase-gp-opnd - 擦除 GP 操作数。
--mips-fix-global-base-reg - 总是使用 $gp 作为全局基址寄存器。
--mips-jalr-reloc - MIPS:在 jalr 上发出 R_{MICRO}MIPS_JALR 重定位。
--mips-load-target-from-got - 从 GOT 加载目标地址。
--mips-mixed-16-32 - 允许在单个输出文件中混合 Mips16 和 Mips32 代码。
--mips-os16 - 编译所有不使用浮点的函数为 Mips 16。
--mips-round-section-sizes - 将区段大小向上舍入到区段对齐。
--mips-ssection-threshold=<uint> - 小数据和 bss 区段阈值大小(默认 = 8)。
--mips-tail-calls - MIPS:允许尾调用。
--mips16-constant-islands - 启用 mips16 常量岛。
--mips16-dont-expand-cond-pseudo - 不展开 Mips 16 的条件移动相关伪指令。
--mips16-hard-float - 启用 mips16 硬浮点。
--mips32-function-mask=<string> - 强制函数为 mips32。
--mir-debug-loc - 打印 MIR 调试位置。
--mir-strip-debugify-only - 应该 mir-strip-debug 仅从已调试模块中剥离调试信息,默认情况下。
--mir-vreg-namer-use-stable-hash - 使用稳定哈希为 MIR VReg 重命名。
--misched=<value> - 要使用的机器指令调度器。
=ppc-postra - 运行 PowerPC PostRA 特定调度器。
=ppc-prera - 运行 PowerPC PreRA 特定调度器。
=hexagon - 运行 Hexagon 的自定义调度器。
=gcn-ilp - 运行 GCN 迭代调度器,用于 ILP 调度(实验性)。
=gcn-minreg - 运行 GCN 迭代调度器,用于最小寄存器使用(实验性)。
=gcn-max-occupancy-experimental - 运行 GCN 调度器以最大化占用率(实验性)。
=gcn-max-occupancy - 运行 GCN 调度器以最大化占用率。
=si - 运行 SI 的自定义调度器。
=default - 使用目标的默认调度器选择。
=converge - 标准收敛调度器。
=ilpmax - 为最大 ILP 调度。
=ilpmin - 为最小 ILP 调度。
=r600 - 运行 R600 的自定义调度器。
--misched-bottomup - 强制自下而上的列表调度。
--misched-cluster - 启用 memop 聚类。
--misched-cyclicpath - 启用循环关键路径分析。
--misched-dcpl - 将关键路径长度打印到 stdout。
--misched-fusion - 启用调度以进行宏融合。
--misched-limit=<uint> - 将就绪列表限制为 N 条指令。
--misched-postra - 在 regalloc 后运行 MachineScheduler(与 preRA 调度无关)。
--misched-regpressure - 启用寄存器压力调度。
--misched-topdown - 强制自上而下的列表调度。
--misched-verbose-level=<uint> -
--misfetch-cost=<uint> - 由于跳转比较而产生的指令 misfetch 的成本模型,其成本为零。
--mixin=<filename> - 扩展并保存 mixins 到 <filename>。
--mlocal-sdata - MIPS:使用 gp_rel 为对象本地数据。
--mno-check-zero-division - MIPS:不要为整数除以零陷入陷阱。
--mno-compound - 禁用为 Hexagon 禁用复合指令的查找。
--mno-fixup - 禁用为 Hexagon 禁用已解析重定位的修复。
--mno-hvx - 禁用 Hexagon Vector eXtensions。
--mno-ldc1-sdc1 - 将 double 精度的 load 和 store 展开为其单精度对应物。
--mno-pairing - 禁用为 Hexagon 禁用双工指令的查找。
--mno-sort-sda - 禁用小数据区排序。
--module-inline-enable-priority-order - 启用模块内联器的优先顺序。
--module-summary-dot-file=<filename> - 发射新摘要的 dot 图的文件。
--msan-and-mask=<ulong> - 定义自定义 MSan AndMask。
--msan-check-access-address - 报告通过已中毒阴影的指针进行的访问。
--msan-check-constant-shadow - 插入检查常量阴影值的检查。
--msan-disable-checks - 应用 no_sanitize 到整个文件。
--msan-dump-strict-instructions - 打印出具有默认严格语义的指令。
--msan-eager-checks - 在函数调用边界检查参数和返回值。
--msan-handle-asm-conservative - 保守处理内联汇编。
--msan-handle-icmp - 传播阴影通过 ICmpEQ 和 ICmpNE。
--msan-handle-icmp-exact - 精确处理关系整数 ICmp。
--msan-handle-lifetime-intrinsics - 尽可能,在作用域开始时对作用域变量进行中毒(较慢,但更精确)。
--msan-instrumentation-with-call-threshold=<int> - 如果正在仪器化的函数需要多于此数字的检查和 origin stores,则使用回调而不是内联检查(-1 表示永远不使用回调)。
--msan-keep-going - 在报告 UMR 后继续进行。
--msan-kernel - 启用 KernelMemorySanitizer 仪器化。
--msan-origin-base=<ulong> - 定义自定义 MSan OriginBase。
--msan-poison-stack - 毒化未初始化的堆栈变量。
--msan-poison-stack-pattern=<int> - 使用给定的模式毒化未初始化的堆栈变量。
--msan-poison-stack-with-call - 通过调用毒化未初始化的堆栈变量。
--msan-poison-undef - 毒化未定义的 temps。
--msan-shadow-base=<ulong> - 定义自定义 MSan ShadowBase。
--msan-track-origins=<int> - 跟踪被毒化的内存的起源(分配站点)。
--msan-with-comdat - 将 MSan 构造函数放置在 comdat 部分。
--msan-xor-mask=<ulong> - 定义自定义 MSan XorMask。
--mscrtlib=<libcmt[d]|msvcrt[d]> - 链接的 MS C 运行时库。
--msp430-branch-select - 展开超出范围的分支。
--msp430-no-legal-immediate - 启用非法立即数(仅用于测试目的)。
--mtriple=<string> - 覆盖目标三元组。
--mul-constant-optimization - 用更有效的指令(如 SHIFT、LEA 等)替换 'mul x, Const'。
--mv=<package.module=<filespec>> - 使用 <filespec> 作为 <package.module> 的源文件。
--mv5 - 为 Hexagon V5 构建。
--mv55 - 为 Hexagon V55 构建。
--mv60 - 为 Hexagon V60 构建。
--mv62 - 为 Hexagon V62 构建。
--mv65 - 为 Hexagon V65 构建。
--mv66 - 为 Hexagon V66 构建。
--mv67 - 为 Hexagon V67 构建。
--mv67t - 为 Hexagon V67T 构建。
--mv68 - 为 Hexagon V68 构建。
--mv69 - 为 Hexagon V69 构建。
--mve-max-interleave-factor=<uint> - MVE VLDn 生成的最大交错因子。
--mwarn-missing-parenthesis - 警告缺少括号周围的寄存器名称。
--mwarn-noncontigious-register - 警告不连续的寄存器名称。
--mwarn-sign-mismatch - 警告有符号和无符号值不匹配。
--no-discriminators - 禁用生成鉴别器信息。
--no-dwarf-ranges-section - 禁用发射 .debug_ranges 部分。
--no-integrated-as - 禁用集成汇编。
--no-pgo-warn-mismatch - 使用此选项打开/关闭有关配置文件不匹配的警告。
--no-pgo-warn-mismatch-comdat - 该选项用于打开/关闭有关 comdat 函数的哈希不匹配的警告。
--no-phi-elim-live-out-early-exit - 如果 isLiveOutPastPHIs 返回 true,则不使用早期退出。
--no-stack-coloring - 禁用堆栈着色。
--no-stack-slot-sharing - 抑制堆栈着色期间的槽共享。
--no-type-check - 抑制类型错误(Wasm)。
--no-warn-sample-unused - 使用此选项打开/关闭有关具有样本但没有调试信息以使用这些样本的函数的警告。
--no-x86-call-frame-opt - 避免优化 x86 调用帧以减小大小。
--no-xray-index - 不发射 xray_fn_idx 部分。
--noasm - 禁止使用内联汇编器。
--nodefaultlib - 不隐式添加默认库进行链接。
--nogc - 不允许生成隐式垃圾收集器调用的代码。
--non-global-value-max-name-size=<uint> - 非全局值名称的最大大小。
--nozero-initialized-in-bss - 不将零初始化的符号放入 bss 部分。
--number-scavenger-slots=<uint> - 设置清除器槽数。
--nvj-count=<int> - 最大转换为 New Value Jump 的谓词跳数。
--nvptx-fma-level=<uint> - NVPTX 特定:FMA 收缩(0:不要这样做 1:这样做 2:积极地这样做)。
--nvptx-no-f16-math - NVPTX 特定:禁用 f16 "math ops 的生成。
--nvptx-prec-divf32=<int> - NVPTX 指定:0 使用 div.approx,1 使用 div.full,2 使用符合 IEEE 的 F32 div.rnd(如果可用)。
--nvptx-prec-sqrtf32 - NVPTX 特定:0 使用 sqrt.approx,1 使用 sqrt.rn。
--nvptx-sched4reg - NVPTX 特定:调度以应对注册压力。
--nvptx-short-ptr - 使用 32 位指针访问 const/local/shared 地址空间。
--nvvm-intr-range-sm=<uint> - SM 变体。
--nvvm-reflect-enable - NVVM 反射,默认启用。
--o- 请勿写入对象文件。
--od=<directory> - 将对象文件写入 <directory>。
--of=<filename> - 使用 <filename> 作为输出文件名。
--old-thumb2-ifcvt - 使用旧式的 Thumb2 if-转换启发式。
--only-nonnested-memmove-idiom - 仅在非嵌套循环中启用生成 memmove。
--only-simple-regions - 仅在 graphviz 查看器中显示简单区域。
--op - 保留输出文件的源路径。
--opaque-pointers - 使用不透明的 IR 指针(实验性!)。
--openmp-hide-memory-transfer-latency - [WIP] 尝试隐藏主机到设备内存传输的延迟。
--openmp-ir-builder-optimistic-attributes - 使用描述运行时调用的 'as-if' 属性的乐观属性。
--openmp-ir-builder-unroll-threshold-factor=<number> - 因子,用于考虑代码简化仍在进行中的未展开阈值。
--openmp-opt-disable - 禁用 OpenMP 特定优化。
--openmp-opt-disable-barrier-elimination - 禁用消除屏障的 OpenMP 优化。
--openmp-opt-disable-deglobalization - 禁用涉及去全局化的 OpenMP 优化。
--openmp-opt-disable-folding - 禁用涉及折叠的 OpenMP 优化。
--openmp-opt-disable-internalization - 禁用函数内部化。
--openmp-opt-disable-spmdization - 禁用涉及 SPMD-化的 OpenMP 优化。
--openmp-opt-disable-state-machine-rewrite - 禁用替换状态机的 OpenMP 优化。
--openmp-opt-enable-merging - 启用 OpenMP 区域合并优化。
--openmp-opt-inline-device - 内联所有适用的函数在设备上。
--openmp-opt-max-iterations=<uint> - 属性迭代器的最大次数。
--openmp-opt-print-module - 打印当前模块后的 OpenMP 优化。
--openmp-opt-verbose-remarks - 启用更详细的备注。
--openmp-print-gpu-kernels -
--openmp-print-icv-values -
--opt-bisect-limit=<int> - 执行的最大优化。
--optimize-regalloc - 启用优化的寄存器分配编译路径。
--optsize-jump-table-density=<uint> - 函数中的跳转表的最小密度。
--oq - 用完全限定的名称写入对象文件。
--orderfile-write-mapping=<string> - 将函数及其 MD5 哈希转储到 deobfuscate 配置文件数据中。
--outline-region-freq-percent=<int> - 相对于入口块的概述区域的相对频率。
--output-bc - 写入 LLVM 位码。
--output-ll - 写入 LLVM IR。
--output-mlir - 写入 MLIR。
--output-o - 写入本机对象。
--output-s - 写入本机汇编。
--overwrite-existing-weights - 忽略 IR 上现有的分支权重,并始终覆盖。
--partial-inlining-extra-penalty=<uint> - 用于调试的额外惩罚,以添加到计算的惩罚中。
--partial-profile - 指定当前配置文件用作部分配置文件。
--partial-reg-update-clearance=<uint> - 两次寄存器写入之间插入 XOR 以避免部分寄存器更新的清除。
--partial-sample-profile-working-set-size-scale-factor=<number> - 用于缩放部分样本配置文件的工作集大小的比例因子,以及部分配置文件比率。这包括每个块的配置文件计数的因子和用于使用与 PGO 相同的共享阈值缩放工作集大小的因子。
--partial-unrolling-threshold=<uint> - 部分展开的阈值。
--pass-remarks=<pattern> - 启用与给定正则表达式匹配的通道的优化备注。
--pass-remarks-analysis=<pattern> - 启用与给定正则表达式匹配的通道的优化分析备注。
--pass-remarks-missed=<pattern> - 启用与给定正则表达式匹配的通道的未错过的优化备注。
--passmanager=<value> - 设置 passmanager(new,legacy):
=legacy - 使用旧的 passmanager(适用于 LLVM14 及以下版本)。
=new - 使用新的 passmanager(适用于 LLVM14 及以上版本)。
--pbqp-coalescing - 在 PBQP 注册分配期间尝试合并。
--perform-thinlto - 启用执行 ThinLTO。
--pgo-emit-branch-prob - 当启用此选项时,注释的分支概率将作为优化备注发出:-{Rpass|pass-remarks}=pgo-instrumentation。
--pgo-fix-entry-count - 修复函数入口计数的配置使用。
--pgo-function-entry-coverage - 使用此选项启用函数入口覆盖率仪器化。
--pgo-instr-memop - 使用此选项开启/关闭内存内在大小分析。
--pgo-instr-old-cfg-hashing - 使用旧的 CFG 函数哈希。
--pgo-instr-select - 使用此选项开启/关闭 SELECT 指令仪器化。
--pgo-instrument-entry - 强制对函数入口基本块进行仪器化。
--pgo-memop-count-threshold=<uint> - 优化内存内在调用的最小计数。
--pgo-memop-max-version=<uint> - 优化内存内在调用的最大版本。
--pgo-memop-optimize-memcmp-bcmp - 尺寸特化 memcmp 和 bcmp 调用。
--pgo-memop-percent-threshold=<uint> - 内存内在调用优化的百分比阈值。
--pgo-memop-scale-count - 使用基本块计数值缩放 memop 大小计数。
--pgo-test-profile-file=<filename> - 指定配置文件数据文件的路径。这主要是为了测试目的。
--pgo-test-profile-remapping-file=<filename> - 指定配置文件重映射文件的路径。这主要是为了测试目的。
--pgo-verify-bfi - 打印配置文件元数据设置后的不匹配 BFI 计数。在 -Rpass-analysis=pgo 或内部选项 -pass-remarks-analysis=pgo 下启用打印。
--pgo-verify-bfi-cutoff=<uint> - 设置 pgo-verify-bfi 的阈值:跳过低于此配置文件计数值的计数。
--pgo-verify-bfi-ratio=<uint> - 设置 pgo-verify-bfi 的阈值:只有在差异百分比大于此值(百分比)的情况下才打印不匹配的 BFI(差异百分比)。
--pgo-verify-hot-bfi - 如果一个热的原始配置文件计数变成非热的,或者一个冷的原始配置文件计数变成热的,打印出非匹配的 BFI 计数。在 -Rpass-analysis=pgo 或内部选项 -pass-remarks-analysis=pgo 下启用打印。
--pgo-view-counts=<value> - 一个布尔选项,用于在 PGO 配置文件注释步骤之后显示带有块配置文件计数和分支概率的 CFG dag 或文本。配置文件计数是使用运行时配置文件数据和块频率传播算法计算的。要查看原始计数,请使用选项 -pgo-view-raw-counts。要将图形显示限制为仅一个函数,请使用过滤选项 -view-bfi-func-name。
=none - 不显示。
=graph - 显示图形。
=text - 以文本形式显示。
--pgo-view-raw-counts=<value> - 一个布尔选项,用于显示带有原始配置文件计数的 CFG dag 或文本。另请参见选项 -pgo-view-counts。要将图形显示限制为仅一个函数,请使用过滤选项 -view-bfi-func-name。
=none - 不显示。
=graph - 显示图形。
=text - 以文本形式显示。
--pgo-warn-missing-function - 使用此选项打开/关闭有关缺少函数配置文件数据的警告。
--pgso - 启用基于配置文件的大小优化。
--pgso-cold-code-only - 仅对冷代码应用基于配置文件的大小优化。
--pgso-cold-code-only-for-instr-pgo - 仅对冷代码应用基于配置文件的大小优化,用于仪器化 PGO。
--pgso-cold-code-only-for-partial-sample-pgo - 仅对冷代码应用基于配置文件的大小优化,用于部分样本 PGO。
--pgso-cold-code-only-for-sample-pgo - 仅对冷代码应用基于配置文件的大小优化,用于样本 PGO。
--pgso-cutoff-instr-prof=<int> - 仪器化配置文件的基于配置文件的大小优化配置文件摘要截止。
--pgso-cutoff-sample-prof=<int> - 样本配置文件的基于配置文件的大小优化配置文件摘要截止。
--pgso-lwss-only - 仅在工作集大小大的情况下应用基于配置文件的大小优化(除了冷代码)。
--phi-elim-split-all-critical-edges - 在 PHI 消除期间拆分所有关键边缘。
--phi-node-folding-threshold=<uint> - 控制执行的 PHI 节点折叠量(默认 = 2)。
--phicse-debug-hash - 执行额外的断言检查,以验证 PHINodes 的哈希函数在其 isEqual 谓词方面表现良好。
--phicse-num-phi-smallsize=<uint> - 当基本块包含不超过此数字的 PHI 节点时,执行(更快的!)穷尽搜索而不是集合驱动的搜索。
--pi-force-live-exit-outline - 强制概述具有活动出口的区域。
--pi-mark-coldcc - 标记带有 ColdCC 的概述函数调用。
--pipeliner-annotate-for-testing - 而不是发出管道化代码,注释指令,以便输入到 -modulo-schedule-test 通道中进行生成计划。
--pipeliner-dbg-res -
--pipeliner-experimental-cg - 使用用于软件管道化的实验性剥离代码生成器。
--pipeliner-max-mii=<int> - MII 的大小限制。
--pipeliner-max-stages=<int> - 生成的调度中允许的最大阶段数。
--pipeliner-prune-deps - 修剪无关 Phi 节点之间的依赖关系。
--pipeliner-prune-loop-carried - 修剪循环携带的顺序依赖关系。
--pipeliner-show-mask -
--platformlib=<lib1,lib2,...> - 平台库链接(覆盖之前的)。
--poison-checking-function-local - 检查返回值是否为非毒化(用于测试)。
--post-RA-scheduler - 启用寄存器分配后的调度。
--postra-sched-debugdiv=<int> - 调试控制 MBBs 被调度。
--postra-sched-debugmod=<int> - 调试控制 MBBs 被调度。
--ppc-always-use-base-pointer - 强制在每个函数中使用基指针。
--ppc-asm-full-reg-names - 打印汇编时使用完整的寄存器名称。
--ppc-bit-perm-rewriter-stress-rotates - 强调在积极的 ppc isel 中旋转选择位排列。
--ppc-chaincommon-max-vars=<uint> - 循环链公共的桶数。
--ppc-chaincommon-min-threshold=<uint> - 触发链公共准备工作的最小公共基础加载/存储指令数。不得小于 4。
--ppc-convert-rr-to-ri - 将符合条件的 reg+reg 指令转换为 reg+imm。
--ppc-disable-non-volatile-cr - 禁用非易失性 CR 寄存器字段的使用。
--ppc-dispprep-min-threshold=<uint> - 触发 DS/DQ 形式准备工作的最小公共基础加载/存储指令数。
--ppc-dqprep-max-vars=<uint> - PPC 循环准备 DQ 形式的潜在 PHI 阈值。
--ppc-dsprep-max-vars=<uint> - PPC 循环准备 DS 形式的潜在 PHI 阈值。
--ppc-eliminate-signext - 启用消除 sign-extensions。
--ppc-eliminate-zeroext - 启用消除 zero-extensions。
--ppc-enable-coldcc - 启用对冷内部函数使用冷调用约定。
--ppc-enable-gpr-to-vsr-spills - 启用从 gpr 到 vsr 而不是堆栈的溢出。
--ppc-enable-pe-vector-spills - 启用在序言中到向量寄存器的溢出。
--ppc-enable-pipeliner - 启用 Machine Pipeliner for PPC。
--ppc-fma-rp-factor=<number> - 转换的寄存器压力因子。
--ppc-fma-rp-reduction - 启用机器组合器通道中的寄存器压力减少。
--ppc-formprep-chain-commoning - 启用 PPC 循环准备通道中的链公共。
--ppc-formprep-max-vars=<uint> - PPC 循环准备的潜在公共基础数阈值。
--ppc-formprep-prefer-update - 偏好更新形式,当 ds 形式也是更新形式时。
--ppc-formprep-update-nonconst-inc - 准备更新形式,当 load/store 增量是循环不变的非常量值时。
--ppc-gen-isel - 启用生成 ISEL 指令。
--ppc-gep-opt - 启用复杂 GEP 上的优化。
--ppc-gpr-icmps=<value> - 指定要为哪些类型的比较发出仅 GPR 代码。
=none - 不修改整数比较。
=all - 所有可能的 GPR 整数比较。
=i32 - 仅 GPR 中的 i32 比较。
=i64 - 仅 GPR 中的 i64 比较。
=nonextin - 仅比较输入不需要 [sz]ext。
=zext - 仅具有 zext 结果的比较。
=zexti32 - 仅 i32 比较具有 zext 结果。
=zexti64 - 仅 i64 比较具有 zext 结果。
=sext - 仅具有 sext 结果的比较。
=sexti32 - 仅 i32 比较具有 sext 结果。
=sexti64 - 仅 i64 比较具有 sext 结果。
--ppc-late-peephole - 运行预发射 peephole 优化。
--ppc-loop-prefetch-cache-line=<uint> - 循环预取缓存行大小。
--ppc-lsr-no-insns-cost - 不将指令计数添加到 lsr 成本模型中。
--ppc-machine-combiner - 启用机器组合器通道。
--ppc-max-crbit-spill-dist=<uint> - 定义 CR 位溢出定义的搜索距离。
--ppc-old-latency-calc - 使用旧的(不正确的)指令延迟计算。
--ppc-opt-conditional-trap - 启用优化条件陷阱。
--ppc-pcrel-linker-opt - 启用 PC 相对链接器优化。
--ppc-postra-bias-addi - 启用在 RA 后尽早调度 addi 指令。
--ppc-preinc-prep-max-vars=<uint> - PPC 循环准备更新形式的潜在 PHI 阈值。
--ppc-quadword-atomics - 启用四字节锁自由原子操作。
--ppc-reduce-cr-logicals - 展开符合条件的 cr-logical 二进制操作为分支。
--ppc-reg-to-imm-fixed-point - 在尝试将 reg-reg 指令转换为 reg-imm 时,迭代到固定点。
--ppc-reg-with-percent-prefix - 打印带有百分比的完整寄存器名称。
--ppc-stack-ptr-caller-preserved - 考虑 R1 被调用者保留,因此可以作为 LICM 候选者的调用者保留的栈保存寄存器。
--ppc-tls-opt - 启用 tls 优化 peephole。
--ppc-track-subreg-liveness - 启用 PPC 的子寄存器生命周期跟踪。
--ppc-use-absolute-jumptables - 在 PPC 上使用绝对跳转表。
--ppc-use-base-pointer - 启用复杂栈帧的基指针使用。
--ppc-use-bit-perm-rewriter - 使用积极的 ppc isel 进行位排列。
--ppc-use-branch-hint - 启用 ppc 上的静态分支提示。
--ppc-vsr-nums-as-vr - 打印带有 vs{31-63} 作为 v{0-31} 的完整寄存器名称。
--pragma-unroll-and-jam-threshold=<uint> - 带有 unroll_and_jam(全) 或 unroll_count 指令的循环的未展开大小限制。
--pragma-unroll-threshold=<uint> - 带有 unroll(全) 或 unroll_count 指令的循环的未展开大小限制。
--pragma-vectorize-memory-check-threshold=<uint> - 带有 vectorize(启用) 指令的运行时内存检查的最大允许数量。
--pragma-vectorize-scev-check-threshold=<uint> - 带有 vectorize(启用) 指令的 SCEV 检查的最大数量。
--pre-RA-sched=<value> - 可用的指令调度器(在寄存器分配之前):
=default - 目标的最佳调度器。
=list-burr - 从 bottom-up 注册减少列表调度。
=source - 类似于 list-burr,但在可能时按源顺序进行调度。
=list-hybrid - 从 bottom-up 注册压力感知列表调度,试图平衡延迟和寄存器压力。
=list-ilp - 从 bottom-up 注册压力感知列表调度,试图平衡 ILP 和寄存器压力。
=vliw-td - VLIW 调度器。
=fast - 快速次优列表调度。
=linearize - 线性化 DAG,不调度。
--precise-rotation-cost - 通过使用配置文件数据更准确地模拟循环旋转的成本。
--prefer-inloop-reductions - 优先选择循环内向量约简,覆盖目标的偏好。
--prefer-no-csel - 优先选择谓词移动到 CSEL。
--prefer-predicate-over-epilogue=<value> - 尾折叠和谓词化偏好,而不是创建标量尾循环。
=scalar-epilogue - 不尾谓循环,创建标量尾。
=predicate-else-scalar-epilogue - 优先尾折叠,如果尾折叠失败,则创建标量尾。
=predicate-dont-vectorize -优先尾折叠,如果尾折叠失败,则不尝试向量化。
--prefer-predicated-reduction-select - 优先选择谓词化约简操作而不是在循环后选择。
--prefetch-distance=<uint> - 预取的指令数。
--prefetch-hints-file=<string> - 预取提示配置文件的路径。另请参见 -x86-discriminate-memops。
--preinline-threshold=<int> - 控制预即席内联器中的内联量(默认 = 75)。
--prepare-for-thinlto - 启用为 ThinLTO 做准备。
--preserve-alignment-assumptions-during-inlining - 在内联期间将对齐属性转换为假设。
--preserve-dwarf-line-section - Mac:在链接期间保留 DWARF 行部分,以在回溯中获取文件/行信息。默认为 true。
--preview=<name> - 启用通过 <name> 标识的即将到来的语言更改,使用 ? 查看列表。
--print-after=<string> - 打印指定通道后的 IR。
--print-after-all - 打印每个通道后的 IR。
--print-after-isel - 打印 ISel 后的机器指令。
--print-all-options - 在命令行解析后打印所有选项值。
--print-pipeline-passes - 打印描述管道的 '-passes' 兼容字符串(仅最佳努力)。
--print-region-style=<value> - 打印区域的风格。
=none - 不打印详细信息。
=bb - 使用 block_iterator 以详细方式打印区域。
=rn - 使用 element_iterator 以详细方式打印区域。
--print-regmask-num-regs=<int> - 在打印 IR 转储时限制 regmask 操作数的数量。无限 = -1。
--print-regusage - 打印收集的寄存器使用详情进行分析。
--print-slotindexes - 在打印机器 IR 时,如果有可用的 SlotIndexes,则对指令和块进行注释。
--print-summary-global-ids - 在读取模块摘要时打印每个值的全局 ID。
--procres-cost-lim=<int> - 处理器资源在调度中的 OOO 窗口。
--profile-accurate-for-symsinlist - 对于配置文件符号列表中的符号,将其配置文件视为准确的。它可能会被配置文件样本准确性覆盖。
--profile-guided-section-prefix - 使用配置文件信息为热/冷函数添加部分前缀。
--profile-isfs - 配置文件使用流敏感鉴别符。
--profile-likely-prob=<uint> - 当配置文件可用时,分支概率阈值以百分比计算被认为是非常可能的。
--profile-sample-accurate - 如果样本配置文件准确,则将所有未采样的调用站点和函数视为具有 0 个样本。否则,将未采样的调用站点和函数保守地视为未知。
--profile-sample-block-accurate - 如果样本配置文件准确,则将所有未采样的分支和调用视为具有 0 个样本。否则,将它们保守地视为未知。
--profile-summary-contextless - 在计算阈值之前合并上下文配置文件。
--profile-summary-cutoff-cold=<int> - 如果计数低于达到此百分比的总计数的最小计数,则计数是冷的。
--profile-summary-cutoff-hot=<int> - 如果计数超过达到此百分比的总计数的最小计数,则计数是热的。
--profile-summary-huge-working-set-size-threshold=<uint> - 如果达到 -profile-summary-cutoff-hot 百分比所需的块数超过此计数,则代码工作集大小被视为巨大。
--profile-summary-large-working-set-size-threshold=<uint> - 如果达到 -profile-summary-cutoff-hot 百分比所需的块数超过此计数,则代码工作集大小被视为大型。
--profile-symbol-list-cutoff=<ulong> - 配置文件符号列表中将使用多少符号的截止值。这对于性能调试非常有用。
--profile-unknown-in-special-section - 在样本 FDO 等配置文件模式中,如果函数没有配置文件,则我们不能确定函数是否冷,因为它可能是从未被采样的新添加的函数。启用此标志后,编译器可以将这些配置文件未知的函数放入一个特殊部分,以便运行时系统可以选择以与 .text 部分不同的方式处理它,以节省 RAM 为例。
--propagate-attrs - 在索引中传播属性。
--protect-from-escaped-allocas - 不优化被破坏的生命周期区域。
--r600-ir-structurize - 使用 StructurizeCFG IR 通道。
--rafast-ignore-missing-defs -
--rdf-dump -
--rdf-limit=<uint> -
--rdf-liveness-max-rec=<uint> - 最大递归级别。
--rdf-opt - 启用基于 RDF 的优化。
--reassociate-geps-verify-no-dead-code - 验证此通道不会产生死代码。
--rebalance-only-imbal - 只有在不平衡时才重新平衡地址树。
--rebalance-only-opt - 只有在允许优化时才重新平衡地址树。
--recurrence-chain-limit=<uint> - 评估交换操作数时的最大递归链长度。
--regalloc=<value> - 要使用的寄存器分配器。
=default - 根据 -O 选项选择寄存器分配器。
=basic - 基本寄存器分配器。
=greedy - 贪婪的寄存器分配器。
=fast - 快速寄存器分配器。
=pbqp - PBQP 寄存器分配器。
--regalloc-csr-first-time-cost=<uint> - 首次使用 callee-saved 寄存器的成本。
--regalloc-enable-advisor=<value> - 启用 regalloc 顾问模式。
=default - 默认。
=release - 预编译。
=development - 用于训练。
Mode of the RegBankSelect pass
--regbankselect-fast - 运行快速模式(默认映射)。
--regbankselect-greedy - 使用贪婪模式(最佳本地映射)。
--relax-elf-relocations - 发出 GOTPCRELX/REX_GOTPCRELX 而不是 x86-64 ELF 上的 GOTPCREL。
--relax-nv-checks - 放宽新值有效性的检查。
--release - 编译发布版本,默认禁用断言/契约/不变量,并在 @safe 函数中仅进行边界检查。
--relocation-model=<value> - 选择重定位模型。
=static - 非可重定位代码。
=pic - 完全可重定位的,位置无关的代码。
=dynamic-no-pic - 可重定位的外部引用,非可重定位的代码。
=ropi - 代码和只读数据可重定位,通过 PC 相对访问。
=rwpi - 读写数据可重定位,通过静态基址访问。
=ropi-rwpi - ropi 和 rwpi 的组合。
--remarks-section - 发出一个包含备注诊断元数据的部分。默认情况下,这对于以下格式启用:yaml-strtab,bitstream。
--remat-pic-stub-load - 在 PIC 模式下重新材料化从存根加载。
--rename-exclude-alias-prefixes=<string> - 不需要重命名的别名前缀,用逗号分隔。
--rename-exclude-function-prefixes=<string> - 不需要重命名的函数前缀,用逗号分隔。
--rename-exclude-global-prefixes=<string> - 不需要重命名的全局值前缀,用逗号分隔。
--rename-exclude-struct-prefixes=<string> - 不需要重命名的结构前缀,用逗号分隔。
--replexitval=<value> - 选择替换 exit 值的策略。
=never - 永不替换 exit 值。
=cheap - 仅在成本低廉时替换 exit 值。
=noharduse - 仅在循环 def 可能已死时替换 exit 值。
=always - 只要有可能就始终替换 exit 值。
--reroll-loops - 运行循环重滚动通道。
--reroll-num-tolerated-failed-matches=<uint> - 模糊匹配期间容忍的最大失败次数。(默认:400)
--restrict-statepoint-remat - 限制 statepoint 操作数的重新材料化。
--reuse-storage-in-coroutine-frame - 启用优化,该优化将在 coroutine 帧中重用存储,以便在不重叠的生命周期中分配,用于测试目的。
--reverse-csr-restore-seq - 反转 CSR 恢复序列。
--revert=<name> - 撤销通过 <name> 标识的语言更改,使用 ? 查看列表。
--rewrite-map-file=<filename> - 符号重写映射。
--rewrite-phi-limit=<uint> - 查找 PHI 链的长度限制。
--riscv-disable-insert-vsetvl-phi-opt - 禁用在插入 vsetvlis 时查看 phis。
--riscv-disable-sextw-removal - 禁用移除 sext.w。
--riscv-disable-using-constant-pool-for-large-ints - 禁用为大整数使用常量池。
--riscv-max-build-ints-cost=<uint> - 用于构建整数的最大成本。
--riscv-no-aliases - 禁用汇编伪指令的发射。
--riscv-prefer-whole-register-move - 优先为向量寄存器移动整个寄存器。
--riscv-v-fixed-length-vector-elen-max=<uint> - 用于固定长度向量的最大 ELEN 值。
--riscv-v-fixed-length-vector-lmul-max=<uint> - 用于固定长度向量的最大 LMUL 值。不支持分数 LMUL 值。
--riscv-v-register-bit-width-lmul=<uint> - 用于 getRegisterBitWidth 查询的 LMUL。影响自动向量化代码使用的 LMUL。不支持分数 LMUL 值。
--riscv-v-vector-bits-max=<uint> - 假设 V 扩展向量寄存器最大为这个大小,零表示不假设最大大小。
--riscv-v-vector-bits-min=<uint> - 假设 V 扩展向量寄存器至少为这个大小,零表示不假设最小大小。
--rng-seed=<seed> - 随机数生成器的种子。
--rotation-max-header-size=<uint> - 自动循环旋转的默认最大标头大小。
--rotation-prepare-for-lto - 在准备用于 lto 阶段运行循环旋转。此选项应仅用于测试。
--rs4gc-allow-statepoint-with-no-deopt-info -
--rs4gc-clobber-non-live -
--run <string>... - 运行生成的程序,并将剩余的参数传递给它。
--runtime-check-per-loop-load-elim - 平均每个消除的负载允许的最大 memcheck 数量。
--runtime-counter-relocation - 启用在运行时重新定位计数器。
--runtime-mem-idiom-threshold=<uint> - 守护运行时检查 memmove 的阈值(以字节为单位)。
--runtime-memory-check-threshold=<uint> - 在运行时执行内存不一致性检查时,不要生成超过此数量的比较(默认 = 8)。
--safe-stack-coloring - 启用安全的堆栈着色。
--safe-stack-layout - 启用安全的堆栈布局。
--safepoint-ir-verifier-print-only -
--safestack-use-pointer-address -
--sample-profile-check-record-coverage=<N> - 如果输入配置文件中记录的匹配率低于 N%,则发出警告。
--sample-profile-check-sample-coverage=<N> - 如果输入配置文件中样本的匹配率低于 N%,则发出警告。
--sample-profile-cold-inline-threshold=<int> - 内联冷调用站点的阈值。
--sample-profile-file=<filename> - 由 -sample-profile 加载的配置文件。
--sample-profile-hot-inline-threshold=<int> - 基于优先级的样本配置文件加载器内联的热调用站点阈值。
--sample-profile-icp-max-prom=<uint> - 样本配置文件加载器中单个间接调用调用站点的最大提升数。
--sample-profile-icp-relative-hotness=<uint> - 基于优先级的样本配置文件加载器内联的相对热度阈值。
--sample-profile-icp-relative-hotness-skip=<uint> - 跳过 ICP 的相对热度检查,直到给定数量的目标。
--sample-profile-inline-growth-limit=<int> - 基于优先级的样本配置文件加载器内联的大小增长比率限制。
--sample-profile-inline-limit-max=<int> - 基于优先级的样本配置文件加载器内联的上限大小增长限制。
--sample-profile-inline-limit-min=<int> - 基于优先级的样本配置文件加载器内联的下限大小增长限制。
--sample-profile-inline-replay=<filename> - 包含内联备注的优化备注文件,由内联从样本配置文件中重新播放。
--sample-profile-inline-replay-fallback=<value> - 样本配置文件内联重播如何处理不来自重播的站点。原始:将所有未在重播中的决策发送给原始顾问(默认),AlwaysInline:内联所有未在重播中的站点,NeverInline:不内联未在重播中的站点。
=Original - 所有未在重播中的决策都发送给原始顾问(默认)。
=AlwaysInline - 所有未在重播中的决策都被内联。
=NeverInline - 所有未在重播中的决策都不被内联。
--sample-profile-inline-replay-format=<value> - 样本配置文件内联重播文件的格式。
=Line - <行号>。
=LineColumn - <行号>:<列号>。
=LineDiscriminator - <行号>.<鉴别符>。
=LineColumnDiscriminator - <行号>:<列号>.<鉴别符>(默认)。
--sample-profile-inline-replay-scope=<value> - 是否应将内联重播应用于整个模块,还是仅应用于在样本配置文件备注中存在的函数(默认)。
=Function - 在具有备注的函数上重播(默认)。
=Module - 在整个模块上重播。
--sample-profile-inline-size - 如果有益,内联冷调用站点以减小代码大小。
--sample-profile-max-propagate-iterations=<uint> - 在通过 CFG 传播样本块/边权重时,遍历的最大迭代次数。
--sample-profile-merge-inlinee - 如果样本配置文件加载器决定不内联调用站点,则将过去的内联配置文件合并到概述版本中。仅在启用自上而下的配置文件加载时才有效。
--sample-profile-prioritized-inline - 使用基于调用站点优先级的样本配置文件加载器内联。目前仅支持 CSSPGO。
--sample-profile-recursive-inline - 允许样本加载器内联器递归调用。
--sample-profile-remapping-file=<filename> - 由 -sample-profile 加载的配置文件重映射。
--sample-profile-top-down-load - 在调用图的自上而下的顺序中进行配置文件注释和内联。仅适用于新的通道管理器。
--sample-profile-use-preinliner - 使用配置文件上下文中存储的 preinliner 决策。
--sample-profile-use-profi - 使用 profi 推断块和边的数量。
--sanitizer-coverage-inline-8bit-counters - 为每个边增加 8 位计数器。
--sanitizer-coverage-inline-bool-flag - 为每个边设置布尔标志。
--sanitizer-coverage-level=<int> - sanitizer 覆盖率。0:无,1:入口块,2:所有块,3:所有块和关键边。
--sanitizer-coverage-pc-table - 创建静态 PC 表。
--sanitizer-coverage-prune-blocks - 减少被插桩的块数。
--sanitizer-coverage-stack-depth - 最大堆栈深度跟踪。
--sanitizer-coverage-trace-compares - 跟踪 CMP 和类似指令的跟踪。
--sanitizer-coverage-trace-divs - 跟踪 DIV 指令的跟踪。
--sanitizer-coverage-trace-geps - 跟踪 GEP 指令的跟踪。
--sanitizer-coverage-trace-loads - 跟踪加载指令的跟踪。
--sanitizer-coverage-trace-pc - 实验性 pc 跟踪。
--sanitizer-coverage-trace-pc-guard - 带有守卫的 pc 跟踪。
--sanitizer-coverage-trace-stores - 跟踪存储指令的跟踪。
--scalable-vectorization=<value> - 控制编译器是否可以使用可扩展向量来向量化循环。
=off - 可扩展向量化被禁用。
=preferred - 可扩展向量化可用且受青睐,当成本不确定时。
=on - 可扩展向量化可用且受青睐,当成本不确定时。
--scalar-evolution-classify-expressions - 在打印分析时,包括有关每个指令的信息。
--scalar-evolution-huge-expr-threshold=<uint> - 被认为是巨大的表达式的大小。
--scalar-evolution-max-add-rec-size=<uint> - 在演化过程中 AddRec 的最大系数。
--scalar-evolution-max-arith-depth=<uint> - 递归算术的最大深度。
--scalar-evolution-max-cast-depth=<uint> - 递归 SExt/ZExt/Trunc 的最大深度。
--scalar-evolution-max-constant-evolving-depth=<uint> - 递归常量演化的最大深度。
--scalar-evolution-max-scev-compare-depth=<uint> - 递归 SCEV 复杂度比较的最大深度。
--scalar-evolution-max-scev-operations-implication-depth=<uint> - 递归 SCEV 操作含义分析的最大深度。
--scalar-evolution-max-value-compare-depth=<uint> - 递归值复杂度比较的最大深度。
--scalar-evolution-use-expensive-range-sharpening - 使用更强大的方法来锐化表达式范围。在编译时间上可能代价高昂。
--scalarize-load-store - 允许标量化通道标量化加载和存储。
--scalarize-variable-insert-extract - 允许标量化通道标量化具有变量索引的 insertelement/extractelement。
--scale-partial-sample-profile-working-set-size - 如果为 true,则通过部分样本配置文件比率缩放部分样本配置文件的工作集大小,以反映正在编译的程序的大小。
--scev-addops-inline-threshold=<uint> - 内联加法操作数到 SCEV 的阈值。
--scev-cheap-expansion-budget=<uint> - 执行 SCEV 扩展时,仅在成本低廉时这样做,这控制了被认为是便宜的预算(默认 = 4)。
--scev-mulops-inline-threshold=<uint> - 内联乘法操作数到 SCEV 的阈值。
--scev-verify-ir - 在进行敏感的 SCEV 查询时验证 IR 正确性(速度慢)。
--sched-avg-ipc=<uint> - 没有目标行程时的平均指令/周期。
--sched-high-latency-cycles=<int> - 大致估计 '长延迟' 指令所需的周期数,针对没有行程的 target。
--sched-preds-closer -
--sched-retval-optimization -
--scheditins - 使用 InstrItineraryData 进行延迟查找。
--schedmodel - 使用 TargetSchedModel 进行延迟查找。
--schedule-ppc-vsx-fma-mutation-early - 早期调度 VSX FMA 指令变异。
--sgpr-regalloc=<value> - 用于 SGPRs 的寄存器分配器。
=default - 根据 -O 选项选择 SGPR 寄存器分配器。
=basic - 基本寄存器分配器。
=greedy - 贪婪的寄存器分配器。
=fast - 快速寄存器分配器。
--shared - 创建共享库(DLL)。
--show-fs-branchprob - 打印流敏感分支概率。
--shrink-frame-limit=<uint> - 栈帧收缩包装的最大次数。
--simple-loop-unswitch-drop-non-trivial-implicit-null-checks - 如果启用,在取消隐式 null 检查时,如果它们不是保持 make.implicit 元数据的关键,则会丢弃。
--simple-loop-unswitch-guards - 如果启用,简单的循环变换也会考虑 llvm.experimental.guard 内联函数作为变换候选。
--simple-loop-unswitch-memoryssa-threshold=<uint> - 在部分变换分析期间探索的最大内存使用数。
--simplify-mir - 在打印 MIR 时省略不必要的信息。
--simplifycfg-branch-fold-common-dest-vector-multiplier=<uint> - 在确定是否折叠分支到公共目标时应用的乘数,当存在向量操作时。
--simplifycfg-branch-fold-threshold=<uint> - 折叠分支的最大成本。
--simplifycfg-hoist-common - 将常见指令提升到父块。
--simplifycfg-hoist-cond-stores - 如果无条件存储在前,则提升条件存储。
--simplifycfg-max-small-block-size=<int> - 仍被视为足够小的块的最大大小。
--simplifycfg-merge-cond-stores - 即使无条件存储不先出现,也提升条件存储到单个谓词存储。
--simplifycfg-merge-cond-stores-aggressively - 在合并条件存储时,即使结果基本块不太可能因 if 转换而变得无效,也要这样做。
--simplifycfg-require-and-preserve-domtree - 临时开发开关,用于逐步将 SimplifyCFG 升级为保留 DomTree。
--simplifycfg-sink-common - 将常见指令下沉到末块。
--singleobj - 仅创建单个输出对象文件。
--sink-common-insts - 下沉常见指令(默认 = false)。
--sink-freq-percent-threshold=<uint> - 除非它们执行的时间少于这个百分比,否则不要下沉指令。
--sink-insts-to-avoid-spills - 为了避免寄存器溢出,将指令下沉到循环中。
--skip-mips-long-branch - MIPS:跳过分支扩展通道。
--skip-ret-exit-block - 抑制退出块中的 ret 时的计数器提升。
--slot1-store-slot0-load - 允许 slot1 存储和 slot0 加载。
--slp-look-ahead-users-budget=<uint> - 在访问前驱时,要访问的最大用户数。这防止了编译时间的增加。
--slp-max-look-ahead-depth=<int> - 操作数重新排序得分的最大向前看深度。
--slp-max-reg-size=<uint> - 尝试为此位数的寄存器进行向量化。
--slp-max-store-lookup=<uint> - 连续存储的最大深度。
--slp-max-vf=<uint> - 最大 SLP 向量化因子(0 = 无限)。
--slp-min-reg-size=<uint> - 尝试为此位数的寄存器进行向量化。
--slp-min-tree-size=<uint> - 仅向量化可以完全向量化的小树。
--slp-recursion-max-depth=<uint> - 构建可向量化树时的限制递归深度。
--slp-schedule-budget=<int> - 每个块的 SLP 调度区域的大小限制。
--slp-threshold=<int> - 仅当您获得超过此数字时,才向量化。
--slp-vectorize-hor - 尝试向量化水平归约。
--slp-vectorize-hor-store - 尝试向量化水平归约到存储。
--small-loop-cost=<uint> - 被认为 'small' 的循环的成本,由交织器考虑。
--soname=<soname> - 使用 <soname> 作为输出共享库的 soname。
--sort-profiled-scc-member - 根据边权重对分析过的递归进行排序。
--sort-timers - 在报告中,按墙上时钟时间顺序对定时器进行排序。
--sparc-reserve-app-registers - 保留应用程序寄存器(%g2-%g4)。
--spec-exec-max-not-hoisted - 推测执行不适用于基本块中不会推测执行的指令数量超过此限制的情况。
--spec-exec-max-speculation-cost=<uint> - 推测执行不适用于基本块中推测执行的成本超过此限制的情况。
--spec-exec-only-if-divergent-target - 即使通道配置仅适用于所有目标,推测执行也仅适用于具有发散分支的目标。
--speculate-one-expensive-inst - 允许恰好一个昂贵的指令被推测执行。
--speculative-counter-promotion-max-exiting=<uint> - 循环的最大退出块数,允许进行推测性计数器提升。
--speculative-counter-promotion-to-loop - 当选项为 false 时,如果目标块在循环中,则提升将被禁止,除非提升的计数器更新可以进一步/反复提升到无环区域中。
--spill-func-threshold=<int> - 指定 O2(不是 Os)溢出函数阈值。
--spill-func-threshold-Os=<int> - 指定 Os 溢出函数阈值。
--spirv-debug - 启用 SPIR-V 调试输出。
--spirv-erase-cl-md - 擦除 OpenCL 元数据。
--spirv-lower-const-expr - LLVM/SPIR-V 转换时启用常量表达式降低。
--spirv-text - 为调试目的使用文本格式的 SPIR-V。
--spirv-verify-regularize-passes - 在 LLVM 规范化阶段的每个通道之后验证模块。
--split-dwarf-cross-cu-references - 启用 DWO 文件中的跨 CU 引用。
--split-machine-functions - 根据配置文件信息将冷基本块从机器函数中拆分出来。
--split-spill-mode=<value> - 拆分 live 范围的溢出模式。
=default - 默认。
=size - 优化大小。
=speed - 优化速度。
--spp-all-backedges -
--spp-counted-loop-trip-width=<int> -
--spp-no-backedge -
--spp-no-call -
--spp-no-entry -
--spp-print-base-pointers -
--spp-print-liveset -
--spp-print-liveset-size -
--spp-rematerialization-threshold=<uint> -
--spp-split-backedge -
--sroa-strict-inbounds -
--ssc-dce-limit=<int> -
--stack-safety-max-iterations=<int> -
--stack-safety-print -
--stack-safety-run -
--stack-size-section - 发出一个包含堆栈大小元数据的部分。
--stack-symbol-ordering - 排序本地堆栈符号。
--stack-tagging-first-slot-opt - 应用第一槽优化以避免 ADDG Rt, Rn, 0, 0。
--stack-tagging-merge-init - 可能时合并堆栈变量初始化和标记。
--stack-tagging-merge-init-scan-limit=<uint> -
--stack-tagging-merge-init-size-limit=<uint> -
--stack-tagging-merge-settag - 在函数尾声中合并设置标记指令。
--stack-tagging-unchecked-ld-st=<value> - 无条件应用未检查的 ld-st 优化(即使对于大堆栈帧或存在变量大小的 allocas)。
=never - 从不应用未检查的 ld-st。
=safe - 当目标绝对在范围内时应用未检查的 ld-st。
=always - 始终应用未检查的 ld-st。
--stack-tagging-use-stack-safety - 使用堆栈安全分析结果。
--stackcoloring-lifetime-start-on-first-use - 将堆栈生命周期视为从首次使用开始,而不是从 START 标记开始。
--stackmap-version=<int> - 指定堆栈图编码版本(默认 = 3)。
--start-before=<pass-name> - 在特定通道之前恢复编译。
--stats - 启用程序的统计输出(可与 Asserts 一起使用)。
--stats-json - 将统计数据显示为 JSON 数据。
--stop-before=<pass-name> - 在特定通道之前停止编译。
--store-to-load-forwarding-conflict-detection - 启用循环访问分析中的冲突检测。
--stress-cgp-ext-ld-promotion - 强调测试 ext(promotable(ld)) -> promoted(ext(ld)) 优化在 CodeGenPrepare 中。
--stress-cgp-store-extract - 强调测试 store(extract) 优化在 CodeGenPrepare 中。
--stress-early-ifcvt - 将所有旋钮调至 11。
--stress-regalloc - 限制所有 regclasses 为 N 寄存器。
--strict-dwarf - 使用严格的 dwarf。
--strip-debug - 在优化之前剥离符号调试信息。
--structurizecfg-relaxed-uniform-regions - 允许放宽统一区域检查。
--structurizecfg-skip-uniform-regions - 强制 StructurizeCFG 通道是否跳过统一区域。
--summary-file=<string> - 用于函数导入的摘要文件。
--sve-gather-overhead=<uint> -
--sve-scatter-overhead=<uint> -
--swift-async-fp=<value> - 确定何时应设置 Swift 异步帧指针。
=auto - 根据部署目标确定。
=always - 始终设置该位。
=never - 从不设置该位。
--switch-peel-threshold=<uint> - 设置从 switch 语句中剥离情况的概率阈值。大于 100 的值将使此优化无效。
--switch-range-to-icmp - 将 switch 转换为整数范围比较(默认 = false)。
--switch-to-lookup - 将 switch 转换为查找表(默认 = false)。
--systemz-subreg-liveness - 启用 SystemZ 的子寄存器生命周期跟踪(实验性)。
--t2-reduce-limit=<int> -
--t2-reduce-limit2=<int> -
--t2-reduce-limit3=<int> -
--tail-dup-indirect-size=<uint> - 考虑尾复制的最大指令数,以结束间接分支。
--tail-dup-limit=<uint> -
--tail-dup-placement - 在放置期间执行尾复制。在大纲分支中创建更多的 fallthrough 机会。
--tail-dup-placement-aggressive-threshold=<uint> - 指令截止值,用于激进的尾复制。在 -O3 下使用。尾合并期间的强制阈值不会冲突。
--tail-dup-placement-penalty=<uint> - 成本惩罚,用于可以避免破坏 CFG 通过复制的块。复制可以增加 fallthrough,但它也会增加 icache 压力。此参数控制该惩罚。百分比为整数。
--tail-dup-placement-threshold=<uint> - 指令截止值,用于尾复制。尾合并期间的强制阈值不会冲突。
--tail-dup-profile-percent-threshold=<uint> - 如果在尾复制成本模型中使用配置文件计数信息,则从尾复制中获得的 fall through 数量应至少为此 hot 计数的百分比。
--tail-dup-size=<uint> - 考虑尾复制的最大指令数。
--tail-dup-verify - 验证 taildup 期间 PHI 指令的合理性。
--tail-merge-size=<uint> - 考虑尾合并的最小指令数。
--tail-merge-threshold=<uint> - 考虑尾合并的最大前驱数。
--tail-predication=<value> - MVE 尾预测通道选项。
=disabled - 不尾预测循环。
=enabled-no-reductions - 启用尾预测,但不用于归约循环。
=enabled - 启用尾预测,包括归约循环。
=force-enabled-no-reductions - 启用尾预测,但不用于归约循环,并强制执行,这可能是不安全的。
=force-enabled - 启用尾预测,包括归约循环,并强制执行,这可能是不安全的。
--tailcallopt - 通过(可能)更改 ABI 将 fastcc 调用转换为尾调用。
--target-abi=<string> - 要从后端目标的 ABI 名称。
--template-depth=<uint> - 设置嵌套模板实例化的最大数量。
--temporal-reuse-threshold=<uint> - 使用此来指定数组元素在循环中被访问的最大距离,以便将元素分类为具有时间重用。
--terminal-rule - 应用终端规则。
--thinlto-assume-merged - 假设输入已经经历了 ThinLTO 函数导入和其他预优化管道更改。
--thinlto-synthesize-entry-counts - 根据摘要合成入口计数。
--thread-model=<value> - 选择线程模型。
=posix - POSIX 线程模型。
=single - 单线程模型。
--time-passes - 计时每个通道,退出时打印经过的时间。
--time-passes-per-run - 计时每个通道运行,退出时打印每个运行的经过时间。
--tiny-trip-count-interleave-threshold=<uint> - 我们不会在估计的常量行程计数低于此数字的情况下交错循环。
--tls-size=<uint> - 立即 TLS 偏移量的位大小。
--trace-gv-placement - 跟踪全局值放置。
--trace-hex-vector-stores-only - 启用向量化存储的跟踪。
--track-memory - 启用 --time-passes 内存跟踪(这可能很慢)。
--transition=<name> - 帮助通过 <name> 标识的语言更改,使用 ? 查看列表。
--trap-unreachable - 启用生成不可达的 trap。
--treat-scalable-fixed-error-as-warning - 将请求从可扩展类型中获取固定宽度属性的问题视为警告,而不是错误。
--triangle-chain-count=<uint> - 需要连续的三角形形状的 CFG 数量,以便三角尾复制启发式生效。0 禁用。
--trim-var-locs -
--tsan-compound-read-before-write - 发出针对读写前的复合仪器。
--tsan-distinguish-volatile - 发出针对 volatile 访问的特别仪器。
--tsan-handle-cxx-exceptions - 处理 C++ 异常(为 unwinding 插入清理块)。
--tsan-instrument-atomics - 仪器化原子操作。
--tsan-instrument-func-entry-exit - 仪器化函数入口和退出。
--tsan-instrument-memintrinsics - 仪器化 memintrinsics(memset/memcpy/memmove)。
--tsan-instrument-memory-accesses - 仪器化内存访问。
--tsan-instrument-read-before-write - 不消除针对读写前的读取仪器。
--two-entry-phi-node-folding-threshold=<uint> - 控制我们愿意推测执行的最大总指令成本,以将 2 个条目的 PHI 节点折叠为选择(默认 = 4)。
--twoaddr-reschedule - 通过重新调度合并副本。
--undef-reg-clearance=<uint> - 在某些未定义寄存器读取之前,我们希望有多少空闲指令。
--unique-basic-block-section-names - 为每个基本块部分赋予唯一名称。
--unique-section-names - 为每个部分赋予唯一名称。
--unittest - 编译单元测试。
--unlikely-branch-weight=<uint> - 不太可能被执行的分支的权重(默认 = 1)。
--unroll-allow-loop-nests-peeling - 允许循环嵌套被剥离。
--unroll-allow-partial - 允许循环被部分展开,直到达到 -unroll-threshold 循环大小。
--unroll-allow-peeling - 允许循环被剥离,当动态行程计数已知较低时。
--unroll-allow-remainder - 允许生成循环余数(额外迭代)时展开循环。
--unroll-and-jam-count=<uint> - 用于所有循环的展开计数,包括那些具有 unroll_and_jam_count 指令的循环,用于测试目的。
--unroll-and-jam-threshold=<uint> - 用于内循环的展开阈值,用于展开和压缩。
--unroll-count=<uint> - 用于所有循环的展开计数,包括那些具有 unroll_count 指令的循环,用于测试目的。
--unroll-force-peel-count=<uint> - 强制一个剥离计数,不管配置文件信息如何。
--unroll-full-max-count=<uint> - 设置完全展开的最大展开计数,用于测试目的。
--unroll-max-count=<uint> - 设置部分和运行时展开的最大展开计数,用于测试目的。
--unroll-max-iteration-count-to-analyze=<uint> - 不允许循环展开模拟超过此数量的迭代,当检查完全展开的盈利性时。
--unroll-max-percent-threshold-boost=<uint> - 当积极地展开循环以获得动态成本节省时,应用到阈值的最大 'boost'(表示为大于等于 100 的百分比)。如果完全展开循环将从 X 降低总运行时间到 Y,我们将循环展开阈值提高到 DefaultThreshold*min(MaxPercentThresholdBoost, X/Y)。这个限制避免了过多的代码膨胀。
--unroll-max-upperbound=<uint> - 考虑在展开中的最大行程计数上限。
--unroll-optsize-threshold=<uint> - 优化大小时循环展开的成本阈值。
--unroll-partial-threshold=<uint> - 部分循环展开的成本阈值。
--unroll-peel-count=<uint> - 设置展开剥离计数,用于测试目的。
--unroll-peel-max-count=<uint> - 将导致循环剥离的最大平均行程计数。
--unroll-remainder - 允许展开循环余数。
--unroll-revisit-child-loops - 在展开后,重新访问子循环。
--unswitch-num-initial-unscaled-candidates=<int> - 在计算成本乘数时忽略的未缩放变换候选数。
--unswitch-siblings-toplevel-div=<int> - 成本乘数的顶层兄弟除数。
--unswitch-threshold=<int> - 循环变换的成本阈值。
--update-pseudo-probe - 更新伪探针分布因子。
--update-return-attrs - 更新内联体中的调用返回属性。
--use-cfl-aa=<value> - 启用新的、实验性的 CFL 别名分析。
=none - 禁用 CFL-AA。
=steens - 启用基于统一的 CFL-AA。
=anders - 启用基于包含的 CFL-AA。
=both - 启用 CFL-AA 的两种变体。
--use-cfl-aa-in-codegen=<value> - 在代码生成中启用新的、实验性的 CFL 别名分析。
=none - 禁用 CFL-AA。
=steens - 启用基于统一的 CFL-AA。
=anders - 启用基于包含的 CFL-AA。
=both - 启用 CFL-AA 的两种变体。
--use-ctors - 使用 .ctors 而不是 .init_array。
--use-dbg-addr - 为所有局部变量使用 llvm.dbg.addr。
--use-dereferenceable-at-point-semantics=<uint> - Deref 属性和元数据仅在定义时推断事实。
--use-dwarf-ranges-base-address-specifier - 在 debug_ranges 中使用基地址说明符。
--use-gnu-debug-macro - 用 DWARF <5 发送 GNU .debug_macro 格式。
--use-gpu-divergence-analysis - 将 LegacyDivergenceAnalysis 转换为 GPUDivergenceAnalysis 的包装器。
--use-gvn-after-vectorization - 在向量化通道之后运行 GVN 而不是 Early CSE。
--use-iterative-bfi-inference - 应用迭代后处理以推断正确的 BFI 计数。
--use-leb128-directives - 禁用 LEB128 指令的使用,改为生成 .byte。
--use-lir-code-size-heurs - 在使用 -Os/-Oz 编译时,使用循环 idom 识别代码大小启发式。
--use-mbpi - 使用机器分支概率信息。
--use-newer-candidate -
--use-noalias-intrinsic-during-inlining - 在内联期间使用 llvm.experimental.noalias.scope.decl 内在。
--use-profiled-call-graph - 当 -sample-profile-top-down-load 启用时,按配置文件定义的自顶向下的顺序处理函数。
--use-registers-for-deopt-values - 允许使用寄存器用于非指针 deopt 参数。
--use-registers-for-gc-values-in-landing-pad - 允许在 landing pad 中使用寄存器用于 gc 指针。
--use-segment-set-for-physregs - 使用段集计算 physregs 的活动范围。
--use-tbaa-in-sched-mi - 在 MI DAG 构造期间启用 TBAA 的使用。
--use-unknown-locations=<value> - 明确在没有调试位置信息的情况下。
=Default - 在块的顶部或标签之后。
=Enable - 在所有情况下。
=Disable - 从不。
-v - 详细。
--v-cg - 详细的代码生成。
--vcg-ast - 将 AST 写入 .cg 文件。
--vcolumns - 在诊断中打印字符(列)号码。
--vec-extabi - 启用 AIX 扩展 Altivec ABI。
--vector-combine-max-scan-instrs=<uint> - 扫描向量组合的最大指令数。
--vector-library=<value> - 向量函数库。
=none - 没有向量函数库。
=Accelerate - Accelerate 框架。
=Darwin_libsystem_m - Darwin libsystem_m。
=LIBMVEC-X86 - GLIBC 向量数学库。
=MASSV - IBM MASS 向量库。
=SVML - 英特尔 SVML 库。
--vectorize-loops - 运行循环向量化通道。
--vectorize-num-stores-pred=<uint> - 被谓词化的商店的最大数量。
--vectorize-scev-check-threshold=<uint> - 允许的最大 SCEV 检查数。
--vectorize-slp - 运行 SLP 向量化通道。
--vectorizer-maximize-bandwidth - 在选择向量化因子时最大化带宽,这将由循环中的最小类型决定。
--vectorizer-min-trip-count=<uint> - 只有当常量行程计数小于此值时,才对循环进行向量化,除非不会产生标量迭代开销。
--verify-arm-pseudo-expand - 验证 ARM 伪指令扩展后的机器代码。
--verify-assumption-cache - 启用假设缓存的验证。
--verify-cfg-preserved -
--verify-cfiinstrs - 验证调用框架信息指令。
--verify-coalescing - 验证机器指令在寄存器合并前后。
--verify-dom-info - 验证支配者信息(耗时)。
--verify-each - 在 D 特定和明确指定的优化通道之后运行验证器。
--verify-indvars - 验证运行 indvars 后的 ScalarEvolution 结果。在发布版本中无效(注意:这会增加额外的 SCEV 查询,可能会改变分析结果)。
--verify-loop-info - 验证循环信息(耗时)。
--verify-loop-lcssa - 验证循环 lcssa 形式(耗时)。
--verify-machine-dom-info - 验证机器支配者信息(耗时)。
--verify-machineinstrs - 验证生成的机器代码。
--verify-memoryssa - 启用 MemorySSA 的验证。
--verify-misched - 验证机器指令在机器调度前后。
--verify-noalias-scope-decl-dom - 确保具有相同作用域的 llvm.experimental.noalias.scope.decl 不是支配的。
--verify-predicateinfo - 验证 legacy 打印通道中的 PredicateInfo。
--verify-pseudo-probe - 执行伪探针验证。
--verify-pseudo-probe-funcs=<string> - 指定要验证的函数名称。
--verify-regalloc - 在寄存器分配期间进行验证。
--verify-region-info - 验证区域信息(耗时)。
--verify-scev - 验证 ScalarEvolution 的后端取计数(慢)。
--verify-scev-maps - 验证 ScalarEvolution 的 ExprValueMap 中没有悬挂的值(慢)。
--verify-scev-strict - 启用更严格的验证,当传递 -verify-scev 时。
--verror-style=<value> - 设置编译器消息的文件/行注释样式。
=digitalmars - 'file(line[,column]): message'(默认)。
=gnu - 'file:line[:column]: message',符合 gcc 和 clang 使用的 GNU 标准。
--verrors=<uint> - 限制错误消息的数量(0 表示无限)。
--verrors-context - 显示带有错误源行上下文的错误消息。
--verrors-spec - 显示来自推测编译的错误,例如 __traits(compiles,...)。
--version - 显示此程序的版本。
--vgc - 列出所有 gc 分配,包括隐藏的。
--vgpr-regalloc=<value> - 用于 VGPRs 的寄存器分配器。
=basic - 基本寄存器分配器。
=greedy - 贪婪的寄存器分配器。
=fast - 快速寄存器分配器。
--view-bfi-func-name=<string> - 指定要显示 CFG 的函数名称。
--view-block-freq-propagation-dags=<value> - 弹出窗口以显示如何通过 CFG 传播块频率的 dag。
=none - 不显示图表。
=fraction - 使用分数块频率表示法显示图表。
=integer - 使用原始整数分数块频率表示法显示图表。
=count - 使用实际配置文件计数显示图表(如果有)。
--view-block-layout-with-bfi=<value> - 弹出窗口以显示显示 MBP 布局和相关块频率的 CFG 的 dag。
=none - 不显示图表。
=fraction - 使用分数块频率表示法显示图表。
=integer - 使用原始整数分数块频率表示法显示图表。
=count - 使用实际配置文件计数显示图表(如果有)。
--view-edge-bundles - 弹出窗口以显示边缘捆绑图。
--view-hot-freq-percent=<uint> - 用于指定以红色显示热块/边的整数百分比,这些块或边的频率不低于函数的最大频率乘以此百分比。
--view-machine-block-freq-propagation-dags=<value> - 弹出窗口以显示如何通过 CFG 传播机器块频率的 dag。
=none - 不显示图表。
=fraction - 使用分数块频率表示法显示图表。
=integer - 使用原始整数分数块频率表示法显示图表。
=count - 使用实际配置文件计数显示图表(如果有)。
--view-slp-tree - 使用 Graphviz 显示 SLP 树。
--vliw-misched-reg-pressure=<number> - 高寄存器压力阈值。
--vp-counters-per-site=<number> - 每个值配置文件分配的平均配置文件计数器数量。
--vp-static-alloc - 为值分析器执行静态计数器分配。
--vplan-build-stress-test - 为函数中的每个支持的循环嵌套构建 VPlan,并在构建后立即退出(压力测试 VPlan 原生向量化路径中的 VPlan H-CFG 构建)。
--vplan-print-in-dot-format - 使用 dot 格式而不是纯文本转储 VPlans。
--vplan-verify-hcfg - 验证 VPlan H-CFG。
--vtemplates - 显示模板实例化的统计信息。使用 -vtemplates=list-instances 额外显示每个模板的所有实例化上下文。
--vv - 打印前端/胶水代码调试日志。
警告:
-w - 将警告作为错误启用(编译将停止)。
--wi - 将警告作为消息启用(编译将继续)。
--wasm-disable-explicit-locals - WebAssembly:出于测试目的,在指令输出中输出显式局部变量。
--wasm-enable-eh - WebAssembly 异常处理。
--wasm-enable-sjlj - WebAssembly setjmp/longjmp 处理。
--wasm-keep-registers - WebAssembly:出于测试目的,在指令输出中输出堆栈寄存器。
--whole-program-visibility - 启用整个程序的可见性。
--wholeprogramdevirt-branch-funnel-threshold=<uint> - 启用分支漏斗的每个调用站点的最大调用目标数。
--wholeprogramdevirt-check - 添加代码以在不正确的去虚拟化时捕获。
--wholeprogramdevirt-print-index-based - 在运行通道之前,从给定的 bitcode 或 YAML 文件中读取摘要。
--wholeprogramdevirt-skip=<string> - 防止函数被去虚拟化。
--wholeprogramdevirt-summary-action=<value> - 运行此通道时如何处理摘要。
=none - 什么也不做。
=import - 从摘要和全局导入类型 ID 解析。
=export - 将类型 ID 解析导出到摘要和全局。
--wholeprogramdevirt-write-summary=<string> - 将摘要写入给定的 bitcode 或 YAML 文件。输出文件格式从扩展名推断:*.bc 表示写入 bitcode,否则为 YAML。
--write-relbf-to-summary - 将相对块频率写入函数摘要。
--x86-align-branch=<string> - 指定要对齐的分支类型(用加号分隔的类型列表):
jcc 表示条件跳转
fused 表示融合条件跳转
jmp 表示直接无条件跳转
call 表示直接和间接调用
ret 表示返回
indirect 表示间接无条件跳转
--x86-align-branch-boundary=<uint> - 控制汇编器如何使用 NOP 对齐分支。如果边界的大小不为 0,则应该是 2 的幂且不小于 32。分支将被对齐,以防止跨越或对抗指定大小的边界。默认值 0 不对分支进行对齐。
--x86-and-imm-shrink - 启用设置常量位以减小掩码立即数的大小。
--x86-asm-syntax=<value> - 选择要从 X86 后端发出的代码样式:
=att - 发出 AT&T 风格的汇编
=intel - 发出 Intel 风格的汇编
--x86-branches-within-32B-boundaries - 对齐选定的指令以缓解 Intel 微代码更新对 errata skx102 的负面影响。可能会破坏对特定指令的标签的假设,应谨慎使用。
--x86-bypass-prefetch-instructions - 在使用带有内存操作数的指令进行区分时,忽略预取指令。这确保了在插入预取之后,其他具有内存操作数的指令具有相同的标识符,允许连续插入。
--x86-cmov-converter - 启用 X86 cmov-to-branch 优化。
--x86-cmov-converter-force-mem-operand - 每当 cmov 具有内存操作数时,将其转换为分支。
--x86-cmov-converter-threshold=<uint> - 循环中每次转换的最小收益(以周期为单位)的阈值。
--x86-disable-avoid-SFB - X86:禁用 Store Forwarding Blocks 修复。
--x86-discriminate-memops - 为每个具有内存操作数的指令生成唯一的调试信息。应用于带有内存操作数的每个指令,应启用用于基于配置文件的缓存预取,无论是在被配置的二进制还是在消费配置文件的二进制中。
--x86-early-ifcvt - 在 X86 上启用早期 if-转换。
--x86-experimental-lvi-inline-asm-hardening - 加硬可能容易受到 Load Value Injection (LVI) 攻击的内联汇编代码。此功能是实验性的。
--x86-experimental-pref-loop-alignment=<int> - 为实验设置内循环的首选循环对齐(以 log2 字节为单位)。如果指定,则此选项覆盖由 x86-experimental-pref-loop-alignment 设置的对齐。
--x86-experimental-unordered-atomic-isel - 使用 LoadSDNode 和 StoreSDNode 代替 AtomicSDNode 分别用于无序原子加载和存储。
--x86-indirect-branch-tracking - 启用 X86 间接分支跟踪通道。
--x86-lvi-load-dot - 为每个函数,发出描绘潜在 LVI 小工具的点图。
--x86-lvi-load-dot-only - 为每个函数,发出描绘潜在 LVI 小工具的点图,并且不插入任何 fences。
--x86-lvi-load-dot-verify - 为每个函数,发出描绘潜在 LVI 小工具的点图到 stdout,仅用于测试目的。
--x86-lvi-load-no-cbranch - 不将条件分支视为泄露小工具。这可能会提高性能,但代价是安全性。
--x86-lvi-load-opt-plugin=<string> - 指定优化 LFENCE 插入的插件。
--x86-machine-combiner - 启用机器组合器通道。
--x86-pad-for-align - 填充前面的指令以实现对齐指令。
--x86-pad-for-branch-align - 填充前面的指令以实现分支对齐。
--x86-pad-max-prefix-size=<uint> - 最大的前缀数量用于填充。
--x86-promote-anyext-load - 启用提升对齐的 anyext 加载到更宽的加载。
--x86-seses-enable-without-lvi-cfi - 强制启用推测执行副作用抑制。(注意:用户必须传递 -mlvi-cfi 以减轻间接分支和返回的影响。)
--x86-seses-omit-branch-lfences - 省略所有分支指令前的 lfences。
--x86-seses-one-lfence-per-bb - 省略除了基本块中的第一个之外的所有 lfences。
--x86-seses-only-lfence-non-const - 仅在分支指令的寻址模式是寄存器且不是 %rip 的组中,在基本块前放置 lfences。
--x86-sfb-inspection-limit=<uint> - X86:向后检查的指令数,以检查存储转发块。
--x86-slh-fence-call-and-ret - 使用完整的推测 fence 来加固调用和 ret 边缘,而不是使用轻量级的缓解措施。
--x86-slh-indirect - 加固间接调用和跳转,以防止使用推测存储的攻击者控制地址。这是为了减轻 Spectre v1.2 风格的攻击而设计的。
--x86-slh-ip - 通过在栈指针的高位中传递我们的状态来加固 interprocedurally。
--x86-slh-lfence - 使用 LFENCE 沿着每个条件边缘来加固,而不是使用条件移动和中毒指针。
--x86-slh-loads - 清理从内存加载的数据。当禁用时,不提供显著的安全保障。
--x86-slh-post-load - 加固加载后的值,通过将加载的位冲洗为 1 来实现。这通常很难做到,但对于 GPRs 来说可以很容易地完成。
--x86-speculative-load-hardening - 强制启用推测性加载硬化。
--x86-use-base-pointer - 为复杂的堆栈帧启用基指针的使用。
--x86-use-fsrm-for-memcpy - 在 memcpy 降阶中使用 fast short rep mov。
--x86-use-vzeroupper - 最小化 AVX 到 SSE 转换的惩罚。
--xcoff-traceback-table - 发送 XCOFF 回溯表。
--xcore-max-threads=<number> - 最大线程数(用于仿真线程本地存储)。
-d-debug 还可以不带选项地指定,这样会启用所有调试检查(即断言、边界检查、契约和不变量)以及作为 -d-debug=1 行为。
布尔选项可以接受一个可选的值,例如 -link-defaultlib-shared=<true,false>。
带有 (*) 标记的布尔选项还有一个 -disable-FOO 变体,其含义相反。

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/sdvcn-mculib4d.git
git@api.gitlife.ru:oschina-mirror/sdvcn-mculib4d.git
oschina-mirror
sdvcn-mculib4d
sdvcn-mculib4d
master