about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-05-25 18:18:52 -0700
committerPatrick Walton <pcwalton@mimiga.net>2013-05-25 18:20:33 -0700
commitcf34f9f9a9503ac8852f6ac7426388734eb867b5 (patch)
tree2d61ae4c6be2c7f92394d6f18cf37ce5f296444b
parente2f8b51dc599cf1fb7f3f72252bef5e5b717f6bd (diff)
downloadrust-cf34f9f9a9503ac8852f6ac7426388734eb867b5.tar.gz
rust-cf34f9f9a9503ac8852f6ac7426388734eb867b5.zip
librustc: Allow intra-crate start functions, for runtimeless operation.
-rw-r--r--src/librustc/middle/trans/base.rs7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs
index f92acbaf5c6..283505cc3f7 100644
--- a/src/librustc/middle/trans/base.rs
+++ b/src/librustc/middle/trans/base.rs
@@ -2329,9 +2329,7 @@ pub fn create_entry_wrapper(ccx: @CrateContext,
             llvm::LLVMPositionBuilderAtEnd(bld, llbb);
 
             let start_def_id = ccx.tcx.lang_items.start_fn();
-            if start_def_id.crate == ast::local_crate {
-                ccx.sess.bug("start lang item is never in the local crate")
-            } else {
+            if start_def_id.crate != ast::local_crate {
                 let start_fn_type = csearch::get_type(ccx.tcx,
                                                       start_def_id).ty;
                 trans_external_path(ccx, start_def_id, start_fn_type);
@@ -2348,8 +2346,7 @@ pub fn create_entry_wrapper(ccx: @CrateContext,
             let (start_fn, args) = if use_start_lang_item {
                 let start_def_id = ccx.tcx.lang_items.start_fn();
                 let start_fn = if start_def_id.crate == ast::local_crate {
-                    ccx.sess.bug("start lang item is never in the local \
-                                  crate")
+                    get_item_val(ccx, start_def_id.node)
                 } else {
                     let start_fn_type = csearch::get_type(ccx.tcx,
                             start_def_id).ty;