]> git.lizzy.rs Git - rust.git/commitdiff
Add an idealistic test for optimize attribute
authorSimonas Kazlauskas <git@kazlauskas.me>
Sat, 3 Nov 2018 09:13:10 +0000 (11:13 +0200)
committerSimonas Kazlauskas <git@kazlauskas.me>
Thu, 24 Jan 2019 18:13:51 +0000 (20:13 +0200)
Alas it does not currently work, because of limitations in compiletest…

src/test/codegen/optimize-attr-1.rs [new file with mode: 0644]

diff --git a/src/test/codegen/optimize-attr-1.rs b/src/test/codegen/optimize-attr-1.rs
new file mode 100644 (file)
index 0000000..b742a36
--- /dev/null
@@ -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
+}