about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2010-09-22 15:21:06 -0700
committerGraydon Hoare <graydon@mozilla.com>2010-09-22 15:27:40 -0700
commit738fe078a43c3f184d0e147f89042474a61fa779 (patch)
treeea2ae75e06e951762cfec13f560a098076f25a21 /src/comp
parente0f682e5fb3a4d860afe38b74673c61ab0193c8e (diff)
downloadrust-738fe078a43c3f184d0e147f89042474a61fa779.tar.gz
rust-738fe078a43c3f184d0e147f89042474a61fa779.zip
Move llvm-using code in rustc to trans module.
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/driver/rustc.rs22
-rw-r--r--src/comp/me/trans.rs30
-rw-r--r--src/comp/rustc.rc7
3 files changed, 38 insertions, 21 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs
index d00d2e6853d..758e9145c2a 100644
--- a/src/comp/driver/rustc.rs
+++ b/src/comp/driver/rustc.rs
@@ -1,21 +1,8 @@
 // -*- rust -*-
 
-import std._str;
-import lib.llvm.llvm;
-import lib.llvm.builder;
 import fe.parser;
 import fe.token;
-
-fn write_module() {
-    auto llmod =
-        llvm.LLVMModuleCreateWithNameInContext(_str.buf("rust_out"),
-                                               llvm.LLVMGetGlobalContext());
-
-    auto b = builder(llvm.LLVMCreateBuilder());
-
-    llvm.LLVMWriteBitcodeToFile(llmod, _str.buf("rust_out.bc"));
-    llvm.LLVMDisposeModule(llmod);
-}
+import me.trans;
 
 fn main(vec[str] args) {
 
@@ -31,17 +18,13 @@ fn main(vec[str] args) {
           auto p = parser.new_parser(sess, filename);
           log "opened file: " + filename;
           auto crate = parser.parse_crate(p);
+          trans.translate_crate(sess, crate);
       }
       i += 1;
   }
-
-  // Test LLVM module-writing. Nothing interesting yet.
-  write_module();
-
 }
 
 
-//
 // Local Variables:
 // mode: rust
 // fill-column: 78;
@@ -50,4 +33,3 @@ fn main(vec[str] args) {
 // buffer-file-coding-system: utf-8-unix
 // compile-command: "make -k -C ../.. 2>&1 | sed -e 's/\\/x\\//x:\\//g'";
 // End:
-//
diff --git a/src/comp/me/trans.rs b/src/comp/me/trans.rs
new file mode 100644
index 00000000000..d8555a95c52
--- /dev/null
+++ b/src/comp/me/trans.rs
@@ -0,0 +1,30 @@
+import std._str;
+
+import fe.ast;
+import driver.session;
+
+import lib.llvm.llvm;
+import lib.llvm.builder;
+
+
+fn translate_crate(session.session sess, ast.crate crate) {
+    auto llmod =
+        llvm.LLVMModuleCreateWithNameInContext(_str.buf("rust_out"),
+                                               llvm.LLVMGetGlobalContext());
+
+    auto b = builder(llvm.LLVMCreateBuilder());
+
+    llvm.LLVMWriteBitcodeToFile(llmod, _str.buf("rust_out.bc"));
+    llvm.LLVMDisposeModule(llmod);
+}
+
+//
+// Local Variables:
+// mode: rust
+// fill-column: 78;
+// indent-tabs-mode: nil
+// c-basic-offset: 4
+// buffer-file-coding-system: utf-8-unix
+// compile-command: "make -k -C ../.. 2>&1 | sed -e 's/\\/x\\//x:\\//g'";
+// End:
+//
diff --git a/src/comp/rustc.rc b/src/comp/rustc.rc
index 5f5bc893ae2..c4e7c7e6b53 100644
--- a/src/comp/rustc.rc
+++ b/src/comp/rustc.rc
@@ -10,6 +10,10 @@ mod fe {
     mod token;
 }
 
+mod me {
+    mod trans;
+}
+
 mod driver {
     mod rustc;
     mod session;
@@ -20,7 +24,8 @@ mod util {
 }
 
 auth driver.rustc.main = state;
-auth driver.rustc.write_module = unsafe;
+auth me.trans = unsafe;
+
 
 mod lib {
     alt (target_os) {