diff options
Diffstat (limited to 'tests/codegen-llvm/integer-overflow.rs')
| -rw-r--r-- | tests/codegen-llvm/integer-overflow.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/codegen-llvm/integer-overflow.rs b/tests/codegen-llvm/integer-overflow.rs new file mode 100644 index 00000000000..80362247a86 --- /dev/null +++ b/tests/codegen-llvm/integer-overflow.rs @@ -0,0 +1,24 @@ +//@ compile-flags: -Copt-level=3 -C overflow-checks=on + +#![crate_type = "lib"] + +pub struct S1<'a> { + data: &'a [u8], + position: usize, +} + +// CHECK-LABEL: @slice_no_index_order +#[no_mangle] +pub fn slice_no_index_order<'a>(s: &'a mut S1, n: usize) -> &'a [u8] { + // CHECK-NOT: slice_index_order_fail + let d = &s.data[s.position..s.position + n]; + s.position += n; + return d; +} + +// CHECK-LABEL: @test_check +#[no_mangle] +pub fn test_check<'a>(s: &'a mut S1, x: usize, y: usize) -> &'a [u8] { + // CHECK: slice_index_order_fail + &s.data[x..y] +} |
