diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2016-08-24 06:36:37 +0300 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2016-08-24 13:23:37 +0300 |
| commit | cb9b0ed91b898cbda23caa8ed1a82c37b39845de (patch) | |
| tree | 6c63d0df923fda6adf374e0d2be44f64c80c2087 /src/test/codegen | |
| parent | a66fa96d1871ee71cc382a276a3e52f6f6e56e01 (diff) | |
| download | rust-cb9b0ed91b898cbda23caa8ed1a82c37b39845de.tar.gz rust-cb9b0ed91b898cbda23caa8ed1a82c37b39845de.zip | |
Disable old trans access via -Z orbit, #[rustc_no_mir] or --disable-orbit.
Diffstat (limited to 'src/test/codegen')
| -rw-r--r-- | src/test/codegen/adjustments.rs | 8 | ||||
| -rw-r--r-- | src/test/codegen/coercions.rs | 3 | ||||
| -rw-r--r-- | src/test/codegen/consts.rs | 20 | ||||
| -rw-r--r-- | src/test/codegen/drop.rs | 10 | ||||
| -rw-r--r-- | src/test/codegen/loads.rs | 4 | ||||
| -rw-r--r-- | src/test/codegen/mir_zst_stores.rs | 2 | ||||
| -rw-r--r-- | src/test/codegen/naked-functions.rs | 6 | ||||
| -rw-r--r-- | src/test/codegen/refs.rs | 11 | ||||
| -rw-r--r-- | src/test/codegen/stores.rs | 11 |
9 files changed, 30 insertions, 45 deletions
diff --git a/src/test/codegen/adjustments.rs b/src/test/codegen/adjustments.rs index 20d04939434..40603845da2 100644 --- a/src/test/codegen/adjustments.rs +++ b/src/test/codegen/adjustments.rs @@ -11,7 +11,6 @@ // compile-flags: -C no-prepopulate-passes #![crate_type = "lib"] -#![feature(rustc_attrs)] // Hack to get the correct size for the length part in slices // CHECK: @helper([[USIZE:i[0-9]+]]) @@ -21,13 +20,12 @@ fn helper(_: usize) { // CHECK-LABEL: @no_op_slice_adjustment #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn no_op_slice_adjustment(x: &[u8]) -> &[u8] { // We used to generate an extra alloca and memcpy for the block's trailing expression value, so // check that we copy directly to the return value slot -// CHECK: [[SRC:%[0-9]+]] = bitcast { i8*, [[USIZE]] }* %x to -// CHECK: [[DST:%[0-9]+]] = bitcast { i8*, [[USIZE]] }* %sret_slot to i8* -// CHECK: call void @llvm.memcpy.{{.*}}(i8* [[DST]], i8* [[SRC]], +// CHECK: %2 = insertvalue { i8*, [[USIZE]] } undef, i8* %0, 0 +// CHECK: %3 = insertvalue { i8*, [[USIZE]] } %2, [[USIZE]] %1, 1 +// CHECK: ret { i8*, [[USIZE]] } %3 { x } } diff --git a/src/test/codegen/coercions.rs b/src/test/codegen/coercions.rs index 74c7192259a..c8c9f5b407c 100644 --- a/src/test/codegen/coercions.rs +++ b/src/test/codegen/coercions.rs @@ -11,14 +11,12 @@ // compile-flags: -C no-prepopulate-passes #![crate_type = "lib"] -#![feature(rustc_attrs)] static X: i32 = 5; // CHECK-LABEL: @raw_ptr_to_raw_ptr_noop // CHECK-NOT: alloca #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn raw_ptr_to_raw_ptr_noop() -> *const i32{ &X as *const i32 } @@ -26,7 +24,6 @@ pub fn raw_ptr_to_raw_ptr_noop() -> *const i32{ // CHECK-LABEL: @reference_to_raw_ptr_noop // CHECK-NOT: alloca #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn reference_to_raw_ptr_noop() -> *const i32 { &X } diff --git a/src/test/codegen/consts.rs b/src/test/codegen/consts.rs index ea4c932d435..36a582ca737 100644 --- a/src/test/codegen/consts.rs +++ b/src/test/codegen/consts.rs @@ -11,7 +11,6 @@ // compile-flags: -C no-prepopulate-passes #![crate_type = "lib"] -#![feature(rustc_attrs)] // Below, these constants are defined as enum variants that by itself would // have a lower alignment than the enum type. Ensure that we mark them @@ -20,11 +19,12 @@ // CHECK: @STATIC = {{.*}}, align 4 // This checks the constants from inline_enum_const -// CHECK: @const{{[0-9]+}} = {{.*}}, align 2 +// CHECK: @ref{{[0-9]+}} = {{.*}}, align 2 // This checks the constants from {low,high}_align_const, they share the same // constant, but the alignment differs, so the higher one should be used -// CHECK: @const{{[0-9]+}} = {{.*}}, align 4 +// CHECK: [[LOW_HIGH:@ref[0-9]+]] = {{.*}}, align 4 +// CHECK: [[LOW_HIGH_REF:@const[0-9]+]] = {{.*}} [[LOW_HIGH]] #[derive(Copy, Clone)] @@ -40,32 +40,28 @@ pub static STATIC: E<i16, i32> = E::A(0); // CHECK-LABEL: @static_enum_const #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn static_enum_const() -> E<i16, i32> { STATIC } // CHECK-LABEL: @inline_enum_const #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn inline_enum_const() -> E<i8, i16> { - E::A(0) + *&E::A(0) } // CHECK-LABEL: @low_align_const #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn low_align_const() -> E<i16, [i16; 3]> { // Check that low_align_const and high_align_const use the same constant -// CHECK: call void @llvm.memcpy.{{.*}}(i8* %{{[0-9]+}}, i8* {{.*}} [[LOW_HIGH:@const[0-9]+]] - E::A(0) +// CHECK: load {{.*}} bitcast ({ i16, i16, [4 x i8] }** [[LOW_HIGH_REF]] + *&E::A(0) } // CHECK-LABEL: @high_align_const #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn high_align_const() -> E<i16, i32> { // Check that low_align_const and high_align_const use the same constant -// CHECK: call void @llvm.memcpy.{{.*}}(i8* %{{[0-9]}}, i8* {{.*}} [[LOW_HIGH]] - E::A(0) +// CHECK: load {{.*}} bitcast ({ i16, i16, [4 x i8] }** [[LOW_HIGH_REF]] + *&E::A(0) } diff --git a/src/test/codegen/drop.rs b/src/test/codegen/drop.rs index 25f8c130469..a4bd5cf2c15 100644 --- a/src/test/codegen/drop.rs +++ b/src/test/codegen/drop.rs @@ -11,7 +11,6 @@ // compile-flags: -C no-prepopulate-passes #![crate_type = "lib"] -#![feature(rustc_attrs)] struct SomeUniqueName; @@ -25,19 +24,20 @@ pub fn possibly_unwinding() { // CHECK-LABEL: @droppy #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn droppy() { // Check that there are exactly 6 drop calls. The cleanups for the unwinding should be reused, so // that's one new drop call per call to possibly_unwinding(), and finally 3 drop calls for the // regular function exit. We used to have problems with quadratic growths of drop calls in such // functions. -// CHECK: call{{.*}}drop{{.*}}SomeUniqueName -// CHECK: call{{.*}}drop{{.*}}SomeUniqueName -// CHECK: call{{.*}}drop{{.*}}SomeUniqueName +// CHECK-NOT: invoke{{.*}}drop{{.*}}SomeUniqueName // CHECK: call{{.*}}drop{{.*}}SomeUniqueName // CHECK: call{{.*}}drop{{.*}}SomeUniqueName // CHECK: call{{.*}}drop{{.*}}SomeUniqueName // CHECK-NOT: call{{.*}}drop{{.*}}SomeUniqueName +// CHECK: invoke{{.*}}drop{{.*}}SomeUniqueName +// CHECK: invoke{{.*}}drop{{.*}}SomeUniqueName +// CHECK: invoke{{.*}}drop{{.*}}SomeUniqueName +// CHECK-NOT: {{(call|invoke).*}}drop{{.*}}SomeUniqueName // The next line checks for the } that ends the function definition // CHECK-LABEL: {{^[}]}} let _s = SomeUniqueName; diff --git a/src/test/codegen/loads.rs b/src/test/codegen/loads.rs index a65a3e1bb66..def5269e07a 100644 --- a/src/test/codegen/loads.rs +++ b/src/test/codegen/loads.rs @@ -11,7 +11,6 @@ // compile-flags: -C no-prepopulate-passes #![crate_type = "lib"] -#![feature(rustc_attrs)] pub struct Bytes { a: u8, @@ -22,15 +21,14 @@ pub struct Bytes { // CHECK-LABEL: @borrow #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn borrow(x: &i32) -> &i32 { // CHECK: load {{(i32\*, )?}}i32** %x{{.*}}, !nonnull + &x; // keep variable in an alloca x } // CHECK-LABEL: @_box #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn _box(x: Box<i32>) -> i32 { // CHECK: load {{(i32\*, )?}}i32** %x{{.*}}, !nonnull *x diff --git a/src/test/codegen/mir_zst_stores.rs b/src/test/codegen/mir_zst_stores.rs index c1acdaf7031..a2cedc853a1 100644 --- a/src/test/codegen/mir_zst_stores.rs +++ b/src/test/codegen/mir_zst_stores.rs @@ -10,7 +10,6 @@ // compile-flags: -C no-prepopulate-passes -#![feature(rustc_attrs)] #![crate_type = "lib"] use std::marker::PhantomData; @@ -19,7 +18,6 @@ struct Zst { phantom: PhantomData<Zst> } // CHECK-LABEL: @mir #[no_mangle] -#[rustc_mir] fn mir(){ // CHECK-NOT: getelementptr // CHECK-NOT: store{{.*}}undef diff --git a/src/test/codegen/naked-functions.rs b/src/test/codegen/naked-functions.rs index 199f7f02018..9de74f72005 100644 --- a/src/test/codegen/naked-functions.rs +++ b/src/test/codegen/naked-functions.rs @@ -13,7 +13,7 @@ // compile-flags: -C no-prepopulate-passes #![crate_type = "lib"] -#![feature(naked_functions, rustc_attrs)] +#![feature(naked_functions)] // CHECK: Function Attrs: naked uwtable // CHECK-NEXT: define internal void @naked_empty() @@ -26,11 +26,11 @@ fn naked_empty() { // CHECK: Function Attrs: naked uwtable #[no_mangle] #[naked] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. // CHECK-NEXT: define internal void @naked_with_args(i{{[0-9]+}}) fn naked_with_args(a: isize) { // CHECK: %a = alloca i{{[0-9]+}} // CHECK: ret void + &a; // keep variable in an alloca } // CHECK: Function Attrs: naked uwtable @@ -46,10 +46,10 @@ fn naked_with_return() -> isize { // CHECK-NEXT: define internal i{{[0-9]+}} @naked_with_args_and_return(i{{[0-9]+}}) #[no_mangle] #[naked] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. fn naked_with_args_and_return(a: isize) -> isize { // CHECK: %a = alloca i{{[0-9]+}} // CHECK: ret i{{[0-9]+}} %{{[0-9]+}} + &a; // keep variable in an alloca a } diff --git a/src/test/codegen/refs.rs b/src/test/codegen/refs.rs index 36c83412e4f..49ed2229fcd 100644 --- a/src/test/codegen/refs.rs +++ b/src/test/codegen/refs.rs @@ -11,7 +11,6 @@ // compile-flags: -C no-prepopulate-passes #![crate_type = "lib"] -#![feature(rustc_attrs)] // Hack to get the correct size for the length part in slices // CHECK: @helper([[USIZE:i[0-9]+]]) @@ -21,12 +20,14 @@ fn helper(_: usize) { // CHECK-LABEL: @ref_dst #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn ref_dst(s: &[u8]) { // We used to generate an extra alloca and memcpy to ref the dst, so check that we copy // directly to the alloca for "x" -// CHECK: [[SRC:%[0-9]+]] = bitcast { i8*, [[USIZE]] }* %s to i8* -// CHECK: [[DST:%[0-9]+]] = bitcast { i8*, [[USIZE]] }* %x to i8* -// CHECK: call void @llvm.memcpy.{{.*}}(i8* [[DST]], i8* [[SRC]], +// CHECK: [[X0:%[0-9]+]] = getelementptr {{.*}} { i8*, [[USIZE]] }* %x, i32 0, i32 0 +// CHECK: store i8* %0, i8** [[X0]] +// CHECK: [[X1:%[0-9]+]] = getelementptr {{.*}} { i8*, [[USIZE]] }* %x, i32 0, i32 1 +// CHECK: store [[USIZE]] %1, [[USIZE]]* [[X1]] + let x = &*s; + &x; // keep variable in an alloca } diff --git a/src/test/codegen/stores.rs b/src/test/codegen/stores.rs index 89bb5d93c74..9141b7245e3 100644 --- a/src/test/codegen/stores.rs +++ b/src/test/codegen/stores.rs @@ -11,7 +11,6 @@ // compile-flags: -C no-prepopulate-passes #![crate_type = "lib"] -#![feature(rustc_attrs)] pub struct Bytes { a: u8, @@ -24,12 +23,11 @@ pub struct Bytes { // The array is stored as i32, but its alignment is lower, go with 1 byte to avoid target // dependent alignment #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn small_array_alignment(x: &mut [i8; 4], y: [i8; 4]) { -// CHECK: %y = alloca [4 x i8] +// CHECK: %arg1 = alloca [4 x i8] // CHECK: [[TMP:%.+]] = alloca i32 // CHECK: store i32 %1, i32* [[TMP]] -// CHECK: [[Y8:%[0-9]+]] = bitcast [4 x i8]* %y to i8* +// CHECK: [[Y8:%[0-9]+]] = bitcast [4 x i8]* %arg1 to i8* // CHECK: [[TMP8:%[0-9]+]] = bitcast i32* [[TMP]] to i8* // CHECK: call void @llvm.memcpy.{{.*}}(i8* [[Y8]], i8* [[TMP8]], i{{[0-9]+}} 4, i32 1, i1 false) *x = y; @@ -39,12 +37,11 @@ pub fn small_array_alignment(x: &mut [i8; 4], y: [i8; 4]) { // The struct is stored as i32, but its alignment is lower, go with 1 byte to avoid target // dependent alignment #[no_mangle] -#[rustc_no_mir] // FIXME #27840 MIR has different codegen. pub fn small_struct_alignment(x: &mut Bytes, y: Bytes) { -// CHECK: %y = alloca %Bytes +// CHECK: %arg1 = alloca %Bytes // CHECK: [[TMP:%.+]] = alloca i32 // CHECK: store i32 %1, i32* [[TMP]] -// CHECK: [[Y8:%[0-9]+]] = bitcast %Bytes* %y to i8* +// CHECK: [[Y8:%[0-9]+]] = bitcast %Bytes* %arg1 to i8* // CHECK: [[TMP8:%[0-9]+]] = bitcast i32* [[TMP]] to i8* // CHECK: call void @llvm.memcpy.{{.*}}(i8* [[Y8]], i8* [[TMP8]], i{{[0-9]+}} 4, i32 1, i1 false) *x = y; |
