我正在尝试实现一个特殊的编译器级LLVM传递,它必须在ARM微架构中的可用32个GPR中保留20个寄存器,以便我将在这些保留寄存器上执行我的实验。我打算在IR级别这样做。可能吗?
答案 0 :(得分:2)
您可能希望编辑RegisterInfo.td文件。我没有专门完成你想要做的事情,但是看一下Target.td的一些提示。 IsAllocatable看起来很有希望或者可能删除了您不希望LLVM使用的寄存器。
答案 1 :(得分:0)
由于IR寄存器是虚拟且无限的,因此绝对不会处于IR级别。您可以使用 XXXRegisterInfo :: getReservedRegs()将寄存器标记为保留。
List<MyClass> Migrated = File.Exists(MigratedPath) ? (JsonConvert.DeserializeObject<List<MyClass>>(File.ReadAllText(MigratedPath))) : new List<MyClass>();