xref: /llvm-project/clang/test/CodeGen/attr-disable-tail-calls.c (revision fe02896a79174af089600d9ea13bb0f7a446cb8f)
1 // RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 %s -emit-llvm -fno-optimize-sibling-calls -o - | FileCheck %s -check-prefix=DISABLE
2 // RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 %s -emit-llvm -o - | FileCheck %s -check-prefix=ENABLE
3 
4 // DISABLE: define{{.*}} i32 @f1() [[ATTRTRUE:#[0-9]+]] {
5 // DISABLE: define{{.*}} i32 @f2() [[ATTRTRUE]] {
6 // ENABLE: define{{.*}} i32 @f1() [[ATTRFALSE:#[0-9]+]] {
7 // ENABLE: define{{.*}} i32 @f2() [[ATTRTRUE:#[0-9]+]] {
8 
f1(void)9 int f1(void) {
10   return 0;
11 }
12 
f2(void)13 int f2(void) __attribute__((disable_tail_calls)) {
14   return 0;
15 }
16 
17 // DISABLE: attributes [[ATTRTRUE]] = { {{.*}}"disable-tail-calls"="true"{{.*}} }
18 // ENABLE-NOT: attributes [[ATTRFALSE]] = { {{.*}}"disable-tail-calls"="false"{{.*}} }
19 // ENABLE: attributes [[ATTRTRUE]] = { {{.*}}"disable-tail-calls"="true"{{.*}} }
20