rewrite issue64319 and rename
This commit is contained in:
parent
ddba1dc97e
commit
14a031fdf6
5 changed files with 51 additions and 40 deletions
|
@ -64,6 +64,12 @@ impl Rustc {
|
|||
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}"));
|
||||
|
|
|
@ -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…
Add table
Reference in a new issue