Auto merge of #125233 - jieyouxu:rollup-76hk8qu, r=jieyouxu

Rollup of 3 pull requests

Successful merges:

 - #125213 (Migrate `run-make/static-unwinding` to `rmake`)
 - #125215 (Migrate `run-make/issue64319` to `rmake` and rename)
 - #125221 (Migrate `run-make/issue-28766` to `rmake`)

r? `@ghost`
`@rustbot` modify labels: rollup
This commit is contained in:
bors 2024-05-18 00:04:01 +00:00
commit 8e78d16804
12 changed files with 79 additions and 56 deletions

View File

@ -64,6 +64,12 @@ pub fn opt(&mut self) -> &mut Self {
self self
} }
/// Specify a specific optimization level.
pub fn opt_level(&mut self, option: &str) -> &mut Self {
self.cmd.arg(format!("-Copt-level={option}"));
self
}
/// Specify type(s) of output files to generate. /// Specify type(s) of output files to generate.
pub fn emit(&mut self, kinds: &str) -> &mut Self { pub fn emit(&mut self, kinds: &str) -> &mut Self {
self.cmd.arg(format!("--emit={kinds}")); self.cmd.arg(format!("--emit={kinds}"));

View File

@ -103,7 +103,6 @@ run-make/issue-25581/Makefile
run-make/issue-26006/Makefile run-make/issue-26006/Makefile
run-make/issue-26092/Makefile run-make/issue-26092/Makefile
run-make/issue-28595/Makefile run-make/issue-28595/Makefile
run-make/issue-28766/Makefile
run-make/issue-30063/Makefile run-make/issue-30063/Makefile
run-make/issue-33329/Makefile run-make/issue-33329/Makefile
run-make/issue-35164/Makefile run-make/issue-35164/Makefile
@ -128,7 +127,6 @@ run-make/issue-85401-static-mir/Makefile
run-make/issue-85441/Makefile run-make/issue-85441/Makefile
run-make/issue-88756-default-output/Makefile run-make/issue-88756-default-output/Makefile
run-make/issue-97463-abi-param-passing/Makefile run-make/issue-97463-abi-param-passing/Makefile
run-make/issue64319/Makefile
run-make/jobserver-error/Makefile run-make/jobserver-error/Makefile
run-make/libs-through-symlinks/Makefile run-make/libs-through-symlinks/Makefile
run-make/libtest-json/Makefile run-make/libtest-json/Makefile
@ -263,7 +261,6 @@ run-make/stable-symbol-names/Makefile
run-make/static-dylib-by-default/Makefile run-make/static-dylib-by-default/Makefile
run-make/static-extern-type/Makefile run-make/static-extern-type/Makefile
run-make/static-pie/Makefile run-make/static-pie/Makefile
run-make/static-unwinding/Makefile
run-make/staticlib-blank-lib/Makefile run-make/staticlib-blank-lib/Makefile
run-make/staticlib-dylib-linkage/Makefile run-make/staticlib-dylib-linkage/Makefile
run-make/std-core-cycle/Makefile run-make/std-core-cycle/Makefile

View File

@ -0,0 +1,13 @@
// The crate "foo" tied to this test executes a very specific function,
// which involves boxing an instance of the struct Foo. However,
// this once caused a segmentation fault in cargo release builds due to an LLVM
// incorrect assertion.
// This test checks that this bug does not resurface.
// See https://github.com/rust-lang/rust/issues/28766
use run_make_support::{rustc, tmp_dir};
fn main() {
rustc().opt().input("foo.rs").run();
rustc().opt().library_search_path(tmp_dir()).input("main.rs").run();
}

View File

@ -1,5 +0,0 @@
include ../tools.mk
all:
$(RUSTC) -O foo.rs
$(RUSTC) -O -L $(TMPDIR) main.rs

View File

@ -1,40 +0,0 @@
# ignore-cross-compile
include ../tools.mk
# Different optimization levels imply different values for `-Zshare-generics`,
# so try out a whole bunch of combinations to make sure everything is compatible
all:
# First up, try some defaults
$(RUSTC) --crate-type rlib foo.rs
$(RUSTC) --crate-type dylib bar.rs -C opt-level=3
# Next try mixing up some things explicitly
$(RUSTC) --crate-type rlib foo.rs -Z share-generics=no
$(RUSTC) --crate-type dylib bar.rs -Z share-generics=no
$(RUSTC) --crate-type rlib foo.rs -Z share-generics=no
$(RUSTC) --crate-type dylib bar.rs -Z share-generics=yes
$(RUSTC) --crate-type rlib foo.rs -Z share-generics=yes
$(RUSTC) --crate-type dylib bar.rs -Z share-generics=no
$(RUSTC) --crate-type rlib foo.rs -Z share-generics=yes
$(RUSTC) --crate-type dylib bar.rs -Z share-generics=yes
# Now combine a whole bunch of options together
$(RUSTC) --crate-type rlib foo.rs
$(RUSTC) --crate-type dylib bar.rs
$(RUSTC) --crate-type dylib bar.rs -Z share-generics=no
$(RUSTC) --crate-type dylib bar.rs -Z share-generics=yes
$(RUSTC) --crate-type dylib bar.rs -C opt-level=1
$(RUSTC) --crate-type dylib bar.rs -C opt-level=1 -Z share-generics=no
$(RUSTC) --crate-type dylib bar.rs -C opt-level=1 -Z share-generics=yes
$(RUSTC) --crate-type dylib bar.rs -C opt-level=2
$(RUSTC) --crate-type dylib bar.rs -C opt-level=2 -Z share-generics=no
$(RUSTC) --crate-type dylib bar.rs -C opt-level=2 -Z share-generics=yes
$(RUSTC) --crate-type dylib bar.rs -C opt-level=3
$(RUSTC) --crate-type dylib bar.rs -C opt-level=3 -Z share-generics=no
$(RUSTC) --crate-type dylib bar.rs -C opt-level=3 -Z share-generics=yes
$(RUSTC) --crate-type dylib bar.rs -C opt-level=s
$(RUSTC) --crate-type dylib bar.rs -C opt-level=s -Z share-generics=no
$(RUSTC) --crate-type dylib bar.rs -C opt-level=s -Z share-generics=yes
$(RUSTC) --crate-type dylib bar.rs -C opt-level=z
$(RUSTC) --crate-type dylib bar.rs -C opt-level=z -Z share-generics=no
$(RUSTC) --crate-type dylib bar.rs -C opt-level=z -Z share-generics=yes

View File

@ -0,0 +1,45 @@
// When crates had different optimization levels, a bug caused
// incorrect symbol name generations. -Z share-generics could
// also fail to re-export upstream generics on multiple compile
// runs of the same dynamic library.
// This test repeatedly compiles an rlib and a dylib with these flags
// to check if this bug ever returns.
// See https://github.com/rust-lang/rust/pull/68277
// See https://github.com/rust-lang/rust/issues/64319
//@ ignore-cross-compile
use run_make_support::rustc;
fn main() {
rustc().crate_type("rlib").input("foo.rs").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("3").run();
rustc().crate_type("rlib").input("foo.rs").arg("-Zshare-generics=no").run();
rustc().crate_type("dylib").input("bar.rs").arg("-Zshare-generics=no").run();
rustc().crate_type("rlib").input("foo.rs").arg("-Zshare-generics=no").run();
rustc().crate_type("dylib").input("bar.rs").arg("-Zshare-generics=yes").run();
rustc().crate_type("rlib").input("foo.rs").arg("-Zshare-generics=yes").run();
rustc().crate_type("dylib").input("bar.rs").arg("-Zshare-generics=no").run();
rustc().crate_type("rlib").input("foo.rs").arg("-Zshare-generics=yes").run();
rustc().crate_type("dylib").input("bar.rs").arg("-Zshare-generics=yes").run();
rustc().crate_type("rlib").input("foo.rs").run();
rustc().crate_type("dylib").input("bar.rs").run();
rustc().crate_type("dylib").input("bar.rs").arg("-Zshare-generics=no").run();
rustc().crate_type("dylib").input("bar.rs").arg("-Zshare-generics=yes").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("1").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("1").arg("-Zshare-generics=no").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("1").arg("-Zshare-generics=yes").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("2").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("2").arg("-Zshare-generics=no").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("2").arg("-Zshare-generics=yes").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("3").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("3").arg("-Zshare-generics=no").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("3").arg("-Zshare-generics=yes").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("s").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("s").arg("-Zshare-generics=no").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("s").arg("-Zshare-generics=yes").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("z").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("z").arg("-Zshare-generics=no").run();
rustc().crate_type("dylib").input("bar.rs").opt_level("z").arg("-Zshare-generics=yes").run();
}

View File

@ -1,8 +0,0 @@
# ignore-cross-compile
# needs-unwind
include ../tools.mk
all:
$(RUSTC) lib.rs
$(RUSTC) main.rs
$(call RUN,main)

View File

@ -0,0 +1,15 @@
// During unwinding, an implementation of Drop is possible to clean up resources.
// This test implements drop in both a main function and its static library.
// If the test succeeds, a Rust program being a static library does not affect Drop implementations.
// See https://github.com/rust-lang/rust/issues/10434
//@ ignore-cross-compile
//@ needs-unwind
use run_make_support::{run, rustc};
fn main() {
rustc().input("lib.rs").run();
rustc().input("main.rs").run();
run("main");
}