diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-08-15 10:28:09 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-15 10:28:09 +0200 |
| commit | d6b650391ac5e489ecd52a4dba35db3c1395a4e1 (patch) | |
| tree | b27560c119dd03eff2e5530c9107e833804d0db0 /src | |
| parent | 80ed61fbd64936ed676c2050e7e660b5ad78c9f2 (diff) | |
| parent | d3fee8dbf311aa916d98912261c16cad1a27b53f (diff) | |
| download | rust-d6b650391ac5e489ecd52a4dba35db3c1395a4e1.tar.gz rust-d6b650391ac5e489ecd52a4dba35db3c1395a4e1.zip | |
Rollup merge of #100211 - cjgillot:ctfe-mir-available, r=michaelwoerister
Refuse to codegen an upstream static. Fixes https://github.com/rust-lang/rust/issues/85401
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/run-make/issue-85401-static-mir/Makefile | 16 | ||||
| -rw-r--r-- | src/test/run-make/issue-85401-static-mir/bar.rs | 4 | ||||
| -rw-r--r-- | src/test/run-make/issue-85401-static-mir/baz.rs | 3 | ||||
| -rw-r--r-- | src/test/run-make/issue-85401-static-mir/foo.rs | 5 |
4 files changed, 28 insertions, 0 deletions
diff --git a/src/test/run-make/issue-85401-static-mir/Makefile b/src/test/run-make/issue-85401-static-mir/Makefile new file mode 100644 index 00000000000..5e094cb4d33 --- /dev/null +++ b/src/test/run-make/issue-85401-static-mir/Makefile @@ -0,0 +1,16 @@ +-include ../../run-make-fulldeps/tools.mk + +# Regression test for issue #85401 +# Verify that we do not ICE when trying to access MIR for statics, +# but emit an error when linking. + +OUTPUT_FILE := $(TMPDIR)/build-output + +all: + $(RUSTC) --crate-type rlib --crate-name foo -Crelocation-model=pic --edition=2018 foo.rs -Zalways-encode-mir=yes --emit metadata -o $(TMPDIR)/libfoo.rmeta + $(RUSTC) --crate-type rlib --crate-name bar -Crelocation-model=pic --edition=2018 bar.rs -o $(TMPDIR)/libbar.rlib --extern=foo=$(TMPDIR)/libfoo.rmeta + $(RUSTC) --crate-type bin --crate-name baz -Crelocation-model=pic --edition=2018 baz.rs -o $(TMPDIR)/baz -L $(TMPDIR) --extern=bar=$(TMPDIR)/libbar.rlib > $(OUTPUT_FILE) 2>&1; [ $$? -eq 1 ] + cat $(OUTPUT_FILE) + $(CGREP) 'crate `foo` required to be available in rlib format, but was not found in this form' < $(OUTPUT_FILE) + # -v tests are fragile, hopefully this text won't change + $(CGREP) -v "internal compiler error" < $(OUTPUT_FILE) diff --git a/src/test/run-make/issue-85401-static-mir/bar.rs b/src/test/run-make/issue-85401-static-mir/bar.rs new file mode 100644 index 00000000000..15b12ecf36f --- /dev/null +++ b/src/test/run-make/issue-85401-static-mir/bar.rs @@ -0,0 +1,4 @@ +pub fn bar() { + println!("bar {}", foo::FOO); + foo::foo(); +} diff --git a/src/test/run-make/issue-85401-static-mir/baz.rs b/src/test/run-make/issue-85401-static-mir/baz.rs new file mode 100644 index 00000000000..2ff4c51e5d2 --- /dev/null +++ b/src/test/run-make/issue-85401-static-mir/baz.rs @@ -0,0 +1,3 @@ +fn main() { + bar::bar() +} diff --git a/src/test/run-make/issue-85401-static-mir/foo.rs b/src/test/run-make/issue-85401-static-mir/foo.rs new file mode 100644 index 00000000000..d064c454600 --- /dev/null +++ b/src/test/run-make/issue-85401-static-mir/foo.rs @@ -0,0 +1,5 @@ +pub static FOO: &str = "foo"; + +pub fn foo() { + println!("foo"); +} |
