下载此文档

GCC4优化技术汇总.doc


文档分类:通信/电子 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
GCC的优化编译过程(version4)GCC的编译过程可分为4个子过程,包括Parsingpass、Gimplifcationpass、TreeSSApasses、RTLpasses。在这四个子过程中,GCC优化主要在TreeSSApasses和RTLpasses中进行。1、SSA优化(1)删除无用语句(Removeuselessstatements)该过程对gimple代码进行非常简单的扫描,识别出明显的死代码并删除。我们在这里做的一些事情包括,简化具有不变条件的if语句,删除对显然不会抛出异常的代码所做的异常处理,删除不含有变量的词法绑定(lexicalbindings),以及其它各种简单的清除。这是为了能够快速的去掉一些显而易见的东西,而不是等到后面去花费更多的功夫。该过程在tree-,并且由pass_remove_useless_stmts来描述。(2)死代码消除(Deadcodeelimination)该过程扫描函数来寻找没有副作用,且结果没有被使用的语句。它不进行内存活跃分析,所以任何存储在内存中值都被认为是被使用的。该过程在整个优化处理中被运行多次。它位于tree-ssa-,并由pass_dce来描述。(3)dominator优化(Dominatoroptimizations)该过程执行平凡的基于dominator的复制和常量传播,表达式简化,以及跳转线程化。它在整个优化处理中被运行多次。它位于tree-ssa-,并由pass_dominator来描述。(4)单用变量向前传播(Forwardpropagationofsingle-usevariables)该过程尝试移除冗余计算,通过将只使用一次的变量替换为使用它们的表达式,并查看是否得到的结果可以被简化。它位于tree-ssa-,并由pass_forwprop来描述。(5)可能别名优化(May-aliasoptimization)该过程执行一个流敏感基于SSA指向的分析。所得的may-alias,must-alias和escape分析信息用来将变量从内存中可寻址的对象提升为可以被重命名为SSA形式的无别名变量。过程位于tree-ssa-,并由pass_may_alias来描述。(6)死存储消除(Deadstoreelimination)该过程消除死存储,即存储到内存中,而该内存被随后的另一个存储操作重新写入,并且之间没有加载操作。过程位于tree-ssa-,并由pass_dse来描述。(7)尾递归消除(Tailrecursionelimination)该过程将所有的尾递归转换到一个循环中。它位于tree-,并由pass_tail_recursion来描述。(8)部分冗余消除(Partialredundancyelimination)该过程消除部分冗余计算,同时执行加载移动。过程位于tree-ssa-,并由pass_pre来描述。如果设置了-funsafe-math-optimizations,则在部分冗余消除前,GCC尝试通过倒数方式将除法转换为乘法。过程位于tree-ssa-math-,并由pass_cse_reciprocal来描述。(9)完全冗余

GCC4优化技术汇总 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sanshenglu2
  • 文件大小32 KB
  • 时间2020-08-11