Bugfixes for edis. Code to initialize instruction

state was being executed too lazily, and the LLVM
assembly syntax for the disassembler was not being
written into the proper disassembler state variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100830 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Sean Callanan 2010-04-09 00:11:15 +00:00
parent e60bb15982
commit 4285b294a8
2 changed files with 4 additions and 5 deletions

View File

@ -171,9 +171,9 @@ EDDisassembler::EDDisassembler(CPUKey &key) :
const char *triple = infoMap->String;
int syntaxVariant = getLLVMSyntaxVariant(key.Arch, key.Syntax);
LLVMSyntaxVariant = getLLVMSyntaxVariant(key.Arch, key.Syntax);
if (syntaxVariant < 0)
if (LLVMSyntaxVariant < 0)
return;
std::string tripleString(triple);
@ -210,7 +210,7 @@ EDDisassembler::EDDisassembler(CPUKey &key) :
InstString.reset(new std::string);
InstStream.reset(new raw_string_ostream(*InstString));
InstPrinter.reset(Tgt->createMCInstPrinter(syntaxVariant, *AsmInfo));
InstPrinter.reset(Tgt->createMCInstPrinter(LLVMSyntaxVariant, *AsmInfo));
if (!InstPrinter)
return;

View File

@ -33,6 +33,7 @@ EDInst::EDInst(llvm::MCInst *inst,
BranchTarget(-1),
MoveSource(-1),
MoveTarget(-1) {
OperandOrder = ThisInstInfo->operandOrders[Disassembler.llvmSyntaxVariant()];
}
EDInst::~EDInst() {
@ -60,8 +61,6 @@ int EDInst::stringify() {
if (Disassembler.printInst(String, *Inst))
return StringifyResult.setResult(-1);
OperandOrder = ThisInstInfo->operandOrders[Disassembler.llvmSyntaxVariant()];
return StringifyResult.setResult(0);
}