summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-mc/Disassembler.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-03-20 22:36:35 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-03-20 22:36:35 +0000
commitd9d5b315abcfb85b39c8c34970864888fcdb1098 (patch)
treed0582b1a12a98a144852abb41864325a5a86a306 /llvm/tools/llvm-mc/Disassembler.cpp
parent98055cc154a08ad0fe12e2e483312f91c9413701 (diff)
downloadbcm5719-llvm-d9d5b315abcfb85b39c8c34970864888fcdb1098.tar.gz
bcm5719-llvm-d9d5b315abcfb85b39c8c34970864888fcdb1098.zip
llvm-mc: Fix MCInstPrinter memory leaks.
llvm-svn: 99101
Diffstat (limited to 'llvm/tools/llvm-mc/Disassembler.cpp')
-rw-r--r--llvm/tools/llvm-mc/Disassembler.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/llvm/tools/llvm-mc/Disassembler.cpp b/llvm/tools/llvm-mc/Disassembler.cpp
index dbfe7a5d06f..0caf539ac95 100644
--- a/llvm/tools/llvm-mc/Disassembler.cpp
+++ b/llvm/tools/llvm-mc/Disassembler.cpp
@@ -47,8 +47,8 @@ public:
};
}
-static bool PrintInsts(const llvm::MCDisassembler &DisAsm,
- llvm::MCInstPrinter &Printer, const ByteArrayTy &Bytes,
+static bool PrintInsts(const MCDisassembler &DisAsm,
+ MCInstPrinter &Printer, const ByteArrayTy &Bytes,
SourceMgr &SM) {
// Wrap the vector in a MemoryObject.
VectorMemoryObject memoryObject(Bytes);
@@ -77,24 +77,23 @@ static bool PrintInsts(const llvm::MCDisassembler &DisAsm,
}
int Disassembler::disassemble(const Target &T, const std::string &Triple,
- MemoryBuffer &Buffer) {
+ MemoryBuffer &Buffer) {
// Set up disassembler.
- llvm::OwningPtr<const llvm::MCAsmInfo> AsmInfo(T.createAsmInfo(Triple));
+ OwningPtr<const MCAsmInfo> AsmInfo(T.createAsmInfo(Triple));
if (!AsmInfo) {
errs() << "error: no assembly info for target " << Triple << "\n";
return -1;
}
- llvm::OwningPtr<const llvm::MCDisassembler> DisAsm(T.createMCDisassembler());
+ OwningPtr<const MCDisassembler> DisAsm(T.createMCDisassembler());
if (!DisAsm) {
errs() << "error: no disassembler for target " << Triple << "\n";
return -1;
}
- llvm::MCInstPrinter *InstPrinter = T.createMCInstPrinter(0, *AsmInfo, outs());
-
- if (!InstPrinter) {
+ OwningPtr<MCInstPrinter> IP(T.createMCInstPrinter(0, *AsmInfo, outs()));
+ if (!IP) {
errs() << "error: no instruction printer for target " << Triple << '\n';
return -1;
}
@@ -151,7 +150,7 @@ int Disassembler::disassemble(const Target &T, const std::string &Triple,
}
if (!ByteArray.empty())
- ErrorOccurred |= PrintInsts(*DisAsm, *InstPrinter, ByteArray, SM);
+ ErrorOccurred |= PrintInsts(*DisAsm, *IP, ByteArray, SM);
return ErrorOccurred;
}
OpenPOWER on IntegriCloud