From 9690cc99134d36ab08f340980346590496ccc58c Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sat, 5 Sep 2009 11:34:53 +0000 Subject: [PATCH] opt: Add -S option to print output as LLVM assembly. llvm-svn: 81082 --- tools/opt/opt.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp index b1f5c0803a5..e4700667122 100644 --- a/tools/opt/opt.cpp +++ b/tools/opt/opt.cpp @@ -65,6 +65,10 @@ static cl::opt NoOutput("disable-output", cl::desc("Do not write result bitcode file"), cl::Hidden); +static cl::opt +OutputAssembly("S", + cl::desc("Write output as LLVM assembly"), cl::Hidden); + static cl::opt NoVerify("disable-verify", cl::desc("Do not verify result module"), cl::Hidden); @@ -375,8 +379,9 @@ int main(int argc, char **argv) { // If the output is set to be emitted to standard out, and standard out is a // console, print out a warning message and refuse to do it. We don't // impress anyone by spewing tons of binary goo to a terminal. - if (!Force && !NoOutput && CheckBitcodeOutputToConsole(*Out, !Quiet)) - NoOutput = true; + if (!Force && !NoOutput && !OutputAssembly) + if (CheckBitcodeOutputToConsole(*Out, !Quiet)) + NoOutput = true; // Create a PassManager to hold and optimize the collection of passes we are // about to build... @@ -495,9 +500,13 @@ int main(int argc, char **argv) { if (!NoVerify && !VerifyEach) Passes.add(createVerifierPass()); - // Write bitcode out to disk or outs() as the last step... - if (!NoOutput && !AnalyzeOnly) - Passes.add(createBitcodeWriterPass(*Out)); + // Write bitcode or assembly out to disk or outs() as the last step... + if (!NoOutput && !AnalyzeOnly) { + if (OutputAssembly) + Passes.add(createPrintModulePass(Out)); + else + Passes.add(createBitcodeWriterPass(*Out)); + } // Now that we have all of the passes ready, run them. Passes.run(*M.get());