为什么我从tablegend生成的*得到错误.. inc文件(LLVM)
Why I am getting errors from TableGen-generated *.inc files (LLVM)?
我正在尝试编写LLVM后端,当我试图构建它时,我得到以下错误消息:
AbcGenRegisterInfo.inc: In static member function 'static const llvm::AbcFrameLowering* llvm::AbcGenRegisterInfo::getFrameLowering(const llvm::MachineFunction&)':
AbcGenRegisterInfo.inc:322:43: error: invalid static_cast from type 'const llvm::TargetFrameLowering*' to type 'const llvm::AbcFrameLowering*'
MF.getSubtarget().getFrameLowering());
^
这是我的AbcRegisterInfo.td
(我从这里复制的):
class AbcReg<string n> : Register<n> {
let namespace = "Abc";
}
def DUMMY_REG : AbcReg<"R0">;
def RegI64 : RegisterClass<"Abc", [i64], 64, (add DUMMY_REG)>;
我还重写了AbcSubtarget::getFrameLowering()
方法:
class AbcSubTarget : public AbcGenSubtargetInfo {
AbcFrameLowering *frameLowering;
// more fields and methods
const AbcFrameLowering *getFrameLowering() const override {
return frameLowering;
}
};
但是错误信息没有改变。
我不明白该怎么做-我不能只是编辑AbcGenRegisterInfo.inc
,因为它会重新生成每次我将构建LLVM,我不明白什么是错的在我的TableGen文件。
我也试图在编译之前从我的构建目录中删除AbcGenRegisterInfo.inc
文件,但它没有效果。
AbcFrameLowering继承自TargetFrameLowering吗?看起来静态强制转换在抱怨,因为类型是不相关的。
还要确保在包含.inc文件之前包含带有abcframeowering定义的头文件,否则静态强制转换也会失败。
我也有同样的错误,虽然我不能完全回答你的问题,但我相信我可以解决问题的一部分。你说
我也试图删除AbcGenRegisterInfo。在编译之前从我的构建目录中取出Inc文件,但是没有效果。
除非你的意思是AbcGenRegisterInfo。inc.被重新生成(因此删除它没有效果),它的缺失没有效果的事实应该是由于TableGen有.inc.tmp文件作为备份。我注意到,当我使用VERBOSE=1时,有一条语句建议tablegen以这种方式使用.tmp文件。
同样,不是对您的主要问题的具体答案,但只是希望在尝试调试时帮助解决该问题。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- INC 操作码编译到错误的地址
- 致命错误:google/protobuf/port_def.inc:没有这样的文件或目录 #include < google/protobuf/port_def.inc>
- 为什么我从tablegend生成的*得到错误.. inc文件(LLVM)