diff options
author | Jim Grosbach <grosbach@apple.com> | 2012-03-05 19:33:20 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2012-03-05 19:33:20 +0000 |
commit | c6449b636f4984be88f128d0375c056ad05e7e8f (patch) | |
tree | f068034f4b7a57d03478e309ee26ad324741d252 /tools/llvm-mc | |
parent | c27faccb3cf67e469f4217e98c20ef9ff2b95241 (diff) | |
download | llvm-c6449b636f4984be88f128d0375c056ad05e7e8f.tar.gz llvm-c6449b636f4984be88f128d0375c056ad05e7e8f.tar.bz2 llvm-c6449b636f4984be88f128d0375c056ad05e7e8f.tar.xz |
Make MCRegisterInfo available to the the MCInstPrinter.
Used to allow context sensitive printing of super-register or sub-register
references.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152043 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-mc')
-rw-r--r-- | tools/llvm-mc/Disassembler.cpp | 11 | ||||
-rw-r--r-- | tools/llvm-mc/llvm-mc.cpp | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/tools/llvm-mc/Disassembler.cpp b/tools/llvm-mc/Disassembler.cpp index 8114580cb9..6793d7ef85 100644 --- a/tools/llvm-mc/Disassembler.cpp +++ b/tools/llvm-mc/Disassembler.cpp @@ -21,6 +21,7 @@ #include "llvm/MC/MCDisassembler.h" #include "llvm/MC/MCInst.h" #include "llvm/MC/MCInstPrinter.h" +#include "llvm/MC/MCRegisterInfo.h" #include "llvm/MC/MCSubtargetInfo.h" #include "llvm/ADT/OwningPtr.h" #include "llvm/ADT/Triple.h" @@ -160,16 +161,22 @@ int Disassembler::disassemble(const Target &T, errs() << "error: no subtarget info for target " << Triple << "\n"; return -1; } - + OwningPtr<const MCDisassembler> DisAsm(T.createMCDisassembler(*STI)); if (!DisAsm) { errs() << "error: no disassembler for target " << Triple << "\n"; return -1; } + OwningPtr<const MCRegisterInfo> MRI(T.createMCRegInfo(Triple)); + if (!MRI) { + errs() << "error: no register info for target " << Triple << "\n"; + return -1; + } + int AsmPrinterVariant = AsmInfo->getAssemblerDialect(); OwningPtr<MCInstPrinter> IP(T.createMCInstPrinter(AsmPrinterVariant, - *AsmInfo, *STI)); + *AsmInfo, *MRI, *STI)); if (!IP) { errs() << "error: no instruction printer for target " << Triple << '\n'; return -1; diff --git a/tools/llvm-mc/llvm-mc.cpp b/tools/llvm-mc/llvm-mc.cpp index f2365c6761..dc7297412d 100644 --- a/tools/llvm-mc/llvm-mc.cpp +++ b/tools/llvm-mc/llvm-mc.cpp @@ -416,7 +416,7 @@ static int AssembleInput(const char *ProgName) { // FIXME: There is a bit of code duplication with addPassesToEmitFile. if (FileType == OFT_AssemblyFile) { MCInstPrinter *IP = - TheTarget->createMCInstPrinter(OutputAsmVariant, *MAI, *STI); + TheTarget->createMCInstPrinter(OutputAsmVariant, *MAI, *MRI, *STI); MCCodeEmitter *CE = 0; MCAsmBackend *MAB = 0; if (ShowEncoding) { |