Allow initializing variable initializers with variables

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7354 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-07-28 03:39:57 +00:00
parent 699104633a
commit ce3d64025b
4 changed files with 22 additions and 2 deletions

View File

@ -127,6 +127,15 @@ Init *RecordRecTy::convertValue(DefInit *DI) {
return DI;
}
Init *RecordRecTy::convertValue(TypedInit *VI) {
// Ensure that VI is compatible with Rec.
if (RecordRecTy *RRT = dynamic_cast<RecordRecTy*>(VI->getType()))
if (RRT->getRecord()->isSubClassOf(getRecord()) ||
RRT->getRecord() == getRecord())
return VI;
return 0;
}
//===----------------------------------------------------------------------===//
// Initializer implementations
//===----------------------------------------------------------------------===//

View File

@ -136,7 +136,8 @@ public:
Record *getRecord() const { return Rec; }
Init *convertValue(UnsetInit *UI) { return (Init*)UI; }
Init *convertValue( DefInit *DI);
Init *convertValue( DefInit *DI);
Init *convertValue(TypedInit *VI);
void print(std::ostream &OS) const;
};

View File

@ -127,6 +127,15 @@ Init *RecordRecTy::convertValue(DefInit *DI) {
return DI;
}
Init *RecordRecTy::convertValue(TypedInit *VI) {
// Ensure that VI is compatible with Rec.
if (RecordRecTy *RRT = dynamic_cast<RecordRecTy*>(VI->getType()))
if (RRT->getRecord()->isSubClassOf(getRecord()) ||
RRT->getRecord() == getRecord())
return VI;
return 0;
}
//===----------------------------------------------------------------------===//
// Initializer implementations
//===----------------------------------------------------------------------===//

View File

@ -136,7 +136,8 @@ public:
Record *getRecord() const { return Rec; }
Init *convertValue(UnsetInit *UI) { return (Init*)UI; }
Init *convertValue( DefInit *DI);
Init *convertValue( DefInit *DI);
Init *convertValue(TypedInit *VI);
void print(std::ostream &OS) const;
};