Hexagon LLVM编译架构介绍(11)

240 篇文章 11 订阅

3.4.18 具体优化

参数描述
-falign-functions [=n]控制功能对齐。设置 -falign-functions=1 和 -fno-align-functions 是等效的,导致禁用功能对齐。设置 -falign-functions=0 或 -falign-functions(没有值指定)使用目标的默认对齐值启用函数对齐。设置 -falign-functions=n 启用函数对齐,使用大于 n 的下一个 2 的幂作为对齐值,其中 n 是字节数。默认是不对齐函数。要在 Os 级别启用函数对齐,必须设置额外的 falign-os 选项。
-falign-jumps [=n]控制跳跃对齐。 设置 -falign-jumps=1 和 -fno-align-jumps 是等效的,导致禁用跳转对齐。 设置 -falign-jumps=n 启用使用下一个大于 n 的 2 的幂作为对齐值的跳转对齐,其中 n 是字节数。 默认是不对齐跳转。 要在 Os 级别启用跳转对齐,必须设置额外的 falign-os 选项。
-falign-labels [=n]控制标签(分支目标)对齐。 设置 -falign-labels=1 和 -fno-align-labels 是等效的,导致禁用标签对齐。 设置 -falign-labels =0 或 -falign-labels(未指定值)使用目标的默认对齐值启用标签对齐。 设置 -falign-labels=n 启用标签对齐,使用大于 n 的下一个 2 的幂作为对齐值,其中 n 是字节数。 默认是不对齐标签。 要控制应对齐的标签类型,请使用带有字符串“none”(不对齐分支目标)、“nocalls”(不对齐函数调用)、“allcalls”(对齐 在函数调用之后)。 要在 Os 级别启用标签对齐,还必须设置 -falign-os。
-falign-loops [=n]控制回路对齐。 设置 -falign-loops=1 和 -fno-align-loops 是等效的,导致禁用循环对齐。 设置 -falign-loops=0 或 -falign-loops(未指定值)使用目标的默认对齐值启用循环对齐。 设置 -falign-loops=n 启用循环对齐,使用大于 n 的下一个 2 的幂作为对齐值,其中 n 是字节数。 默认是不对齐循环。 要在 Os 级别启用循环对齐,必须设置额外的 falign-os 选项。
-fdata-sections将每个数据项分配给它自己的部分。
-ffunction-sections将每个功能项分配给输出文件中其自己的部分。 该部分以分配给它的功能命名。
-finline将 inline 关键字指定为 active。
-finline-functions执行启发式选择的函数内联。
-fnomerge-all-constants不要合并常量。
-fomit-frame-pointer如果函数中不需要堆栈帧指针,则不要将堆栈帧指针存储在寄存器中。
-foptimize-sibling-calls优化函数同级调用和尾递归调用。
-fstack-protector生成检查所选函数是否存在缓冲区溢出的代码。
-fstack-protector-all生成检查所有函数是否存在缓冲区溢出的代码。
-fstrict-aliasing对正在编译的语言执行尽可能严格的别名规则。
-funit-at-a-time在开始代码生成之前解析整个编译单元。
-funroll-all-loops展开所有循环。
-funroll-loops展开选定的循环。
-fno-zero-initialized-in-bss将所有初始化为零的变量分配给 BSS 部分。

3.4.19 数学优化

参数描述
-fassociative-math允许重新关联浮点运算序列中的操作数。 因为它可能对浮点比较重新排序,所以在需要有序比较的情况下不能使用此选项。 要使用此选项,必须同时启用 -fno-signed-zeros 和 -fno-trapping-math,而不得启用 -frounding-math。
-ffast-math在编译器前端启用“快速数学”模式。 这对优化没有影响,但定义了与 GCC -ffast-math 选项相同的预处理器宏 FAST_MATH
-finite-math-only启用假设浮点参数和结果值永远不会是 NaN 或 ±Infs 的优化。
-fno-math-errno不要在使用单指令数学函数后设置 ERRNO。
-freciprocal-math启用假设可以使用值的倒数而不是除以值的优化。
-fno 有符号零启用忽略浮点零值符号的优化。
-fno-trapping-math启用假定浮点运算无法生成用户可见陷阱的优化。
-funsafe-math-optimizations启用假定浮点参数和结果有效且可能违反 IEEE 或 ANSI 标准的代码优化。 此选项启用 -fno-signed-zeros 、 -fno-trapping-math 、-fassociative-math 和 -freciprocal-math 。

3.4.20 链接时间优化

参数描述
-S-lto运行 LLVM 编译器,直到并包括链接时优化器的程序集生成步骤(第 3.6.4 节)。
-c-lto运行 LLVM 编译器,直到并包括链接时优化器的对象生成步骤。
-Wlto arg, …将指定的参数传递给链接时优化器。 参数列表跟在选项后面,并以逗号分隔。
-flto-scope=(program|library)指定链接时优化的范围(第 3.6.4 节)。程序,跨所有位代码对象和档案应用模块间优化。库,仅在归档边界应用模块间优化。
-lto-no-inter-mod-inline在链接时优化期间禁用跨模块边界内联。
-lto-w-no-unknown-sym禁用有关保留未知符号的警告。
-lto-preserve symbol防止链接时优化丢弃符号。
-lto-preserve-list filename指定链接时优化器应保留的符号。 指定的文本文件包含一个符号列表,每个符号在文件中的单独一行中。

3.4.21 安全编程

参数描述
–analyze对指定的输入文件调用静态程序分析器(第 3.7.1 节)。 --compile-and-analyze dir 在运行静态分析器时编译输入文件(第 3.7.1 节)。 分析报告文件写入指定目录。
-analyzer-output type指定静态分析器输出报告的数据格式。 HTML 是唯一支持的格式 - type 必须设置为值 html 。
-analyzer-checker=checker在静态程序分析器中启用指定的检查器或检查器类别。 检查器类别是 alpha 、 core 、 cplusplus 、 debug 和 security 。 启用检查器类别会启用该类别中的所有检查器。 有关检查器名称的完整列表,请使用 -analyzer-checker-help 。
-analyzer-disable-checker=checker在静态程序分析器中禁用指定的检查器或检查器类别。 检查器类别是 alpha 、 core 、 cplusplus 、 debug 和 security 。 禁用检查器类别会禁用该类别中的所有检查器。 有关检查器名称的完整列表,请使用 -analyzer-checker-help 。
-analyzer-checker-help列出在 -analyzer-checker 和 -analyzer-checker-disable 中使用的完整检查器集及其类别。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值