美文网首页
编译器笔记49-代码优化-到达定值分析

编译器笔记49-代码优化-到达定值分析

作者: 衣忌破 | 来源:发表于2020-03-12 21:45 被阅读0次

到达定值分析

  • 定值(Definition)
    变量x的定值是(可能)将一个值赋给x的语句

  • 到达定值(Reaching Definition)

    1. 如果存在一条从紧跟在定值d后面的点到达某一程序点p的路径,而且在此路径上d没有被“杀死” ( 如果在此路径上有对变量x的其它定值d′,则称变量x被这个定值d′ “杀死” 了) ,则称定值d到达程序点p。

    2. 直观地讲,如果某个变量x的一个定值d到达点p,在点p处使用的x的值可能就是由d最后赋予的。

例-可以到达各基本块的入口处的定值.png

到达定值分析的主要用途

  • 循环不变计算的检测

如果循环中含有赋值x=y+z,而y和z所有可能的定值都在循环外面(包括y或z是常数的特殊情况),那么y+z就是循环不变计算。

  • 常量合并

如果对变量x的某次使用只有一个定值可以到达,并且该定值把可以到达,并且该定值把一个常量赋给x,那么可以简单地把x替换为该常量。

  • 判定变量x在p点上是否未经定值就被引用

“生成”与“杀死”定值

定值d:

u = v + w

这里,“+”代表一个一般性的二元运算符;该语句“生成”了一个对变量u的定值d,并“杀死”了程序中其它对u的定值。

到达定值的传递函数

定值d的传递函数.png

注:f_d(x)是指所有定值d之后到达定值d的集合

基本块B的传递函数.png

gen_B是需要考虑在B基本块中语句被本基本块杀死的情况。

例-各基本块B的genB和killB.png

到达定值的数据流方程

到达定值的数据流方程.png

注:除了ENTRY外的其他基本块,它们在出口处到达定值的值,可以通过每个基本块的传递函数来求得。一个基本块的出口处的到达定值依赖基本块的入口处的到达定值,那么基本块的入口处的到达定值如何求呢?我们说可以到达基本块的各个前驱基本块出口处的到达地址都可以到达入口处。因此基本块B入口处的到达地址等于它的各个前驱基本块出口处的地址的并集。

到达定值方程的计算

计算到达定值的迭代算法.png 例.png

注:初始时所有基本块的出口值都是空值,用类向量七个零来表示。

例.png
引用-定值链(Use-Definition Chains)

引用-定值链(简称ud链)是一个列表,对于变量的每一次引用,到达该引用的所有定值都在该列表中。

引用定值链.png

相关文章

  • 编译器笔记49-代码优化-到达定值分析

    到达定值分析 定值(Definition)变量x的定值是(可能)将一个值赋给x的语句 到达定值(Reaching ...

  • 编译器前端和后端

    编译器粗略分为词法分析,语法分析,类型检查,中间代码生成,代码优化,目标代码生成,目标代码优化。把中间代码生成及之...

  • Flutter 前端编译器编译流程分析

    1. 前端编译器和后端编译器的区别 编译流程粗略分为词法分析、语法分析、类型检查、中间代码生成、代码优化、目标代码...

  • 编译器的工作过程

    编译器的工作过程划分为:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。 词法分析器的任务是把...

  • 编译原理概述

    编译器原理 词法分析器 语法分析器 语义分析器 中间代码生成 符号表 独立机器的代码优化器 代码生成器 依赖于机器...

  • iOS的性能优化

    1、ipa包体积优化 1.1 编译配置优化:编译器代码层面优化Optimize Level;Bitcode(较难...

  • 编译器优化部分代码

    我们简单写一些代码看编译器优化前后的对比。编译器没有优化时 在Build Setting 搜索optimizati...

  • 编译器想做什么

    编译器就程序员写的代码变成CPU能理解机器代码。编译器的指令重排指开启编译器优化后,在不影响代码行为的前提下,代码...

  • C++ copy elision and return valu

    复制省略和返回值优化 复制省略和返回值优化是编译器可能存在的优化机制。今天在测试右值没有std::move的时候是...

  • 程序员自我修养2:编译过程

    编译过程分为6步:扫描(词法分析)、语法分析、语义分析、源代码优化、代码生成、目标代码优化。 示例代码:array...

网友评论

      本文标题:编译器笔记49-代码优化-到达定值分析

      本文链接:https://www.haomeiwen.com/subject/rmomjhtx.html