diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp index fd0109543a1..d96d164e54f 100644 --- a/tools/llc/llc.cpp +++ b/tools/llc/llc.cpp @@ -184,14 +184,12 @@ int main(int argc, char **argv) { std::auto_ptr M; if (Bitcode) { - MemoryBuffer *Buffer = MemoryBuffer::getFileOrSTDIN(&InputFilename[0], - InputFilename.size()); - if (Buffer == 0) - ErrorMessage = "Error reading file '" + InputFilename + "'"; + std::auto_ptr Buffer( + MemoryBuffer::getFileOrSTDIN(&InputFilename[0], InputFilename.size())); + if (Buffer.get()) + M.reset(ParseBitcodeFile(Buffer.get(), &ErrorMessage)); else - M.reset(ParseBitcodeFile(Buffer, &ErrorMessage)); - delete Buffer; - + ErrorMessage = "Error reading file '" + InputFilename + "'"; } else { M.reset(ParseBytecodeFile(InputFilename, Compressor::decompressToNewBuffer,