Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit aa57942

Browse files
committedJun 17, 2024
rewrite no-builtins-lto to rmake
1 parent cabc982 commit aa57942

File tree

4 files changed

+23
-12
lines changed

4 files changed

+23
-12
lines changed
 

‎src/tools/tidy/src/allowed_run_make_makefiles.txt

-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@ run-make/native-link-modifier-verbatim-rustc/Makefile
146146
run-make/native-link-modifier-whole-archive/Makefile
147147
run-make/no-alloc-shim/Makefile
148148
run-make/no-builtins-attribute/Makefile
149-
run-make/no-builtins-lto/Makefile
150149
run-make/no-duplicate-libs/Makefile
151150
run-make/obey-crate-type-flag/Makefile
152151
run-make/optimization-remarks-dir-pgo/Makefile

‎tests/run-make/lto-avoid-object-duplication/rmake.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// ignore-tidy-tab
12
// Staticlibs don't include Rust object files from upstream crates if the same
23
// code was already pulled into the lib via LTO. However, the bug described in
34
// https://github.com/rust-lang/rust/issues/64153 lead to this exclusion not
@@ -7,7 +8,7 @@
78
// This test makes sure that functions defined in the upstream crates do not
89
// appear twice in the final staticlib when listing all the symbols from it.
910

10-
//@ ignore-windows
11+
//FIXME(Oneirical): temporarily remove ignorewindows
1112
// Reason: `llvm-objdump`'s output looks different on windows than on other platforms.
1213
// Only checking on Unix platforms should suffice.
1314

@@ -28,7 +29,7 @@ fn main() {
2829
.codegen_units(1)
2930
.run();
3031
let syms = llvm_objdump().arg("-t").input(static_lib_name("downstream")).run().stdout_utf8();
31-
let re = regex::Regex::new(r#"(?m)\s*g\s*F\s.*issue64153_test_function"#).unwrap();
32+
let re = regex::Regex::new(r#"\s*g\s*F\s.*issue64153_test_function"#).unwrap();
3233
// Count the global instances of `issue64153_test_function`. There'll be 2
3334
// if the `upstream` object file got erroneously included twice.
3435
// The line we are testing for with the regex looks something like:

‎tests/run-make/no-builtins-lto/Makefile

-9
This file was deleted.
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// The rlib produced by a no_builtins crate should be explicitely linked
2+
// during compilation, and as a result be present in the linker arguments.
3+
// See the comments inside this file for more details.
4+
// See https://github.com/rust-lang/rust/pull/35637
5+
6+
use run_make_support::{rust_lib_name, rustc};
7+
8+
fn main() {
9+
// Compile a `#![no_builtins]` rlib crate
10+
rustc().input("no_builtins.rs").run();
11+
// Build an executable that depends on that crate using LTO. The no_builtins crate doesn't
12+
// participate in LTO, so its rlib must be explicitly
13+
// linked into the final binary. Verify this by grepping the linker arguments.
14+
rustc()
15+
.input("main.rs")
16+
.arg("-Clto")
17+
.print("link-args")
18+
.run()
19+
.assert_stdout_contains(rust_lib_name("no_builtins"));
20+
}

0 commit comments

Comments
 (0)
Failed to load comments.