aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-09-22 15:21:06 -0700
committerGraydon Hoare <[email protected]>2010-09-22 15:27:40 -0700
commit738fe078a43c3f184d0e147f89042474a61fa779 (patch)
treeea2ae75e06e951762cfec13f560a098076f25a21
parentAdd some basic string functions: index, rindes, find, substr, split, concat, ... (diff)
downloadrust-738fe078a43c3f184d0e147f89042474a61fa779.tar.xz
rust-738fe078a43c3f184d0e147f89042474a61fa779.zip
Move llvm-using code in rustc to trans module.
-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 d00d2e68..758e9145 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 00000000..d8555a95
--- /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 5f5bc893..c4e7c7e6 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) {