diff --git a/support/tools/TableGen/Record.cpp b/support/tools/TableGen/Record.cpp index 968f367bd7a..616c790f06b 100644 --- a/support/tools/TableGen/Record.cpp +++ b/support/tools/TableGen/Record.cpp @@ -146,6 +146,12 @@ Init *ListRecTy::convertValue(TypedInit *TI) { return 0; } +Init *CodeRecTy::convertValue(TypedInit *TI) { + if (TI->getType()->typeIsConvertibleTo(this)) + return TI; + return 0; +} + Init *DagRecTy::convertValue(TypedInit *TI) { if (TI->getType()->typeIsConvertibleTo(this)) return TI; diff --git a/support/tools/TableGen/Record.h b/support/tools/TableGen/Record.h index 4573af0ee7f..cb42f035329 100644 --- a/support/tools/TableGen/Record.h +++ b/support/tools/TableGen/Record.h @@ -207,6 +207,7 @@ public: struct CodeRecTy : public RecTy { Init *convertValue(UnsetInit *UI) { return (Init*)UI; } Init *convertValue( CodeInit *CI) { return (Init*)CI; } + Init *convertValue(TypedInit *TI); void print(std::ostream &OS) const { OS << "code"; } diff --git a/utils/TableGen/Record.cpp b/utils/TableGen/Record.cpp index 968f367bd7a..616c790f06b 100644 --- a/utils/TableGen/Record.cpp +++ b/utils/TableGen/Record.cpp @@ -146,6 +146,12 @@ Init *ListRecTy::convertValue(TypedInit *TI) { return 0; } +Init *CodeRecTy::convertValue(TypedInit *TI) { + if (TI->getType()->typeIsConvertibleTo(this)) + return TI; + return 0; +} + Init *DagRecTy::convertValue(TypedInit *TI) { if (TI->getType()->typeIsConvertibleTo(this)) return TI; diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h index 4573af0ee7f..cb42f035329 100644 --- a/utils/TableGen/Record.h +++ b/utils/TableGen/Record.h @@ -207,6 +207,7 @@ public: struct CodeRecTy : public RecTy { Init *convertValue(UnsetInit *UI) { return (Init*)UI; } Init *convertValue( CodeInit *CI) { return (Init*)CI; } + Init *convertValue(TypedInit *TI); void print(std::ostream &OS) const { OS << "code"; }