2016-08-18 2 views
2

TableGenで生成された* .incファイル(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私はhereからそれをコピーした)であります

class AbcSubTarget : public AbcGenSubtargetInfo { 
    AbcFrameLowering *frameLowering; 

    // more fields and methods 

    const AbcFrameLowering *getFrameLowering() const override { 
     return frameLowering; 
    } 
}; 

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()メソッドをオーバーライドエラーメッセージは変更されませんでした。

私はLLVMをビルドするたびに再生成されるため、AbcGenRegisterInfo.incを編集できません。私はTableGenファイルに何が間違っているのか分かりません。


私はまた、コンパイルする前に、私のビルドディレクトリからAbcGenRegisterInfo.incファイルを削除しようとしたが、それは効果がなかったです。

答えて

2

AbcFrameLoweringはTargetFrameLoweringから継承しますか?タイプが無関係なので、静的なキャストが不平を言っているようです。

また、.incファイルが含まれる前にAbcFrameLoweringの定義を含むヘッダーが含まれていることを確認してください。そうしないと、静的なキャストも失敗します。

+0

おかげさまで、2番目の助言が助けられました - 「AbcFrameLowering.h」が適切な場所に含まれていませんでした。私はそれを含め、... 8つの新しいエラーがあったが、 'static_cast'エラーはなかった:D – KolesnichenkoDS

0

私はまったく同じエラーを抱えていますが、私はあなたの質問に完全に答えられませんが、問題の一部に対処できると思います。あなたは言った

コンパイルする前にAbcGenRegisterInfo.incファイルを自分のビルドディレクトリから削除しようとしましたが、効果がありませんでした。

AbcGenRegisterInfo.incが再生成されている(したがって削除しても効果がない)場合を除き、その不在が無効であるという事実は、TableGenには.inc.tmpファイルが存在するためです。バックアップ。私はVERBOSE = 1で作成すると、tablegenがこのように.tmpファイルを使用することを示唆していることがわかりました。

また、あなたの主な質問に対する具体的な回答ではなく、デバッグしようとしているときにその問題に対処することを願っています。

+0

これは再生されたという意味です。しかし、私はこの.tmpファイルを見つけ、.incファイルと.inc.tmpファイルを削除しました。私は実際には問題がTableGenのバックアップファイルだとは思っていません - 問題はコード内のどこかにある必要があります – KolesnichenkoDS

関連する問題

 関連する問題