Add an idealistic test for optimize attribute

Alas it does not currently work, because of limitations in compiletest…
This commit is contained in:
Simonas Kazlauskas 2018-11-03 11:13:10 +02:00
parent f38d0da893
commit dcf5482cda

View file

@ -0,0 +1,49 @@
// 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
#![feature(optimize_attribute)]
#![crate_type="rlib"]
// NO-OPT: Function Attrs:{{.*}}optnone
// NO-OPT-NOT: {{optsize|minsize}}
// NO-OPT-NEXT: @nothing
// 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
#[no_mangle]
pub fn nothing() -> i32 {
2 + 2
}
// CHECK: Function Attrs:{{.*}} minsize{{.*}}optsize
// CHECK-NEXT: @size
// CHECK-NEXT: start
// CHECK-NEXT: ret i32 4
#[optimize(size)]
#[no_mangle]
pub fn size() -> i32 {
2 + 2
}
// CHECK: Function Attrs:
// CHECK-NOT: {{minsize|optsize|optnone}}
// CHECK-NEXT: @speed
// CHECK-NEXT: start
// CHECK-NEXT: ret i32 4
#[optimize(speed)]
#[no_mangle]
pub fn speed() -> i32 {
2 + 2
}