
Several of these tests (the two deleted, and the one removal edit) were relying on the optimizer to collapse things to test some frontend feature. The tests were really old and features seemed amply covered by other parts of the test suite, so I just removed them. If anyone thinks they're valuable enough to keep/fix, we can play around with that, for sure. (inspired by r252872) llvm-svn: 253114
80 lines
2.1 KiB
C++
80 lines
2.1 KiB
C++
// RUN: %clang_cc1 -Oz -disable-llvm-optzns -emit-llvm %s -o - | FileCheck %s -check-prefix=Oz
|
|
// RUN: %clang_cc1 -disable-llvm-optzns -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
|
|
// RUN: %clang_cc1 -O1 -disable-llvm-optzns -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
|
|
// RUN: %clang_cc1 -O2 -disable-llvm-optzns -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
|
|
// RUN: %clang_cc1 -O3 -disable-llvm-optzns -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
|
|
// RUN: %clang_cc1 -Os -disable-llvm-optzns -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
|
|
// Check that we set the minsize attribute on each function
|
|
// when Oz optimization level is set.
|
|
|
|
__attribute__((minsize))
|
|
int test1() {
|
|
return 42;
|
|
// Oz: @{{.*}}test1{{.*}}[[MINSIZE:#[0-9]+]]
|
|
// OTHER: @{{.*}}test1{{.*}}[[MS:#[0-9]+]]
|
|
}
|
|
|
|
int test2() {
|
|
return 42;
|
|
// Oz: @{{.*}}test2{{.*}}[[MINSIZE]]
|
|
// Oz: ret
|
|
// OTHER: @{{.*}}test2
|
|
// OTHER-NOT: [[MS]]
|
|
// OTHER: ret
|
|
}
|
|
|
|
int test3() {
|
|
return 42;
|
|
// Oz: @{{.*}}test3{{.*}}[[MINSIZE]]
|
|
// Oz: ret
|
|
// OTHER: @{{.*}}test3
|
|
// OTHER-NOT: [[MS]]
|
|
// OTHER: ret
|
|
}
|
|
|
|
// Check that the minsize attribute is well propagated through
|
|
// template instantiation
|
|
|
|
template<typename T>
|
|
__attribute__((minsize))
|
|
void test4(T arg) {
|
|
return;
|
|
}
|
|
|
|
template
|
|
void test4<int>(int arg);
|
|
// Oz: define{{.*}}void @{{.*}}test4
|
|
// Oz: [[MINSIZE]]
|
|
// OTHER: define{{.*}}void @{{.*}}test4
|
|
// OTHER: [[MS]]
|
|
|
|
template
|
|
void test4<float>(float arg);
|
|
// Oz: define{{.*}}void @{{.*}}test4
|
|
// Oz: [[MINSIZE]]
|
|
// OTHER: define{{.*}}void @{{.*}}test4
|
|
// OTHER: [[MS]]
|
|
|
|
template<typename T>
|
|
void test5(T arg) {
|
|
return;
|
|
}
|
|
|
|
template
|
|
void test5<int>(int arg);
|
|
// Oz: define{{.*}}void @{{.*}}test5
|
|
// Oz: [[MINSIZE]]
|
|
// OTHER: define{{.*}}void @{{.*}}test5
|
|
// OTHER-NOT: define{{.*}}void @{{.*}}test5{{.*}}[[MS]]
|
|
|
|
template
|
|
void test5<float>(float arg);
|
|
// Oz: define{{.*}}void @{{.*}}test5
|
|
// Oz: [[MINSIZE]]
|
|
// OTHER: define{{.*}}void @{{.*}}test5
|
|
// OTHER-NOT: define{{.*}}void @{{.*}}test5{{.*}}[[MS]]
|
|
|
|
// Oz: attributes [[MINSIZE]] = { minsize{{.*}} }
|
|
|
|
// OTHER: attributes [[MS]] = { minsize nounwind{{.*}} }
|