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:
commit
8e78d16804
@ -64,6 +64,12 @@ pub fn opt(&mut self) -> &mut 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.
|
||||
pub fn emit(&mut self, kinds: &str) -> &mut Self {
|
||||
self.cmd.arg(format!("--emit={kinds}"));
|
||||
|
@ -103,7 +103,6 @@ run-make/issue-25581/Makefile
|
||||
run-make/issue-26006/Makefile
|
||||
run-make/issue-26092/Makefile
|
||||
run-make/issue-28595/Makefile
|
||||
run-make/issue-28766/Makefile
|
||||
run-make/issue-30063/Makefile
|
||||
run-make/issue-33329/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-88756-default-output/Makefile
|
||||
run-make/issue-97463-abi-param-passing/Makefile
|
||||
run-make/issue64319/Makefile
|
||||
run-make/jobserver-error/Makefile
|
||||
run-make/libs-through-symlinks/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-extern-type/Makefile
|
||||
run-make/static-pie/Makefile
|
||||
run-make/static-unwinding/Makefile
|
||||
run-make/staticlib-blank-lib/Makefile
|
||||
run-make/staticlib-dylib-linkage/Makefile
|
||||
run-make/std-core-cycle/Makefile
|
||||
|
13
tests/run-make/box-struct-no-segfault/rmake.rs
Normal file
13
tests/run-make/box-struct-no-segfault/rmake.rs
Normal 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();
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) -O foo.rs
|
||||
$(RUSTC) -O -L $(TMPDIR) main.rs
|
@ -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
|
45
tests/run-make/share-generics-export-again/rmake.rs
Normal file
45
tests/run-make/share-generics-export-again/rmake.rs
Normal 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();
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
# ignore-cross-compile
|
||||
# needs-unwind
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) lib.rs
|
||||
$(RUSTC) main.rs
|
||||
$(call RUN,main)
|
15
tests/run-make/static-unwinding/rmake.rs
Normal file
15
tests/run-make/static-unwinding/rmake.rs
Normal 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");
|
||||
}
|
Loading…
Reference in New Issue
Block a user