diff options
| author | Simonas Kazlauskas <git@kazlauskas.me> | 2018-11-18 20:51:56 +0200 |
|---|---|---|
| committer | Simonas Kazlauskas <git@kazlauskas.me> | 2019-01-24 20:13:51 +0200 |
| commit | 4d97b2889345d69fa72233b787b30cff73232465 (patch) | |
| tree | 79fe78d9537f549c195864bccaa6d390cff72591 /src/test/codegen | |
| parent | dcf5482cdacd166268f9672f34697dd1da05ceea (diff) | |
| download | rust-4d97b2889345d69fa72233b787b30cff73232465.tar.gz rust-4d97b2889345d69fa72233b787b30cff73232465.zip | |
Support revisions for codegen tests
`compile-flags: -Copt-level` will avoid adding -O. Similarly for -g and -Cdebuglevel.
Diffstat (limited to 'src/test/codegen')
| -rw-r--r-- | src/test/codegen/inline-always-works-always.rs | 21 | ||||
| -rw-r--r-- | src/test/codegen/optimize-attr-1.rs | 59 |
2 files changed, 51 insertions, 29 deletions
diff --git a/src/test/codegen/inline-always-works-always.rs b/src/test/codegen/inline-always-works-always.rs new file mode 100644 index 00000000000..912af782a8f --- /dev/null +++ b/src/test/codegen/inline-always-works-always.rs @@ -0,0 +1,21 @@ +// revisions: NO-OPT SIZE-OPT SPEED-OPT +//[NO-OPT] compile-flags: -Copt-level=0 +//[SIZE-OPT] compile-flags: -Copt-level=s +//[SPEED-OPT] compile-flags: -Copt-level=3 + +#![crate_type="rlib"] + +#[no_mangle] +#[inline(always)] +pub extern "C" fn callee() -> u32 { + 4 + 4 +} + +// CHECK-LABEL: caller +// SIZE-OPT: ret i32 8 +// SPEED-OPT: ret i32 8 +// NO-OPT: ret i32 8 +#[no_mangle] +pub extern "C" fn caller() -> u32 { + callee() +} diff --git a/src/test/codegen/optimize-attr-1.rs b/src/test/codegen/optimize-attr-1.rs index b742a361da9..376447e5b5d 100644 --- a/src/test/codegen/optimize-attr-1.rs +++ b/src/test/codegen/optimize-attr-1.rs @@ -1,49 +1,50 @@ // revisions: NO-OPT SIZE-OPT SPEED-OPT -// [NO-OPT]compile-flags: -Copt-level=0 -// [SIZE-OPT]compile-flags: -Copt-level=s -// [SPEED-OPT]compile-flags: -Copt-level=3 +//[NO-OPT] compile-flags: -Copt-level=0 -Ccodegen-units=1 +//[SIZE-OPT] compile-flags: -Copt-level=s -Ccodegen-units=1 +//[SPEED-OPT] compile-flags: -Copt-level=3 -Ccodegen-units=1 #![feature(optimize_attribute)] #![crate_type="rlib"] -// NO-OPT: Function Attrs:{{.*}}optnone -// NO-OPT-NOT: {{optsize|minsize}} -// NO-OPT-NEXT: @nothing +// CHECK-LABEL: define i32 @nothing +// CHECK-SAME: [[NOTHING_ATTRS:#[0-9]+]] // NO-OPT: ret i32 %1 -// -// SIZE-OPT: Function Attrs:{{.*}}optsize -// SIZE-OPT-NOT: {{minsize|optnone}} -// SIZE-OPT-NEXT: @nothing -// SIZE-OPT-NEXT: start -// SIZE-OPT-NEXT: ret i32 4 -// -// SPEED-OPT: Function Attrs: -// SPEED-OPT-NOT: {{minsize|optnone|optsize}} -// SPEED-OPT-NEXT: @nothing -// SPEED-OPT-NEXT: start -// SPEED-OPT-NEXT: ret i32 4 +// SIZE-OPT: ret i32 4 +// SPEEC-OPT: ret i32 4 #[no_mangle] pub fn nothing() -> i32 { 2 + 2 } -// CHECK: Function Attrs:{{.*}} minsize{{.*}}optsize -// CHECK-NEXT: @size -// CHECK-NEXT: start -// CHECK-NEXT: ret i32 4 +// CHECK-LABEL: define i32 @size +// CHECK-SAME: [[SIZE_ATTRS:#[0-9]+]] +// NO-OPT: ret i32 %1 +// SIZE-OPT: ret i32 6 +// SPEED-OPT: ret i32 6 #[optimize(size)] #[no_mangle] pub fn size() -> i32 { - 2 + 2 + 3 + 3 } -// CHECK: Function Attrs: -// CHECK-NOT: {{minsize|optsize|optnone}} -// CHECK-NEXT: @speed -// CHECK-NEXT: start -// CHECK-NEXT: ret i32 4 +// CHECK-LABEL: define i32 @speed +// NO-OPT-SAME: [[NOTHING_ATTRS]] +// SPEED-OPT-SAME: [[NOTHING_ATTRS]] +// SIZE-OPT-SAME: [[SPEED_ATTRS:#[0-9]+]] +// NO-OPT: ret i32 %1 +// SIZE-OPT: ret i32 8 +// SPEED-OPT: ret i32 8 #[optimize(speed)] #[no_mangle] pub fn speed() -> i32 { - 2 + 2 + 4 + 4 } + +// NO-OPT-DAG: attributes [[SIZE_ATTRS]] = {{.*}}minsize{{.*}}optsize{{.*}} +// SPEED-OPT-DAG: attributes [[SIZE_ATTRS]] = {{.*}}minsize{{.*}}optsize{{.*}} +// SIZE-OPT-DAG: attributes [[NOTHING_ATTRS]] = {{.*}}optsize{{.*}} +// SIZE-OPT-DAG: attributes [[SIZE_ATTRS]] = {{.*}}minsize{{.*}}optsize{{.*}} + +// SIZE-OPT: attributes [[SPEED_ATTRS]] +// SIZE-OPT-NOT: minsize +// SIZE-OPT-NOT: optsize |
