Rollup merge of #125215 - Oneirical:easy-test-the-second, r=jieyouxu
Migrate `run-make/issue64319` to `rmake` and rename Part of #121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html). ~~I noticed that the Makefile was not listed in `allowed-run-makefiles` in Tidy. Does this mean the test was being ignored?~~ EDIT: No, it was there, just not in its expected alphabetical order. EDIT2: Perhaps it could be interesting to clean this test visually by looping over the `rustc` calls, like in #125227.
This commit is contained in:
commit
d7498c2dbf
@ -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}"));
|
||||
|
@ -128,7 +128,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
|
||||
|
@ -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();
|
||||
}
|
Loading…
Reference in New Issue
Block a user