summaryrefslogtreecommitdiffstats
path: root/tests/incremental/thinlto
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /tests/incremental/thinlto
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--tests/incremental/thinlto/cgu_invalidated_via_import.rs (renamed from src/test/incremental/thinlto/cgu_invalidated_via_import.rs)0
-rw-r--r--tests/incremental/thinlto/cgu_invalidated_when_export_added.rs (renamed from src/test/incremental/thinlto/cgu_invalidated_when_export_added.rs)0
-rw-r--r--tests/incremental/thinlto/cgu_invalidated_when_export_removed.rs (renamed from src/test/incremental/thinlto/cgu_invalidated_when_export_removed.rs)0
-rw-r--r--tests/incremental/thinlto/cgu_invalidated_when_import_added.rs (renamed from src/test/incremental/thinlto/cgu_invalidated_when_import_added.rs)0
-rw-r--r--tests/incremental/thinlto/cgu_invalidated_when_import_removed.rs (renamed from src/test/incremental/thinlto/cgu_invalidated_when_import_removed.rs)0
-rw-r--r--tests/incremental/thinlto/cgu_keeps_identical_fn.rs49
-rw-r--r--tests/incremental/thinlto/independent_cgus_dont_affect_each_other.rs (renamed from src/test/incremental/thinlto/independent_cgus_dont_affect_each_other.rs)0
7 files changed, 49 insertions, 0 deletions
diff --git a/src/test/incremental/thinlto/cgu_invalidated_via_import.rs b/tests/incremental/thinlto/cgu_invalidated_via_import.rs
index 5fe435d79..5fe435d79 100644
--- a/src/test/incremental/thinlto/cgu_invalidated_via_import.rs
+++ b/tests/incremental/thinlto/cgu_invalidated_via_import.rs
diff --git a/src/test/incremental/thinlto/cgu_invalidated_when_export_added.rs b/tests/incremental/thinlto/cgu_invalidated_when_export_added.rs
index 95f3b8ae4..95f3b8ae4 100644
--- a/src/test/incremental/thinlto/cgu_invalidated_when_export_added.rs
+++ b/tests/incremental/thinlto/cgu_invalidated_when_export_added.rs
diff --git a/src/test/incremental/thinlto/cgu_invalidated_when_export_removed.rs b/tests/incremental/thinlto/cgu_invalidated_when_export_removed.rs
index e86ebd354..e86ebd354 100644
--- a/src/test/incremental/thinlto/cgu_invalidated_when_export_removed.rs
+++ b/tests/incremental/thinlto/cgu_invalidated_when_export_removed.rs
diff --git a/src/test/incremental/thinlto/cgu_invalidated_when_import_added.rs b/tests/incremental/thinlto/cgu_invalidated_when_import_added.rs
index 9c17c8745..9c17c8745 100644
--- a/src/test/incremental/thinlto/cgu_invalidated_when_import_added.rs
+++ b/tests/incremental/thinlto/cgu_invalidated_when_import_added.rs
diff --git a/src/test/incremental/thinlto/cgu_invalidated_when_import_removed.rs b/tests/incremental/thinlto/cgu_invalidated_when_import_removed.rs
index fc53acf75..fc53acf75 100644
--- a/src/test/incremental/thinlto/cgu_invalidated_when_import_removed.rs
+++ b/tests/incremental/thinlto/cgu_invalidated_when_import_removed.rs
diff --git a/tests/incremental/thinlto/cgu_keeps_identical_fn.rs b/tests/incremental/thinlto/cgu_keeps_identical_fn.rs
new file mode 100644
index 000000000..368a726ea
--- /dev/null
+++ b/tests/incremental/thinlto/cgu_keeps_identical_fn.rs
@@ -0,0 +1,49 @@
+// This test is almost identical to `cgu_invalided_via_import`, except that
+// the two versions of `inline_fn` are identical. Neither version of `inlined_fn`
+// ends up with any spans in its LLVM bitecode, so LLVM is able to skip
+// re-building any modules which import 'inlined_fn'
+
+// revisions: cfail1 cfail2 cfail3
+// compile-flags: -Z query-dep-graph -O
+// build-pass (FIXME(62277): could be check-pass?)
+
+#![feature(rustc_attrs)]
+#![crate_type = "rlib"]
+#![rustc_expected_cgu_reuse(module = "cgu_keeps_identical_fn-foo", cfg = "cfail2", kind = "no")]
+#![rustc_expected_cgu_reuse(
+ module = "cgu_keeps_identical_fn-foo",
+ cfg = "cfail3",
+ kind = "post-lto"
+)]
+#![rustc_expected_cgu_reuse(
+ module = "cgu_keeps_identical_fn-bar",
+ cfg = "cfail2",
+ kind = "post-lto"
+)]
+#![rustc_expected_cgu_reuse(
+ module = "cgu_keeps_identical_fn-bar",
+ cfg = "cfail3",
+ kind = "post-lto"
+)]
+
+mod foo {
+
+ // Trivial functions like this one are imported very reliably by ThinLTO.
+ #[cfg(any(cfail1, cfail4))]
+ pub fn inlined_fn() -> u32 {
+ 1234
+ }
+
+ #[cfg(not(any(cfail1, cfail4)))]
+ pub fn inlined_fn() -> u32 {
+ 1234
+ }
+}
+
+pub mod bar {
+ use foo::inlined_fn;
+
+ pub fn caller() -> u32 {
+ inlined_fn()
+ }
+}
diff --git a/src/test/incremental/thinlto/independent_cgus_dont_affect_each_other.rs b/tests/incremental/thinlto/independent_cgus_dont_affect_each_other.rs
index 045f20119..045f20119 100644
--- a/src/test/incremental/thinlto/independent_cgus_dont_affect_each_other.rs
+++ b/tests/incremental/thinlto/independent_cgus_dont_affect_each_other.rs