about summary refs log tree commit diff
path: root/tests/incremental/lto.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/incremental/lto.rs')
-rw-r--r--tests/incremental/lto.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/incremental/lto.rs b/tests/incremental/lto.rs
new file mode 100644
index 00000000000..2a3e3c2467c
--- /dev/null
+++ b/tests/incremental/lto.rs
@@ -0,0 +1,40 @@
+// no-prefer-dynamic
+// revisions:rpass1 rpass2
+// compile-flags: -C lto
+
+mod x {
+    pub struct X {
+        x: u32, y: u32,
+    }
+
+    #[cfg(rpass1)]
+    fn make() -> X {
+        X { x: 22, y: 0 }
+    }
+
+    #[cfg(rpass2)]
+    fn make() -> X {
+        X { x: 11, y: 11 }
+    }
+
+    pub fn new() -> X {
+        make()
+    }
+
+    pub fn sum(x: &X) -> u32 {
+        x.x + x.y
+    }
+}
+
+mod y {
+    use x;
+
+    pub fn assert_sum() -> bool {
+        let x = x::new();
+        x::sum(&x) == 22
+    }
+}
+
+pub fn main() {
+    y::assert_sum();
+}