通过语句组合剥离实现循环准不变式块移动
编程语言
2017-04-20 v1
摘要
编译器中使用了多种分析与变换技术。其中,用于提升准不变式的循环剥离可用于优化生成的代码,或简化开发人员的工作。本文引入一种从隐式计算复杂性(Implicit Computational Complexity, ICC)领域借鉴的依赖分析新概念,允许使用称为块(Chunks)的组合语句来检测更多准不变式。基于在WHILE语言上给出的优化思路,我们提供了一种复用ICC概念与技术的面向编译器的变换方法。这种新分析通过构建一种新型依赖图,为每个语句或语句块计算不变性程度,找到循环的最大或最差依赖图,并识别整个块是否为准不变式(Quasi-Invariant)。该块可能是内循环,在那种情况下整体程序的计算复杂性可得以降低。我们已在分析并变换AST表示的玩具C解析器上实现了概念验证。本文介绍了围绕该概念的理论,并展示了在LLVM上实现的原型分析遍。在不久的将来,我们将实现相应的变换并提供基准对比。
引用
@article{arxiv.1704.05589,
title = {Loop Quasi-Invariant Chunk Motion by peeling with statement composition},
author = {Jean-Yves Moyen and Thomas Rubiano and Thomas Seiller},
journal= {arXiv preprint arXiv:1704.05589},
year = {2017}
}
备注
In Proceedings DICE-FOPARA 2017, arXiv:1704.05169