about summary refs log tree commit diff
path: root/src/rustc/driver
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-06-07 19:42:22 -0700
committerBrian Anderson <banderson@mozilla.com>2012-06-07 19:42:27 -0700
commit7ef825bb607c4e934c92bd0b73ecbc4c24f3286b (patch)
treec5800f031f1959f2d91c61b890547a3b37f3a0af /src/rustc/driver
parentc058f1d9927874fd5bfe40d5e6698880a07c36bb (diff)
downloadrust-7ef825bb607c4e934c92bd0b73ecbc4c24f3286b.tar.gz
rust-7ef825bb607c4e934c92bd0b73ecbc4c24f3286b.zip
Revert "remove alias analysis and replace with borrowck"
18s perf regression compiling rustc with opts

This reverts commit 7f6ee0ce0df8af4c21b065cb49b95079ae643f77.
Diffstat (limited to 'src/rustc/driver')
-rw-r--r--src/rustc/driver/driver.rs19
-rw-r--r--src/rustc/driver/session.rs6
2 files changed, 21 insertions, 4 deletions
diff --git a/src/rustc/driver/driver.rs b/src/rustc/driver/driver.rs
index 769f3c40e25..672a950f42b 100644
--- a/src/rustc/driver/driver.rs
+++ b/src/rustc/driver/driver.rs
@@ -204,6 +204,9 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg,
     let (root_map, mutbl_map) = time(
         time_passes, "borrow checking",
         bind middle::borrowck::check_crate(ty_cx, method_map, crate));
+    let (copy_map, _ref_map) =
+        time(time_passes, "alias checking",
+             bind middle::alias::check_crate(ty_cx, crate));
     time(time_passes, "kind checking",
          bind kind::check_crate(ty_cx, method_map, last_use_map, crate));
     time(time_passes, "lint checking",
@@ -213,7 +216,7 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg,
     let outputs = option::get(outputs);
 
     let maps = {mutbl_map: mutbl_map, root_map: root_map,
-                last_use_map: last_use_map,
+                copy_map: copy_map, last_use_map: last_use_map,
                 impl_map: impl_map, method_map: method_map,
                 vtable_map: vtable_map};
 
@@ -445,6 +448,14 @@ fn build_session_options(match: getopts::match,
     let sysroot_opt = getopts::opt_maybe_str(match, "sysroot");
     let target_opt = getopts::opt_maybe_str(match, "target");
     let save_temps = getopts::opt_present(match, "save-temps");
+    let borrowck = alt getopts::opt_maybe_str(match, "borrowck") {
+      none { 0u }
+      some("warn") { 1u }
+      some("err") { 2u }
+      some(_) {
+        early_error(demitter, "borrowck may be warn or err")
+      }
+    };
     alt output_type {
       // unless we're emitting huamn-readable assembly, omit comments.
       link::output_type_llvm_assembly | link::output_type_assembly {}
@@ -493,7 +504,8 @@ fn build_session_options(match: getopts::match,
           test: test,
           parse_only: parse_only,
           no_trans: no_trans,
-          debugging_opts: debugging_opts};
+          debugging_opts: debugging_opts,
+          borrowck: borrowck};
     ret sopts;
 }
 
@@ -570,7 +582,8 @@ fn opts() -> [getopts::opt] {
          optmulti("Z"),
 
          optmulti("cfg"), optflag("test"),
-         optflag("lib"), optflag("bin"), optflag("static"), optflag("gc")];
+         optflag("lib"), optflag("bin"), optflag("static"), optflag("gc"),
+         optopt("borrowck")];
 }
 
 type output_filenames = @{out_filename: str, obj_filename:str};
diff --git a/src/rustc/driver/session.rs b/src/rustc/driver/session.rs
index 07f42a0d269..97e2d0ec4db 100644
--- a/src/rustc/driver/session.rs
+++ b/src/rustc/driver/session.rs
@@ -66,6 +66,9 @@ type options =
      no_trans: bool,
 
      debugging_opts: uint,
+
+     // temporary hack: 0=off,1=warn,2=err --> if 2, alias is disabled
+     borrowck: uint,
     };
 
 type crate_metadata = {name: str, data: [u8]};
@@ -178,7 +181,8 @@ fn basic_options() -> @options {
         test: false,
         parse_only: false,
         no_trans: false,
-        debugging_opts: 0u
+        debugging_opts: 0u,
+        borrowck: 0u,
     }
 }