about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2021-03-11 22:55:11 +0100
committerNikita Popov <nikita.ppv@gmail.com>2021-03-11 22:58:14 +0100
commitef269ac4fcf62e9fa39f4d6d28ccae6eeebda4c4 (patch)
tree6d623ddc662e8c133306beb33a56c14e994bfbcb /src
parentd9be71a5b829756aa7aab3cff587efe88d2893cd (diff)
downloadrust-ef269ac4fcf62e9fa39f4d6d28ccae6eeebda4c4.tar.gz
rust-ef269ac4fcf62e9fa39f4d6d28ccae6eeebda4c4.zip
Add tests for issues #82833 and #82859
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/issues/issue-82833-slice-miscompile.rs17
-rw-r--r--src/test/ui/issues/issue-82859-slice-miscompile.rs19
2 files changed, 36 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-82833-slice-miscompile.rs b/src/test/ui/issues/issue-82833-slice-miscompile.rs
new file mode 100644
index 00000000000..b14e5f6fb12
--- /dev/null
+++ b/src/test/ui/issues/issue-82833-slice-miscompile.rs
@@ -0,0 +1,17 @@
+// run-pass
+// compile-flags: -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Copt-level=0 -Cdebuginfo=2
+// ignore-tidy-linelength
+
+// Make sure LLVM does not miscompile this.
+
+fn make_string(ch: char) -> String {
+    let mut bytes = [0u8; 4];
+    ch.encode_utf8(&mut bytes).into()
+}
+
+fn main() {
+    let ch = '😃';
+    dbg!(ch);
+    let string = make_string(ch);
+    dbg!(string);
+}
diff --git a/src/test/ui/issues/issue-82859-slice-miscompile.rs b/src/test/ui/issues/issue-82859-slice-miscompile.rs
new file mode 100644
index 00000000000..b64eb499071
--- /dev/null
+++ b/src/test/ui/issues/issue-82859-slice-miscompile.rs
@@ -0,0 +1,19 @@
+// run-pass
+// compile-flags: -Copt-level=0 -Cdebuginfo=2
+
+// Make sure LLVM does not miscompile this.
+
+fn indirect_get_slice() -> &'static [usize] {
+    &[]
+}
+
+#[inline(always)]
+fn get_slice() -> &'static [usize] {
+    let ret = indirect_get_slice();
+    ret
+}
+
+fn main() {
+    let output = get_slice().len();
+    assert_eq!(output, 0);
+}