diff options
| author | Alex Gaynor <alex.gaynor@gmail.com> | 2020-05-24 16:20:02 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-24 16:20:02 -0400 |
| commit | cd5f228acd214c0a6555756b060dd0223d31050d (patch) | |
| tree | 02dffe49ffdec6bd038061cf181df95d01d28fda /src/test/codegen/integer-overflow.rs | |
| parent | ff991d60349201a90ca15202dd0323ebdfab8745 (diff) | |
| download | rust-cd5f228acd214c0a6555756b060dd0223d31050d.tar.gz rust-cd5f228acd214c0a6555756b060dd0223d31050d.zip | |
Added a codegen test for a recent optimization for overflow-checks=on
Closes #58692
Diffstat (limited to 'src/test/codegen/integer-overflow.rs')
| -rw-r--r-- | src/test/codegen/integer-overflow.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/codegen/integer-overflow.rs b/src/test/codegen/integer-overflow.rs new file mode 100644 index 00000000000..183de56db96 --- /dev/null +++ b/src/test/codegen/integer-overflow.rs @@ -0,0 +1,26 @@ +// no-system-llvm +// compile-flags: -O -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] +} |
