mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-16 12:24:03 +00:00
Refactor instprinter and mcdisassembler to take a SubtargetInfo. Add -mattr= handling to llvm-mc. Reviewed by Owen Anderson.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139237 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -21,6 +21,7 @@
|
||||
#include "llvm/MC/MCDisassembler.h"
|
||||
#include "llvm/MC/MCInst.h"
|
||||
#include "llvm/MC/MCInstPrinter.h"
|
||||
#include "llvm/MC/MCSubtargetInfo.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
@ -140,6 +141,8 @@ static bool ByteArrayFromString(ByteArrayTy &ByteArray,
|
||||
|
||||
int Disassembler::disassemble(const Target &T,
|
||||
const std::string &Triple,
|
||||
const std::string &Cpu,
|
||||
const std::string &FeaturesStr,
|
||||
MemoryBuffer &Buffer,
|
||||
raw_ostream &Out) {
|
||||
// Set up disassembler.
|
||||
@ -150,7 +153,13 @@ int Disassembler::disassemble(const Target &T,
|
||||
return -1;
|
||||
}
|
||||
|
||||
OwningPtr<const MCDisassembler> DisAsm(T.createMCDisassembler());
|
||||
OwningPtr<const MCSubtargetInfo> STI(T.createMCSubtargetInfo(Triple, Cpu, FeaturesStr));
|
||||
if (!STI) {
|
||||
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;
|
||||
@ -158,7 +167,7 @@ int Disassembler::disassemble(const Target &T,
|
||||
|
||||
int AsmPrinterVariant = AsmInfo->getAssemblerDialect();
|
||||
OwningPtr<MCInstPrinter> IP(T.createMCInstPrinter(AsmPrinterVariant,
|
||||
*AsmInfo));
|
||||
*AsmInfo, *STI));
|
||||
if (!IP) {
|
||||
errs() << "error: no instruction printer for target " << Triple << '\n';
|
||||
return -1;
|
||||
|
Reference in New Issue
Block a user