Bugfixes for edis. Code to initialize instruction
authorSean Callanan <scallanan@apple.com>
Fri, 9 Apr 2010 00:11:15 +0000 (00:11 +0000)
committerSean Callanan <scallanan@apple.com>
Fri, 9 Apr 2010 00:11:15 +0000 (00:11 +0000)
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

tools/edis/EDDisassembler.cpp
tools/edis/EDInst.cpp

index 072df822bf3098cd1643552924c33e73e203d1db..ed7dfb1a4120cb2ef9104004b6a1a6f134a6b71d 100644 (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;
index 1b6a3607ba8e60136111324de2e1c4a3c88b5519..de40770e900915adb7d30f5ae0a06fb550e551ac 100644 (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);
 }