GNU编译器内部实现
For gcc version 4.4.5
Richard M. Stallman and the GCC Developer Community
版权 c 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2004, 2005, 2006, 2007, 2008 自由软件基金会
您可以依据自由软件基金会所发行的GNU自由文档授权1.2版本或者之后的任何版本, 对本文档进行
复制,分发和/或修改;其中不可变章节为"资助自由软件",封面文 字为 (a) (参见下面),以及封底
文字为 (b) (参见下面)。授权的副本要被包含在 标题为"GNU自由文档授权"的章节中。
(a) FSF的封面文字为:
GNU 手册
(b) FSF的封底文字为:
您可以自由复制和修改本GNU手册,如同GNU软件。由自由软件基金会所发行 的副本用于为GNU
开发筹集资金。
i
Short Contents
简介 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1
1 向GCC开发提供帮助 : : : : : : : : : : : : : : : : : : : : : : : 1
2 GCC与可移植性 : : : : : : : : : : : : : : : : : : : : : : : : : 1
3 GCC的输出接口 : : : : : : : : : : : : : : : : : : : : : : : : : 2
4 GCC低级运行时库 : : : : : : : : : : : : : : : : : : : : : : : : 2
5 GCC中的语言前端 : : : : : : : : : : : : : : : : : : : : : : : 45
6 源目录结构和构建系统 : : : : : : : : : : : : : : : : : : : : : 45
7 选项描述文件 : : : : : : : : : : : : : : : : : : : : : : : : : : 67
8 编译器的Passes和相关文件 : : : : : : : : : : : : : : : : : : 69
Trees: C和C++前端使用的中间表示 : : : : : : : : : : : : : 79
9
10 RTL表示 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 108
11 GENERIC : : : : : : : : : : : : : : : : : : : : : : : : : : : 147
12 GIMPLE : : : : : : : : : : : : : : : : : : : : : : : : : : : : 148
13 分析和优化GIMPLE元组 : : : : : : : : : : : : : : : : : : : 178
14 循环分析和表示 : : : : : : : : : : : : : : : : : : : : : : : : 189
15 控制流图 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 195
16 机器描述 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 201
17 目标机描述宏和函数 : : : : : : : : : : : : : : : : : : : : : 282
18 主机配置 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 401
19 Makefile片段 : : : : : : : : : : : : : : : : : : : : : : : : : 403
20 collect2 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 405
21 标准头文件目录 : : : : : : : : : : : : : : : : : : : : : : : : 406
22 内存管理和类型信息 : : : : : : : : : : : : : : : : : : : : : 407
资助自由软件 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 411
GNU项目和GNU/Linux : : : : : : : : : : : : : : : : : : : : : : 412
GNU通用公共授权 : : : : : : : : : : : : : : : : : : : : : : : : : 412
GNU自由文档授权 : : : : : : : : : : : : : : : : : : : : : : : : : 423
GCC的贡献者 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 430
选项索引 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 445
概念索引 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 445
ii
GNU编译器内部实现
Table of Contents
简介 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1
1 向GCC开发提供帮助 : : : : : : : : : : : : : : : : : : : : : 1
2 GCC与可移植性 : : : : : : : : : : : : : : : : : : : : : : : : 1
3 GCC的输出接口 : : : : : : : : : : : : : : : : : : : : : : : : 2
4 GCC低级运行时库 : : : : : : : : : : : : : : : : : : : : : : 2
4.1 整数算术例程 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 3
4.1.1 算术函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 3
4.1.2 比较函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 4
4.1.3 可产生异常的算术函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : 4
4.1.4 位运算 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 4
4.2 浮点模拟例程 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 5
4.2.1 算术函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 5
4.2.2 转换函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6
4.2.3 比较函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 8
4.2.4 其它浮点函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 9
4.3 十进制浮点模拟例程 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 9
4.3.1 算术函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 9
4.3.2 转换函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 10
4.3.3 比较函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 13
4.4 定点小数模拟例程 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 14
4.4.1 算术函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 14
4.4.2 比较函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 21
4.4.3 转换函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 21
4.5 语言无关的异常处理例程 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 44
4.6 其它运行时库例程 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 45
4.6.1 Cache控制函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 45
5 GCC中的语言前端 : : : : : : : : : : : : : : : : : : : : : 45
6 源目录结构和构建系统 : : : : : : : : : : : : : : : : : : : 45
6.1 配置术语和历史 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 45
6.2 顶层源文件目录 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 46
6.3 `gcc' 子目录 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 47
6.3.1 `gcc'的子目录 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 47
6.3.2 `gcc'目录下的配置 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 47
6.3.2.1 `configure'使用的脚本 : : : : : : : : : : : : : : : : : : : : : : : 48
6.3.2.2 `config.build',`config.host'和`config.gcc'文件 : : : : : 48
iii
6.3.2.3 由configure创建的文件 : : : : : : : : : : : : : : : : : : : : : : 48
6.3.3 `gcc'目录下的构建系统 : : : : : : : : : : : : : : : : : : : : : : : : : : 49
6.3.4 Makefile工作目标 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 49
6.3.5 在`gcc'目录下的库源文件和头文件 : : : : : : : : : : : : : : : : : : : 51
6.3.6 GCC安装的头文件 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 51
6.3.7 构建文档 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 51
6.3.7.1 Texinfo手册 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 52
6.3.7.2 生成Man Page : : : : : : : : : : : : : : : : : : : : : : : : : : : : 52
6.3.7.3 其它文档 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 53
6.3.8 语言前端剖析 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 53
6.3.8.1 前端`language'目录 : : : : : : : : : : : : : : : : : : : : : : : : : 54
6.3.8.2 前端`config-lang.in'文件 : : : : : : : : : : : : : : : : : : : : : 56
6.3.9 目标机后端剖析 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 56
6.4 测试包 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 57
6.4.1 测试包代码中使用的习惯用法 : : : : : : : : : : : : : : : : : : : : : : 57
6.4.2 DejaGnu测试中使用的指令 : : : : : : : : : : : : : : : : : : : : : : : 58
6.4.3 Ada语言测试包 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 62
6.4.4 C语言测试包 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 62
6.4.5 Java库测试包 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 64
6.4.6 对gcov测试的支持 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 64
6.4.7 对profile-directed优化测试的支持 : : : : : : : : : : : : : : : : : : : 65
6.4.8 对二进制兼容性测试的支持 : : : : : : : : : : : : : : : : : : : : : : : : 65
6.4.9 对使用多个选项进行torture测试的支持 : : : : : : : : : : : : : : : : 66
7 选项描述文件 : : : : : : : : : : : : : : : : : : : : : : : : : 67
7.1 选项文件格式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 67
7.2 选项属性 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 68
8 编译器的Passes和相关文件 : : : : : : : : : : : : : : : 69
8.1 语法分析过程 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 69
8.2 Gimplification过程 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 70
8.3 过程管理器 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 70
8.4 Tree-SSA过程 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 71
8.5 RTL过程 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 76
9 Trees: C和C++前端使用的中间表示 : : : : : : : : : : 79
9.1 不足之处 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 79
9.2 概述 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 79
9.2.1 Trees : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 80
9.2.2 标识符 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 80
9.2.3 容器 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 81
9.3 类型 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 81
9.4 作用域 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 85
9.4.1 命名空间 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 85
9.4.2 类 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 86
9.5 声明 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 87
9.5.1 关于声明的操作 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 87
iv
GNU编译器内部实现
9.5.2 内部结构 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 89
9.5.2.1 目前的结构层次 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 89
9.5.2.2 添加新的DECL节点类型 : : : : : : : : : : : : : : : : : : : : : : 90
9.6 函数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 91
9.6.1 函数基础 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 91
9.6.2 函数体 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 94
9.6.2.1 语句 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 94
9.7 树中的属性 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 97
9.8 表达式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 97
10 RTL表示 : : : : : : : : : : : : : : : : : : : : : : : : : : 108
10.1 RTL对象类型 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 108
10.2 RTL类别和格式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 109
10.3 访问操作数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 111
10.4 访问特殊操作数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 111
10.5 RTL表达式中的标记 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 113
10.6 机器模式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 118
10.7 常量表达式类型 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 122
10.8 寄存器和内存 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 123
10.9 RTL算术运算表达式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 128
10.10 比较运算 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 131
10.11 位域 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 132
10.12 向量运算 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 132
10.13 转换 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 133
10.14 声明 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 134
10.15 副作用表达式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 134
10.16 地址中嵌入的副作用 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 138
10.17 作为表达式的汇编指令 : : : : : : : : : : : : : : : : : : : : : : : : : : : 139
10.18 Insns : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 139
10.19 函数调用insns的RTL表示 : : : : : : : : : : : : : : : : : : : : : : : : : : 145
10.20 结构共享假设 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 146
10.21 读取RTL : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 146
11 GENERIC : : : : : : : : : : : : : : : : : : : : : : : : : 147
11.1 语句 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 147
11.1.1 块 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 147
11.1.2 语句序列 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 147
11.1.3 空语句 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 147
11.1.4 跳转 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 148
11.1.5 清除 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 148
v
12 GIMPLE : : : : : : : : : : : : : : : : : : : : : : : : : : 148
12.1 元组表示 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 149
12.1.1 gimple statement base (gsbase) : : : : : : : : : : : : : : : : : : 149
12.1.2 gimple statement with ops : : : : : : : : : : : : : : : : : : : : : 150
12.1.3 gimple statement with memory ops : : : : : : : : : : : : : : : : 150
12.2 GIMPLE指令集 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 151
12.3 异常处理 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 152
12.4 Temporaries : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 153
12.5 操作数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 153
12.5.1 复合表达式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 153
12.5.2 复合左值 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 153
12.5.3 条件表达式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 153
12.5.4 逻辑运算符 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 154
12.5.5 操作操作数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 154
12.5.6 操作数向量分配 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 154
12.5.7 操作数有效性 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 155
12.5.8 语句有效性 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 155
12.6 操作GIMPLE语句 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 156
12.6.1 通用访问方法 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 156
12.7 元组特定访问方法 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 158
12.7.1 GIMPLE ASM : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 158
12.7.2 GIMPLE ASSIGN : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 159
12.7.3 GIMPLE BIND : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 160
12.7.4 GIMPLE CALL : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 161
12.7.5 GIMPLE CATCH : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 162
12.7.6 GIMPLE CHANGE DYNAMIC TYPE : : : : : : : : : : : : : : : : : : : : : 163
12.7.7 GIMPLE COND : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 163
12.7.8 GIMPLE EH FILTER : : : : : : : : : : : : : : : : : : : : : : : : : : : : 164
12.7.9 GIMPLE LABEL : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 165
12.7.10 GIMPLE NOP : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 165
12.7.11 GIMPLE OMP ATOMIC LOAD : : : : : : : : : : : : : : : : : : : : : : : 165
12.7.12 GIMPLE OMP ATOMIC STORE : : : : : : : : : : : : : : : : : : : : : : 165
12.7.13 GIMPLE OMP CONTINUE : : : : : : : : : : : : : : : : : : : : : : : : : 166
12.7.14 GIMPLE OMP CRITICAL : : : : : : : : : : : : : : : : : : : : : : : : : 166
12.7.15 GIMPLE OMP FOR : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 166
12.7.16 GIMPLE OMP MASTER : : : : : : : : : : : : : : : : : : : : : : : : : : 168
12.7.17 GIMPLE OMP ORDERED : : : : : : : : : : : : : : : : : : : : : : : : : : 168
12.7.18 GIMPLE OMP PARALLEL : : : : : : : : : : : : : : : : : : : : : : : : : 168
12.7.19 GIMPLE OMP RETURN : : : : : : : : : : : : : : : : : : : : : : : : : : 169
12.7.20 GIMPLE OMP SECTION : : : : : : : : : : : : : : : : : : : : : : : : : : 169
12.7.21 GIMPLE OMP SECTIONS : : : : : : : : : : : : : : : : : : : : : : : : : 169
12.7.22 GIMPLE OMP SINGLE : : : : : : : : : : : : : : : : : : : : : : : : : : 170
12.7.23 GIMPLE PHI : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 170
12.7.24 GIMPLE RESX : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 171
12.7.25 GIMPLE RETURN : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 171
12.7.26 GIMPLE SWITCH : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 171
12.7.27 GIMPLE TRY : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 172
12.7.28 GIMPLE WITH CLEANUP EXPR : : : : : : : : : : : : : : : : : : : : : 172
vi
GNU编译器内部实现
12.8 GIMPLE序列 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 173
12.9 序列迭代器 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 174
12.10 增加一个新的GIMPLE语句代码 : : : : : : : : : : : : : : : : : : : : : : 177
12.11 语句和操作数遍历 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 177
13 分析和优化GIMPLE元组 : : : : : : : : : : : : : : : : 178
13.1 Annotations : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 178
13.2 SSA操作数 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 178
13.2.1 操作数迭代器和访问例程 : : : : : : : : : : : : : : : : : : : : : : : 179
13.2.2 立即使用 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 181
13.3 静态单赋值 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 183
13.3.1 保持SSA形式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 184
13.3.2 保持虚SSA形式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 185
13.3.3 检验SSA NAME节点 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 185
13.3.4 遍历use-def链 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 186
13.3.5 遍历支配树 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 186
13.4 别名分析 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 186
14 循环分析和表示 : : : : : : : : : : : : : : : : : : : : : 189
14.1 循环表示 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 189
14.2 循环查询 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 190
14.3 循环操作 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 191
14.4 循环封闭的SSA形式 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 192
14.5 标量演化 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 192
14.6 RTL上的IV分析 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 193
14.7 迭代次数分析 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 193
14.8 数据依赖分析 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 194
14.9 线性循环转换框架 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 195
14.10 Omega 一种对线性规划问题的求解 : : : : : : : : : : : : : : : : : : : 195
15 控制流图 : : : : : : : : : : : : : : : : : : : : : : : : : : 195
15.1 基本块 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 196
15.2 边 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 197
15.3 Profile信息 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 199
15.4 维护CFG : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 200
15.5 活跃信息 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 201