mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-20 16:17:38 +00:00
eliminate the Records global variable, patch by Garrison Venn!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121659 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -108,7 +108,7 @@ std::string llvm::getQualifiedName(const Record *R) {
|
||||
|
||||
/// getTarget - Return the current instance of the Target class.
|
||||
///
|
||||
CodeGenTarget::CodeGenTarget() {
|
||||
CodeGenTarget::CodeGenTarget(RecordKeeper& records) : Records(records) {
|
||||
std::vector<Record*> Targets = Records.getAllDerivedDefinitions("Target");
|
||||
if (Targets.size() == 0)
|
||||
throw std::string("ERROR: No 'Target' subclasses defined!");
|
||||
@@ -314,7 +314,8 @@ void CodeGenTarget::ReadInstructions() const {
|
||||
|
||||
static const CodeGenInstruction *
|
||||
GetInstByName(const char *Name,
|
||||
const DenseMap<const Record*, CodeGenInstruction*> &Insts) {
|
||||
const DenseMap<const Record*, CodeGenInstruction*> &Insts,
|
||||
RecordKeeper &Records) {
|
||||
const Record *Rec = Records.getDef(Name);
|
||||
|
||||
DenseMap<const Record*, CodeGenInstruction*>::const_iterator
|
||||
@@ -358,7 +359,7 @@ void CodeGenTarget::ComputeInstrsByEnum() const {
|
||||
};
|
||||
const DenseMap<const Record*, CodeGenInstruction*> &Insts = getInstructions();
|
||||
for (const char *const *p = FixedInstrs; *p; ++p) {
|
||||
const CodeGenInstruction *Instr = GetInstByName(*p, Insts);
|
||||
const CodeGenInstruction *Instr = GetInstByName(*p, Insts, Records);
|
||||
assert(Instr && "Missing target independent instruction");
|
||||
assert(Instr->Namespace == "TargetOpcode" && "Bad namespace");
|
||||
InstrsByEnum.push_back(Instr);
|
||||
|
||||
Reference in New Issue
Block a user