1 // RUN: %clang_cc1 -Oz -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s -check-prefix=Oz
2 // RUN: %clang_cc1 -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
3 // RUN: %clang_cc1 -O1 -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
4 // RUN: %clang_cc1 -O2 -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
5 // RUN: %clang_cc1 -O3 -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
6 // RUN: %clang_cc1 -Os -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
7 // Check that we set the minsize attribute on each function
8 // when Oz optimization level is set.
10 __attribute__((minsize
))
13 // Oz: @{{.*}}test1{{.*}}[[MINSIZE:#[0-9]+]]
14 // OTHER: @{{.*}}test1{{.*}}[[MS:#[0-9]+]]
19 // Oz: @{{.*}}test2{{.*}}[[MINSIZE]]
21 // OTHER: @{{.*}}test2
28 // Oz: @{{.*}}test3{{.*}}[[MINSIZE]]
30 // OTHER: @{{.*}}test3
35 // Check that the minsize attribute is well propagated through
36 // template instantiation
39 __attribute__((minsize
))
45 void test4
<int>(int arg
);
46 // Oz: define{{.*}}void @{{.*}}test4
48 // OTHER: define{{.*}}void @{{.*}}test4
52 void test4
<float>(float arg
);
53 // Oz: define{{.*}}void @{{.*}}test4
55 // OTHER: define{{.*}}void @{{.*}}test4
64 void test5
<int>(int arg
);
65 // Oz: define{{.*}}void @{{.*}}test5
67 // OTHER: define{{.*}}void @{{.*}}test5
68 // OTHER-NOT: define{{.*}}void @{{.*}}test5{{.*}}[[MS]]
71 void test5
<float>(float arg
);
72 // Oz: define{{.*}}void @{{.*}}test5
74 // OTHER: define{{.*}}void @{{.*}}test5
75 // OTHER-NOT: define{{.*}}void @{{.*}}test5{{.*}}[[MS]]
77 // Oz: attributes [[MINSIZE]] = { minsize{{.*}} }
79 // OTHER: attributes [[MS]] = { minsize{{.*}} }