diff options
Diffstat (limited to 'src/test/codegen')
27 files changed, 69 insertions, 25 deletions
diff --git a/src/test/codegen/alloc-optimisation.rs b/src/test/codegen/alloc-optimisation.rs index aee93b93e37..c3ffaeb9547 100644 --- a/src/test/codegen/alloc-optimisation.rs +++ b/src/test/codegen/alloc-optimisation.rs @@ -1,6 +1,5 @@ // // no-system-llvm -// min-llvm-version: 10.0.1 // compile-flags: -O #![crate_type="lib"] diff --git a/src/test/codegen/asm-powerpc-clobbers.rs b/src/test/codegen/asm-powerpc-clobbers.rs index 91a82c60120..ce13a7ff938 100644 --- a/src/test/codegen/asm-powerpc-clobbers.rs +++ b/src/test/codegen/asm-powerpc-clobbers.rs @@ -1,4 +1,3 @@ -// min-llvm-version: 10.0.1 // revisions: powerpc powerpc64 powerpc64le //[powerpc] compile-flags: --target powerpc-unknown-linux-gnu //[powerpc] needs-llvm-components: powerpc diff --git a/src/test/codegen/binary-search-index-no-bound-check.rs b/src/test/codegen/binary-search-index-no-bound-check.rs index 110d1d55626..2deabcaa6c2 100644 --- a/src/test/codegen/binary-search-index-no-bound-check.rs +++ b/src/test/codegen/binary-search-index-no-bound-check.rs @@ -1,4 +1,3 @@ -// min-llvm-version: 11.0.0 // compile-flags: -O // ignore-debug: the debug assertions get in the way #![crate_type = "lib"] diff --git a/src/test/codegen/enum-bounds-check-derived-idx.rs b/src/test/codegen/enum-bounds-check-derived-idx.rs index 7e3773b6a3e..aa66c2ed08e 100644 --- a/src/test/codegen/enum-bounds-check-derived-idx.rs +++ b/src/test/codegen/enum-bounds-check-derived-idx.rs @@ -1,7 +1,6 @@ // This test checks an optimization that is not guaranteed to work. This test case should not block // a future LLVM update. // compile-flags: -O -// min-llvm-version: 11.0 #![crate_type = "lib"] diff --git a/src/test/codegen/enum-bounds-check-issue-13926.rs b/src/test/codegen/enum-bounds-check-issue-13926.rs index ad029f0fa73..b26945bc549 100644 --- a/src/test/codegen/enum-bounds-check-issue-13926.rs +++ b/src/test/codegen/enum-bounds-check-issue-13926.rs @@ -1,7 +1,6 @@ // This test checks an optimization that is not guaranteed to work. This test case should not block // a future LLVM update. // compile-flags: -O -// min-llvm-version: 11.0 #![crate_type = "lib"] diff --git a/src/test/codegen/enum-bounds-check-issue-82871.rs b/src/test/codegen/enum-bounds-check-issue-82871.rs index e779e2ef274..a1fa1387d94 100644 --- a/src/test/codegen/enum-bounds-check-issue-82871.rs +++ b/src/test/codegen/enum-bounds-check-issue-82871.rs @@ -1,5 +1,4 @@ // compile-flags: -O -// min-llvm-version: 11.0 #![crate_type = "lib"] diff --git a/src/test/codegen/function-arguments.rs b/src/test/codegen/function-arguments.rs index f936f909603..3e10e227e55 100644 --- a/src/test/codegen/function-arguments.rs +++ b/src/test/codegen/function-arguments.rs @@ -1,6 +1,4 @@ // compile-flags: -O -C no-prepopulate-passes -// -// min-system-llvm-version: 12.0 #![crate_type = "lib"] #![feature(rustc_attrs)] diff --git a/src/test/codegen/issue-27130.rs b/src/test/codegen/issue-27130.rs index 7ae78782ff9..e5ee94e1f45 100644 --- a/src/test/codegen/issue-27130.rs +++ b/src/test/codegen/issue-27130.rs @@ -1,5 +1,4 @@ // compile-flags: -O -// min-llvm-version: 11.0 #![crate_type = "lib"] diff --git a/src/test/codegen/issue-73031.rs b/src/test/codegen/issue-73031.rs index 6ba4d707f42..a09c4bcfbea 100644 --- a/src/test/codegen/issue-73031.rs +++ b/src/test/codegen/issue-73031.rs @@ -1,4 +1,3 @@ -// min-llvm-version: 12.0.0 // compile-flags: -O #![crate_type = "lib"] diff --git a/src/test/codegen/issue-73396-bounds-check-after-position.rs b/src/test/codegen/issue-73396-bounds-check-after-position.rs index e5f3ae45c07..8d07a67a1b4 100644 --- a/src/test/codegen/issue-73396-bounds-check-after-position.rs +++ b/src/test/codegen/issue-73396-bounds-check-after-position.rs @@ -1,4 +1,3 @@ -// min-llvm-version: 11.0.0 // compile-flags: -O // ignore-debug: the debug assertions get in the way #![crate_type = "lib"] diff --git a/src/test/codegen/issue-73827-bounds-check-index-in-subexpr.rs b/src/test/codegen/issue-73827-bounds-check-index-in-subexpr.rs index d07eaa75b7a..1ad05906e21 100644 --- a/src/test/codegen/issue-73827-bounds-check-index-in-subexpr.rs +++ b/src/test/codegen/issue-73827-bounds-check-index-in-subexpr.rs @@ -1,7 +1,6 @@ // This test checks that bounds checks are elided when // index is part of a (x | y) < C style condition -// min-llvm-version: 11.0.0 // compile-flags: -O #![crate_type = "lib"] diff --git a/src/test/codegen/issue-75525-bounds-checks.rs b/src/test/codegen/issue-75525-bounds-checks.rs index a03c63c1d09..2d363d8f73b 100644 --- a/src/test/codegen/issue-75525-bounds-checks.rs +++ b/src/test/codegen/issue-75525-bounds-checks.rs @@ -1,6 +1,5 @@ // Regression test for #75525, verifies that no bounds checks are generated. -// min-llvm-version: 12.0.0 // compile-flags: -O #![crate_type = "lib"] diff --git a/src/test/codegen/issue-75546.rs b/src/test/codegen/issue-75546.rs index 49e4d4c7ec5..470a9e04096 100644 --- a/src/test/codegen/issue-75546.rs +++ b/src/test/codegen/issue-75546.rs @@ -1,4 +1,3 @@ -// min-llvm-version: 12.0.0 // compile-flags: -O #![crate_type = "lib"] diff --git a/src/test/codegen/issue-77812.rs b/src/test/codegen/issue-77812.rs index 95042579adb..4cc82414546 100644 --- a/src/test/codegen/issue-77812.rs +++ b/src/test/codegen/issue-77812.rs @@ -1,4 +1,3 @@ -// min-llvm-version: 12.0.0 // compile-flags: -O #![crate_type = "lib"] diff --git a/src/test/codegen/non-terminate/infinite-loop-1.rs b/src/test/codegen/non-terminate/infinite-loop-1.rs index 8f9a53d19d4..fa9c66b47c0 100644 --- a/src/test/codegen/non-terminate/infinite-loop-1.rs +++ b/src/test/codegen/non-terminate/infinite-loop-1.rs @@ -1,4 +1,3 @@ -// min-llvm-version: 12.0 // compile-flags: -C opt-level=3 #![crate_type = "lib"] diff --git a/src/test/codegen/non-terminate/infinite-loop-2.rs b/src/test/codegen/non-terminate/infinite-loop-2.rs index a4c76de1e3b..81d62ab33d7 100644 --- a/src/test/codegen/non-terminate/infinite-loop-2.rs +++ b/src/test/codegen/non-terminate/infinite-loop-2.rs @@ -1,4 +1,3 @@ -// min-llvm-version: 12.0 // compile-flags: -C opt-level=3 #![crate_type = "lib"] diff --git a/src/test/codegen/non-terminate/infinite-recursion.rs b/src/test/codegen/non-terminate/infinite-recursion.rs index ccb22afbc7a..6d1f2d4bf8f 100644 --- a/src/test/codegen/non-terminate/infinite-recursion.rs +++ b/src/test/codegen/non-terminate/infinite-recursion.rs @@ -1,4 +1,3 @@ -// min-llvm-version: 12.0 // compile-flags: -C opt-level=3 #![crate_type = "lib"] diff --git a/src/test/codegen/non-terminate/nonempty-infinite-loop.rs b/src/test/codegen/non-terminate/nonempty-infinite-loop.rs index 896b7e8721c..5e25e04fc24 100644 --- a/src/test/codegen/non-terminate/nonempty-infinite-loop.rs +++ b/src/test/codegen/non-terminate/nonempty-infinite-loop.rs @@ -1,4 +1,3 @@ -// min-llvm-version: 12.0 // compile-flags: -C opt-level=3 #![crate_type = "lib"] diff --git a/src/test/codegen/repr-transparent-aggregates-1.rs b/src/test/codegen/repr-transparent-aggregates-1.rs index 3017adb4432..a61dad218cd 100644 --- a/src/test/codegen/repr-transparent-aggregates-1.rs +++ b/src/test/codegen/repr-transparent-aggregates-1.rs @@ -1,7 +1,6 @@ // compile-flags: -C no-prepopulate-passes // -// min-system-llvm-version: 12.0 // ignore-arm // ignore-aarch64 // ignore-mips diff --git a/src/test/codegen/repr-transparent-aggregates-2.rs b/src/test/codegen/repr-transparent-aggregates-2.rs index 429d760b4aa..b68e8e9ebe9 100644 --- a/src/test/codegen/repr-transparent-aggregates-2.rs +++ b/src/test/codegen/repr-transparent-aggregates-2.rs @@ -1,7 +1,6 @@ // compile-flags: -C no-prepopulate-passes // -// min-system-llvm-version: 12.0 // ignore-aarch64 // ignore-emscripten // ignore-mips64 diff --git a/src/test/codegen/repr-transparent-aggregates-3.rs b/src/test/codegen/repr-transparent-aggregates-3.rs index 21176ac0e7a..0db17e6b13a 100644 --- a/src/test/codegen/repr-transparent-aggregates-3.rs +++ b/src/test/codegen/repr-transparent-aggregates-3.rs @@ -1,7 +1,6 @@ // compile-flags: -C no-prepopulate-passes // -// min-system-llvm-version: 12.0 // only-mips64 // See repr-transparent.rs diff --git a/src/test/codegen/sanitizer_cfi_add_canonical_jump_tables_flag.rs b/src/test/codegen/sanitizer_cfi_add_canonical_jump_tables_flag.rs new file mode 100644 index 00000000000..68f81808861 --- /dev/null +++ b/src/test/codegen/sanitizer_cfi_add_canonical_jump_tables_flag.rs @@ -0,0 +1,14 @@ +// Verifies that "CFI Canonical Jump Tables" module flag is added. +// +// ignore-windows +// needs-sanitizer-cfi +// only-aarch64 +// only-x86_64 +// compile-flags: -Clto -Zsanitizer=cfi + +#![crate_type="lib"] + +pub fn foo() { +} + +// CHECK: !{{[0-9]+}} = !{i32 2, !"CFI Canonical Jump Tables", i32 1} diff --git a/src/test/codegen/sanitizer_cfi_emit_type_checks.rs b/src/test/codegen/sanitizer_cfi_emit_type_checks.rs new file mode 100644 index 00000000000..9ed0422ceff --- /dev/null +++ b/src/test/codegen/sanitizer_cfi_emit_type_checks.rs @@ -0,0 +1,24 @@ +// Verifies that pointer type membership tests for indirect calls are emitted. +// +// ignore-windows +// needs-sanitizer-cfi +// only-aarch64 +// only-x86_64 +// compile-flags: -Clto -Cno-prepopulate-passes -Zsanitizer=cfi + +#![crate_type="lib"] + +pub fn foo(f: fn(i32) -> i32, arg: i32) -> i32 { + // CHECK-LABEL: define{{.*}}foo{{.*}}!type !{{[0-9]+}} + // CHECK: start: + // CHECK-NEXT: %0 = bitcast i32 (i32)* %f to i8* + // CHECK-NEXT: %1 = call i1 @llvm.type.test(i8* %0, metadata !"{{[[:print:]]+}}") + // CHECK-NEXT: br i1 %1, label %type_test.pass, label %type_test.fail + // CHECK: type_test.pass: + // CHECK-NEXT: %2 = call i32 %f(i32 %arg) + // CHECK-NEXT: br label %bb1 + // CHECK: type_test.fail: + // CHECK-NEXT: call void @llvm.trap() + // CHECK-NEXT: unreachable + f(arg) +} diff --git a/src/test/codegen/sanitizer_cfi_emit_type_metadata.rs b/src/test/codegen/sanitizer_cfi_emit_type_metadata.rs new file mode 100644 index 00000000000..96fced47e78 --- /dev/null +++ b/src/test/codegen/sanitizer_cfi_emit_type_metadata.rs @@ -0,0 +1,31 @@ +// Verifies that type metadata for functions are emitted. +// +// ignore-windows +// needs-sanitizer-cfi +// only-aarch64 +// only-x86_64 +// compile-flags: -Clto -Cno-prepopulate-passes -Zsanitizer=cfi + +#![crate_type="lib"] + +pub fn foo(f: fn(i32) -> i32, arg: i32) -> i32 { + // CHECK-LABEL: define{{.*}}foo{{.*}}!type !{{[0-9]+}} + // CHECK: %1 = call i1 @llvm.type.test(i8* %0, metadata !"typeid1") + f(arg) +} + +pub fn bar(f: fn(i32, i32) -> i32, arg1: i32, arg2: i32) -> i32 { + // CHECK-LABEL: define{{.*}}bar{{.*}}!type !{{[0-9]+}} + // CHECK: %1 = call i1 @llvm.type.test(i8* %0, metadata !"typeid2") + f(arg1, arg2) +} + +pub fn baz(f: fn(i32, i32, i32) -> i32, arg1: i32, arg2: i32, arg3: i32) -> i32 { + // CHECK-LABEL: define{{.*}}baz{{.*}}!type !{{[0-9]+}} + // CHECK: %1 = call i1 @llvm.type.test(i8* %0, metadata !"typeid3") + f(arg1, arg2, arg3) +} + +// CHECK: !{{[0-9]+}} = !{i64 0, !"typeid2"} +// CHECK: !{{[0-9]+}} = !{i64 0, !"typeid3"} +// CHECK: !{{[0-9]+}} = !{i64 0, !"typeid4"} diff --git a/src/test/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs b/src/test/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs index eaa9eafa1e8..dc7db8e2372 100644 --- a/src/test/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs +++ b/src/test/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs @@ -1,5 +1,4 @@ // compile-flags: -g -Z src-hash-algorithm=sha256 -// min-llvm-version: 11.0 #![crate_type = "lib"] diff --git a/src/test/codegen/vec-in-place.rs b/src/test/codegen/vec-in-place.rs index 72ed7492be9..a656c9e6f65 100644 --- a/src/test/codegen/vec-in-place.rs +++ b/src/test/codegen/vec-in-place.rs @@ -1,6 +1,5 @@ // ignore-debug: the debug assertions get in the way // compile-flags: -O -// min-llvm-version: 11.0 #![crate_type = "lib"] // Ensure that trivial casts of vec elements are O(1) diff --git a/src/test/codegen/wasm_casts_trapping.rs b/src/test/codegen/wasm_casts_trapping.rs index baf130a8791..eb06c4975bb 100644 --- a/src/test/codegen/wasm_casts_trapping.rs +++ b/src/test/codegen/wasm_casts_trapping.rs @@ -1,6 +1,5 @@ // only-wasm32 // compile-flags: -C target-feature=-nontrapping-fptoint -// min-llvm-version: 12.0 #![crate_type = "lib"] // CHECK-LABEL: @cast_f64_i64 |
