Fix the -opt switch and add a test case for it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51784 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Mikhail Glushenkov 2008-05-30 19:56:27 +00:00
parent 18aac1c622
commit 74a0c28fba
4 changed files with 27 additions and 8 deletions

12
test/LLVMC/opt-test.c Normal file
View File

@ -0,0 +1,12 @@
/*
* Check that the -opt switch works.
* RUN: llvmc2 %s -opt -o %t
* RUN: ./%t | grep hello
*/
#include <stdio.h>
int main() {
printf("hello\n");
return 0;
}

View File

@ -151,6 +151,10 @@ namespace {
Out.appendComponent(BaseName);
}
Out.appendSuffix(Suffix);
// NOTE: makeUnique always *creates* a unique temporary file,
// which is good, since there will be no races. However, some
// tools do not like it when the output file already exists, so
// they have to be placated with -f or something like that.
Out.makeUnique(true, NULL);
return Out;
}

View File

@ -27,9 +27,12 @@ def llvm_gcc_c : Tool<
(output_suffix "bc"),
(cmd_line (case
(switch_on "E"),
"llvm-g++ -E -x c $INFILE",
(case (not_empty "o"),
"llvm-gcc -E -x c++ $INFILE -o $OUTFILE",
(default),
"llvm-gcc -E -x c++ $INFILE"),
(default),
"llvm-g++ -c -x c $INFILE -o $OUTFILE -emit-llvm")),
"llvm-gcc -c -x c $INFILE -o $OUTFILE -emit-llvm")),
(switch_option "E", (stop_compilation),
(help "Stop after the preprocessing stage, do not run the compiler")),
(sink)
@ -41,8 +44,10 @@ def llvm_gcc_cpp : Tool<
(output_suffix "bc"),
(cmd_line (case
(switch_on "E"),
// TOFIX: this does not play well with -o
"llvm-g++ -E -x c++ $INFILE",
(case (not_empty "o"),
"llvm-g++ -E -x c++ $INFILE -o $OUTFILE",
(default),
"llvm-g++ -E -x c++ $INFILE"),
(default),
"llvm-g++ -c -x c++ $INFILE -o $OUTFILE -emit-llvm")),
(switch_option "E", (stop_compilation)),
@ -54,7 +59,7 @@ def opt : Tool<
(out_language "llvm-bitcode"),
(switch_option "opt", (help "Enable opt")),
(output_suffix "bc"),
(cmd_line "opt $INFILE -o $OUTFILE")
(cmd_line "opt -f $INFILE -o $OUTFILE")
]>;
def llvm_as : Tool<

View File

@ -32,8 +32,6 @@ using namespace llvmc;
// Built-in command-line options.
// External linkage here is intentional.
// TOFIX: Write a 'driver driver' (easier to do as a separate
// executable that drives llvmc2 proper).
cl::list<std::string> InputFilenames(cl::Positional, cl::desc("<input file>"),
cl::ZeroOrMore);
cl::opt<std::string> OutputFilename("o", cl::desc("Output file name"),
@ -42,7 +40,7 @@ cl::list<std::string> Languages("x",
cl::desc("Specify the language of the following input files"),
cl::ZeroOrMore);
cl::opt<bool> DryRun("dry-run",
cl::desc("only pretend to run commands"));
cl::desc("Only pretend to run commands"));
cl::opt<bool> VerboseMode("v",
cl::desc("Enable verbose mode"));
cl::opt<bool> WriteGraph("write-graph",