From 3724945025b3c09a0961575f6afc1e82210b5dcd Mon Sep 17 00:00:00 2001 From: Mikhail Glushenkov Date: Wed, 22 Sep 2010 09:00:41 +0000 Subject: [PATCH] llvmc: Support '-emit-llvm -S' with -opt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114541 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/LLVMC/C/emit-llvm-opt.c | 7 +++++++ test/LLVMC/C/emit-llvm.c | 1 + tools/llvmc/src/Base.td.in | 23 ++++++++++++++++------- 3 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 test/LLVMC/C/emit-llvm-opt.c diff --git a/test/LLVMC/C/emit-llvm-opt.c b/test/LLVMC/C/emit-llvm-opt.c new file mode 100644 index 00000000000..ab670e98e9d --- /dev/null +++ b/test/LLVMC/C/emit-llvm-opt.c @@ -0,0 +1,7 @@ +// RUN: llvmc -c -opt -emit-llvm -o - %s | llvm-dis | grep "@f0()" | count 1 +// RUN: llvmc -c -opt -emit-llvm -S -o - %s | grep "@f0()" | count 1 +// RUN: llvmc --dry-run -c -opt -emit-llvm %s |& grep "^opt" +// XFAIL: vg_leak + +int f0(void) { +} diff --git a/test/LLVMC/C/emit-llvm.c b/test/LLVMC/C/emit-llvm.c index 9844bc757cc..58ac17e1515 100644 --- a/test/LLVMC/C/emit-llvm.c +++ b/test/LLVMC/C/emit-llvm.c @@ -1,4 +1,5 @@ // RUN: llvmc -c -emit-llvm -o - %s | llvm-dis | grep "@f0()" | count 1 +// RUN: llvmc -c -emit-llvm -S -o - %s | grep "@f0()" | count 1 // XFAIL: vg_leak int f0(void) { diff --git a/tools/llvmc/src/Base.td.in b/tools/llvmc/src/Base.td.in index 3c001864cab..09960ddc764 100644 --- a/tools/llvmc/src/Base.td.in +++ b/tools/llvmc/src/Base.td.in @@ -178,14 +178,20 @@ class llvm_gcc_based stop compilation + (and (switch_on "emit-llvm"), (not (switch_on "opt"))), + (stop_compilation), + // ('-S' && '-emit-llvm') && !('opt') -> output .ll + (and (switch_on ["emit-llvm", "S"]), (not (switch_on "opt"))), + [(forward "S"), (output_suffix "ll")], + // Ususally just output .bc + (not (switch_on "fsyntax-only")), + [(append_cmd "-c"), (append_cmd "-emit-llvm")], + + // -fsyntax-only (switch_on "fsyntax-only"), [(forward "fsyntax-only"), (no_out_file), (stop_compilation)], - (switch_on ["S", "emit-llvm"]), [(forward "S"), (forward "emit-llvm")], - (not (or (switch_on ["S", "emit-llvm"]), (switch_on "fsyntax-only"))), - [(append_cmd "-c"), (append_cmd "-emit-llvm")], // Forwards (not_empty "Xpreprocessor"), (forward "Xpreprocessor"), @@ -242,7 +248,10 @@ def opt : Tool< [(in_language "llvm-bitcode"), (out_language "llvm-bitcode"), (output_suffix "opt.bc"), - (actions (case (not_empty "Wo,"), (forward_value "Wo,"), + (actions (case (switch_on "emit-llvm"), (stop_compilation), + (switch_on ["emit-llvm", "S"]), + [(append_cmd "-S"), (output_suffix "ll")], + (not_empty "Wo,"), (forward_value "Wo,"), (switch_on "O1"), (forward "O1"), (switch_on "O2"), (forward "O2"), (switch_on "O3"), (forward "O3"))), -- 2.34.1