diff options
| author | bors <bors@rust-lang.org> | 2016-09-05 08:13:32 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-09-05 08:13:32 -0700 |
| commit | 3f50b6342db87f4a8fb76e70f6ada07331e062a2 (patch) | |
| tree | 953fd9d36fcf4b9b8fbe19d1be1b4de4285b88a0 /src/test | |
| parent | 58dc448f8c29d0262f2cde76a9d21343921b23fd (diff) | |
| parent | b9a8c1a06300c4d042b5455d83cacd689bad6283 (diff) | |
| download | rust-3f50b6342db87f4a8fb76e70f6ada07331e062a2.tar.gz rust-3f50b6342db87f4a8fb76e70f6ada07331e062a2.zip | |
Auto merge of #36200 - mattico:fix-llvm-linkage, r=arielb1
Fix incorrect LLVM Linkage enum Followup of #33994 to actually work. The `Linkage` enum in librustc_llvm got out of sync with the version in LLVM and it caused two variants of the `#[linkage=""]` attribute to break. This adds the functions `LLVMRustGetLinkage` and `LLVMRustSetLinkage` which convert between the Rust Linkage enum and the LLVM one, which should stop this from breaking every time LLVM changes it. Possible remaining concerns: 1. There could be a codegen test to make sure that the attributes are applied correctly (I don't know how to do this). 2. ~~The test does not exercise the `appending` linkage. I can't figure out how to make a global static raw pointer to an array. This might not even be possible? If not we should probably remove appending linkage as its unusable in rust.~~ Appending linkage is not 'emittable' anyway. 3. The test only runs on Linux. Fixes #33992 r? @alexcrichton
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/run-pass/issue-33992.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/test/run-pass/issue-33992.rs b/src/test/run-pass/issue-33992.rs new file mode 100644 index 00000000000..5729469f697 --- /dev/null +++ b/src/test/run-pass/issue-33992.rs @@ -0,0 +1,40 @@ +// Copyright 2016 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// ignore-windows +// ignore-macos + +#![feature(linkage)] + +#[linkage = "common"] +pub static mut TEST1: u32 = 0u32; + +#[linkage = "external"] +pub static TEST2: bool = true; + +#[linkage = "internal"] +pub static TEST3: bool = true; + +#[linkage = "linkonce"] +pub static TEST4: bool = true; + +#[linkage = "linkonce_odr"] +pub static TEST5: bool = true; + +#[linkage = "private"] +pub static TEST6: bool = true; + +#[linkage = "weak"] +pub static TEST7: bool = true; + +#[linkage = "weak_odr"] +pub static TEST8: bool = true; + +fn main() {} \ No newline at end of file |
