about summary refs log tree commit diff
diff options
context:
space:
mode:
authorElliott Slaughter <eslaughter@mozilla.com>2012-08-24 12:27:39 -0700
committerElliott Slaughter <eslaughter@mozilla.com>2012-08-24 14:01:27 -0700
commit30768d3609d905439a129e7e9bf4571b38e321f3 (patch)
treee99e0183682b4f2b08c79454091ca059e468d947
parent2189f21d308d16c74507dd7babdb88f5df37eeed (diff)
downloadrust-30768d3609d905439a129e7e9bf4571b38e321f3.tar.gz
rust-30768d3609d905439a129e7e9bf4571b38e321f3.zip
rustc: Don't emit metadata for default and GC box addrspaces.
-rw-r--r--src/rustc/middle/trans/base.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs
index 90b314aac30..74eab331f46 100644
--- a/src/rustc/middle/trans/base.rs
+++ b/src/rustc/middle/trans/base.rs
@@ -659,14 +659,16 @@ fn emit_tydescs(ccx: @crate_ctxt) {
         lib::llvm::SetLinkage(gvar, lib::llvm::InternalLinkage);
 
         // Index tydesc by addrspace.
-        let llty = T_ptr(ccx.tydesc_type);
-        let addrspace_name = #fmt("_gc_addrspace_metadata_%u",
-                                  ti.addrspace as uint);
-        let addrspace_gvar = str::as_c_str(addrspace_name, |buf| {
-            llvm::LLVMAddGlobal(ccx.llmod, llty, buf)
-        });
-        lib::llvm::SetLinkage(addrspace_gvar, lib::llvm::InternalLinkage);
-        llvm::LLVMSetInitializer(addrspace_gvar, gvar);
+        if ti.addrspace > gc_box_addrspace {
+            let llty = T_ptr(ccx.tydesc_type);
+            let addrspace_name = #fmt("_gc_addrspace_metadata_%u",
+                                      ti.addrspace as uint);
+            let addrspace_gvar = str::as_c_str(addrspace_name, |buf| {
+                llvm::LLVMAddGlobal(ccx.llmod, llty, buf)
+            });
+            lib::llvm::SetLinkage(addrspace_gvar, lib::llvm::InternalLinkage);
+            llvm::LLVMSetInitializer(addrspace_gvar, gvar);
+        }
     };
 }