[llvm-commits] [llvm] r58885 - in /llvm/trunk: include/llvm/CompilerDriver/Tools.td test/LLVMC/hello.m test/LLVMC/hello.mm tools/llvmc2/plugins/Base/Base.td

Daniel Dunbar daniel at zuster.org
Fri Nov 7 19:25:48 PST 2008


Author: ddunbar
Date: Fri Nov  7 21:25:47 2008
New Revision: 58885

URL: http://llvm.org/viewvc/llvm-project?rev=58885&view=rev
Log:
Add LLVMC2 tool definitions for Objective-C and Objective-C++.

Added:
    llvm/trunk/test/LLVMC/hello.m
    llvm/trunk/test/LLVMC/hello.mm
Modified:
    llvm/trunk/include/llvm/CompilerDriver/Tools.td
    llvm/trunk/tools/llvmc2/plugins/Base/Base.td

Modified: llvm/trunk/include/llvm/CompilerDriver/Tools.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CompilerDriver/Tools.td?rev=58885&r1=58884&r2=58885&view=diff

==============================================================================
--- llvm/trunk/include/llvm/CompilerDriver/Tools.td (original)
+++ llvm/trunk/include/llvm/CompilerDriver/Tools.td Fri Nov  7 21:25:47 2008
@@ -44,6 +44,38 @@
  (sink)
 ]>;
 
+def llvm_gcc_m : Tool<
+[(in_language "objective-c"),
+ (out_language "llvm-bitcode"),
+ (output_suffix "bc"),
+ (cmd_line (case
+            (switch_on "E"),
+              (case (not_empty "o"),
+                    "llvm-gcc -E -x objective-c $INFILE -o $OUTFILE",
+                    (default),
+                    "llvm-gcc -E -x objective-c $INFILE"),
+            (default),
+              "llvm-gcc -c -x objective-c $INFILE -o $OUTFILE -emit-llvm")),
+ (switch_option "E", (stop_compilation)),
+ (sink)
+]>;
+
+def llvm_gcc_mxx : Tool<
+[(in_language "objective-c++"),
+ (out_language "llvm-bitcode"),
+ (output_suffix "bc"),
+ (cmd_line (case
+            (switch_on "E"),
+              (case (not_empty "o"),
+                    "llvm-gcc -E -x objective-c++ $INFILE -o $OUTFILE",
+                    (default),
+                    "llvm-gcc -E -x objective-c++ $INFILE"),
+            (default),
+              "llvm-gcc -c -x objective-c++ $INFILE -o $OUTFILE -emit-llvm")),
+ (switch_option "E", (stop_compilation)),
+ (sink)
+]>;
+
 def opt : Tool<
 [(in_language "llvm-bitcode"),
  (out_language "llvm-bitcode"),
@@ -109,6 +141,8 @@
 def LanguageMap : LanguageMap<
     [LangToSuffixes<"c++", ["cc", "cp", "cxx", "cpp", "CPP", "c++", "C"]>,
      LangToSuffixes<"c", ["c"]>,
+     LangToSuffixes<"objective-c++", ["mm"]>,
+     LangToSuffixes<"objective-c", ["m"]>,
      LangToSuffixes<"assembler", ["s"]>,
      LangToSuffixes<"llvm-assembler", ["ll"]>,
      LangToSuffixes<"llvm-bitcode", ["bc"]>,

Added: llvm/trunk/test/LLVMC/hello.m
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/LLVMC/hello.m?rev=58885&view=auto

==============================================================================
--- llvm/trunk/test/LLVMC/hello.m (added)
+++ llvm/trunk/test/LLVMC/hello.m Fri Nov  7 21:25:47 2008
@@ -0,0 +1,12 @@
+/*
+ * Check that we can compile helloworld
+ * RUN: llvmc2 %s -o %t
+ * RUN: ./%t | grep hello
+ */
+
+#include <stdio.h>
+
+int main() {
+    printf("hello\n");
+    return 0;
+}

Added: llvm/trunk/test/LLVMC/hello.mm
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/LLVMC/hello.mm?rev=58885&view=auto

==============================================================================
--- llvm/trunk/test/LLVMC/hello.mm (added)
+++ llvm/trunk/test/LLVMC/hello.mm Fri Nov  7 21:25:47 2008
@@ -0,0 +1,8 @@
+// Test that we can compile Objective-C++ code.
+// RUN: llvmc2 %s -o %t
+// RUN: ./%t | grep hello
+#include <iostream>
+
+int main() {
+    std::cout << "hello" << '\n';
+}

Modified: llvm/trunk/tools/llvmc2/plugins/Base/Base.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/plugins/Base/Base.td?rev=58885&r1=58884&r2=58885&view=diff

==============================================================================
--- llvm/trunk/tools/llvmc2/plugins/Base/Base.td (original)
+++ llvm/trunk/tools/llvmc2/plugins/Base/Base.td Fri Nov  7 21:25:47 2008
@@ -20,14 +20,20 @@
     Edge<root, llvm_gcc_c>,
     Edge<root, llvm_gcc_assembler>,
     Edge<root, llvm_gcc_cpp>,
+    Edge<root, llvm_gcc_m>,
+    Edge<root, llvm_gcc_mxx>,
     Edge<root, llvm_as>,
 
     Edge<llvm_gcc_c, llc>,
     Edge<llvm_gcc_cpp, llc>,
+    Edge<llvm_gcc_m, llc>,
+    Edge<llvm_gcc_mxx, llc>,
     Edge<llvm_as, llc>,
 
     OptionalEdge<llvm_gcc_c, opt, (case (switch_on "opt"), (inc_weight))>,
     OptionalEdge<llvm_gcc_cpp, opt, (case (switch_on "opt"), (inc_weight))>,
+    OptionalEdge<llvm_gcc_m, opt, (case (switch_on "opt"), (inc_weight))>,
+    OptionalEdge<llvm_gcc_mxx, opt, (case (switch_on "opt"), (inc_weight))>,
     OptionalEdge<llvm_as, opt, (case (switch_on "opt"), (inc_weight))>,
     Edge<opt, llc>,
 
@@ -35,7 +41,9 @@
     Edge<llvm_gcc_assembler, llvm_gcc_linker>,
     OptionalEdge<llvm_gcc_assembler, llvm_gcc_cpp_linker,
                  (case
-                     (input_languages_contain "c++"), (inc_weight),
+                     (or (input_languages_contain "c++"),
+                         (input_languages_contain "objective-c++")), 
+                     (inc_weight),
                      (or (parameter_equals "linker", "g++"),
                          (parameter_equals "linker", "c++")), (inc_weight))>,
 
@@ -43,7 +51,9 @@
     Edge<root, llvm_gcc_linker>,
     OptionalEdge<root, llvm_gcc_cpp_linker,
                  (case
-                     (input_languages_contain "c++"), (inc_weight),
+                     (or (input_languages_contain "c++"),
+                         (input_languages_contain "objective-c++")), 
+                     (inc_weight),
                      (or (parameter_equals "linker", "g++"),
                          (parameter_equals "linker", "c++")), (inc_weight))>
     ]>;





More information about the llvm-commits mailing list