繁体   English   中英

如何在LLVM中保留寄存器?

[英]How can I reserve registers in LLVM?

我正在尝试实现特殊的编译器级LLVM传递,它将必须在ARM微体系结构的可用32个GPR中保留20个寄存器,以便对这些保留的寄存器进行实验。 我打算在IR级别上执行此操作。 可能吗?

您可能正在寻找编辑RegisterInfo.td文件。 我没有具体完成您要尝试执行的操作,但请查看Target.td以获得一些提示。 IsAllocatable看起来很有希望,或者可能会删除您不希望LLVM使用的寄存器。

由于IR寄存器是虚拟且无限的,因此绝对不会处于IR级别。 您可以使用XXXRegisterInfo :: getReservedRegs()将寄存器标记为保留。

BitVector XXXRegisterInfo::getReservedRegs(const MachineFunction &MF) const {
  BitVector Reserved(getNumRegs());

  Reserved.set(XXX::REGX);

  return Reserved;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM