99、编译器优化验证与模型检查技术

编译器优化验证与模型检查技术

1. 基于等式的 LLVM 翻译验证器

1.1 背景与动机

编译器优化在软件开发中至关重要,它能让程序员以更高的抽象层次编写程序,同时避免性能损失。然而,确保编译器优化的正确性是一个挑战。翻译验证是提高编译器优化可靠性的一种技术,即在每次优化运行后,使用翻译验证器来验证优化后的程序是否与原始程序等价。

此前开发了一种名为等式饱和的技术和名为 Peggy 的工具,用于推理程序等价性,并证明了其在 Soot 编译器翻译验证中的有效性。受相关研究启发,将 Peggy 工具进行了更新,使其可用于 LLVM 编译器的翻译验证。

1.2 Peggy 工具更新

为了让 Peggy 能用于 LLVM 的翻译验证,开发了几个新的、特定于 LLVM 的组件:
- LLVM 前端 :用于等式饱和引擎使用的中间表示。
- 新公理 :用于引擎推理 LLVM 的加载、存储和调用操作。
- 更新的常量折叠器 :考虑了 LLVM 运算符。

1.3 翻译验证示例

示例 1

以下是原始代码和优化代码:

// 原始代码
int f(p,t) {
    *p := t;
    *p := *p | (t & 4);
    return 0;
}

// 优化代码
int g(p,t) {
    *p := t | (t & 4);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值