about summary refs log tree commit diff
path: root/src/test/incremental
diff options
context:
space:
mode:
authorDavid Wood <david.wood@huawei.com>2022-07-04 14:38:42 +0100
committerDavid Wood <david.wood@huawei.com>2022-07-06 11:15:13 +0100
commit8371a036ea485ef8a830349c779e5acc116cfd8d (patch)
treeac6ef78e238c03d1bd5b13d860038148edbd8d6f /src/test/incremental
parent5b8cf49c51833ee5d27ae2e8e179337dbb9f14d7 (diff)
downloadrust-8371a036ea485ef8a830349c779e5acc116cfd8d.tar.gz
rust-8371a036ea485ef8a830349c779e5acc116cfd8d.zip
incr: cache dwarf objects in work products
Cache DWARF objects alongside object files in work products when those
exist so that DWARF object files are available for thorin in packed mode
in incremental scenarios.

Signed-off-by: David Wood <david.wood@huawei.com>
Diffstat (limited to 'src/test/incremental')
-rw-r--r--src/test/incremental/split_debuginfo_cached.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/incremental/split_debuginfo_cached.rs b/src/test/incremental/split_debuginfo_cached.rs
new file mode 100644
index 00000000000..25c802d5a1d
--- /dev/null
+++ b/src/test/incremental/split_debuginfo_cached.rs
@@ -0,0 +1,25 @@
+// Check that compiling with packed Split DWARF twice succeeds. This should confirm that DWARF
+// objects are cached as work products and available to the incremental compilation for `thorin` to
+// pack into a DWARF package.
+
+// ignore-tidy-linelength
+// only-x86_64-unknown-linux-gnu
+// revisions:rpass1 rpass2
+
+// [rpass1]compile-flags: -g -Zquery-dep-graph -Zunstable-options -Csplit-debuginfo=packed -Zsplit-dwarf-kind=split
+// [rpass2]compile-flags: -g -Zquery-dep-graph -Zunstable-options -Csplit-debuginfo=packed -Zsplit-dwarf-kind=split
+
+#![feature(rustc_attrs)]
+// For `rpass2`, nothing has changed so everything should re-used.
+#![rustc_partition_reused(module = "split_debuginfo_cached", cfg = "rpass2")]
+#![rustc_partition_reused(module = "split_debuginfo_cached-another_module", cfg = "rpass2")]
+
+mod another_module {
+    pub fn foo() -> &'static str {
+        "hello world"
+    }
+}
+
+pub fn main() {
+    println!("{}", another_module::foo());
+}