diff options
| author | Elliott Slaughter <eslaughter@mozilla.com> | 2012-08-13 11:19:52 -0700 |
|---|---|---|
| committer | Elliott Slaughter <eslaughter@mozilla.com> | 2012-08-24 14:01:26 -0700 |
| commit | a7a74c79fa09d918703083f35d22c77351bfc992 (patch) | |
| tree | 0cf2b2ef0543b0d830fe2abeab7f2c6d65ea54bf /src/rustc | |
| parent | c2e99ba8265085bde0a80283a68b4010a4a3aa34 (diff) | |
rustc: Emit index of tydescs by addrspace.
Diffstat (limited to 'src/rustc')
| -rw-r--r-- | src/rustc/middle/trans/base.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs index 8aaf50dd52f..90b314aac30 100644 --- a/src/rustc/middle/trans/base.rs +++ b/src/rustc/middle/trans/base.rs @@ -657,6 +657,16 @@ fn emit_tydescs(ccx: @crate_ctxt) { llvm::LLVMSetInitializer(gvar, tydesc); llvm::LLVMSetGlobalConstant(gvar, True); 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); }; } |
