LLVM每日谈之五十六 从RegionPass看Region

栏目: 服务器 · 编程工具 · 发布时间: 7年前

LLVM每日谈之五十六 从RegionPass看Region

RegionPass是Pass的一个子类,和其他Pass的子类(ModulePass、FunctionPass、LoopPass、BasicBlockPass)一样,都是同样的一个模式:运行在每一个XX之上。(注:这里的XX代表着这几个Pass的针对的对象,每个都不同。FunctionPass运行在每一个Function之上,RegionPass运行在每一个Region之上。其他同样)

但是RegionPass有一些特殊之处,这主要是由于Region和Module、Function、Loop、BasicBlock的差别造成的。众所周知,Module、Function、Loop、BasicBlock都是LLVM IR的基本结构,相对而言比较容易理解。尤其是Module、Function、BasicBlock这三层结构,接触过LLVM IR的都比较熟悉。而Region则不能算是一个基本结构,它的定义为:

Region is a connected subgraph of a control flow graph that has exactly two connections to the remaining graph. It can be used to analyze or optimize parts of the control flow graph.(来自: RegionInfo.h 的注释)

翻译过来就是:Region是一个控制流图的连接的子图,它和剩余的部分有两个连接。它可以被用来分析和优化控制流图中的部分内容。

所以,一个简单的Region和剩余的图有两个边的连接,一个是入点,一个是出点。Region的入点是进入Region之后的第一个BasicBlock;Region的出点是离开Region之后的第一个BasicBlock。Region的入点BasicBlock主导Region的所有BasicBlock;Region的出点BasicBlock后置主导Region的所有BasicBlock。

来一起看个具体的实例:

LLVM每日谈之五十六 从RegionPass看Region

图中是Region的实例,图中共有两个Region,一个A一个B。这里的出点还容易让有点迷惑,需要针对图仔细揣摩一下。A是B的父Region。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

游戏引擎架构

游戏引擎架构

[美] Jason Gregory (杰森.格雷戈瑞) / 叶劲峰 / 电子工业出版社 / 2014-1 / 128.00元

《游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗。虽然书中采用的例子通常依据一些专门的技术,但是讨论范围远超于某个引擎或API。文中的参考及引用也非常有用,可让读者继续深入游戏开发过程的任何特定方向。 《游戏引擎架构》为一个大学程度的游戏编程课程而编写,但也适合软件工程师、业余爱好者、自学游戏程......一起来看看 《游戏引擎架构》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具