diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/TableGen/Record.cpp | 6 | ||||
-rw-r--r-- | utils/TableGen/Record.h | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/utils/TableGen/Record.cpp b/utils/TableGen/Record.cpp index 204929e024..cf8aa40e22 100644 --- a/utils/TableGen/Record.cpp +++ b/utils/TableGen/Record.cpp @@ -93,6 +93,10 @@ Init *BitsRecTy::convertValue(TypedInit *VI) { return 0; } +Init *IntRecTy::convertValue(BitInit *BI) { + return new IntInit(BI->getValue()); +} + Init *IntRecTy::convertValue(BitsInit *BI) { int Result = 0; for (unsigned i = 0, e = BI->getNumBits(); i != e; ++i) @@ -105,7 +109,7 @@ Init *IntRecTy::convertValue(BitsInit *BI) { } Init *IntRecTy::convertValue(TypedInit *TI) { - if (dynamic_cast<IntRecTy*>(TI->getType())) + if (TI->getType()->typeIsConvertibleTo(this)) return TI; // Accept variable if already of the right type! return 0; } diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h index 4c4ad5a6b8..d841a2af05 100644 --- a/utils/TableGen/Record.h +++ b/utils/TableGen/Record.h @@ -145,6 +145,7 @@ public: struct IntRecTy : public RecTy { Init *convertValue(UnsetInit *UI) { return (Init*)UI; } Init *convertValue(IntInit *II) { return (Init*)II; } + Init *convertValue(BitInit *BI); Init *convertValue(BitsInit *BI); Init *convertValue(TypedInit *TI); |