【24h】

Tree register allocation

机译:树寄存器分配

获取原文

摘要

This paper presents tree register allocation, which maps the lifetimes of the variables in a program into a set of trees, colors each tree in a greedy style, which is optimal when there is no spilling, and connects dataflow between and within the trees afterward. This approach generalizes and subsumes as special cases SSA-based, linear scan, and local register allocation. It keeps their simplicity and low throughput cost, and exposes a wide solution space beyond them. Its flexibility enables control flow structure and/or profile information to be better reflected in the trees. This approach has been prototyped in the Phoenix production compiler framework. Preliminary experiments suggest this is a promising direction with great potential. Register allocation based on two special kinds of trees, extended basic blocks and the maximal spanning tree, are found to be competitive alternatives to SSA-based register allocation, and they all tend to generate better code than linear scan.
机译:本文提出了树寄存器分配方法,该方法将程序中变量的生存期映射到一组树中,以贪婪的方式为每棵树上色,这在没有溢出的情况下是最佳的,然后将树之间以及树内的数据流连接起来。这种方法概括并归纳为基于SSA,线性扫描和本地寄存器分配的特殊情况。它保持了它们的简单性和较低的吞吐成本,并为它们提供了广阔的解决方案空间。它的灵活性使控制流结构和/或配置文件信息可以更好地反映在树中。该方法已在Phoenix生产编译器框架中进行了原型设计。初步实验表明,这是一个有很大潜力的有前途的方向。发现基于两种特殊树的寄存器分配是扩展的基本块和最大生成树,它们是基于SSA的寄存器分配的竞争选择,它们都倾向于生成比线性扫描更好的代码。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号