xref: /llvm-project/clang/test/Driver/test-uwtable.cpp (revision fe8eab468eee18329922901bcf74310534e08b59)
1*fe8eab46SShubham Sandeep Rastogi // This test is added to provide test coverage for the uwtable attribute. It
2*fe8eab46SShubham Sandeep Rastogi // aims to make sure that for an X86_64 output compiled with -fexceptions or
3*fe8eab46SShubham Sandeep Rastogi //  -fno-exceptions, a uwtable attribute is emitted. However, for an AArch64
4*fe8eab46SShubham Sandeep Rastogi //  output with -fexceptions a uwtable attribute is emitted, but with
5*fe8eab46SShubham Sandeep Rastogi // -fno-exceptions a uwtable attribute is not emitted.
6*fe8eab46SShubham Sandeep Rastogi 
7*fe8eab46SShubham Sandeep Rastogi // RUN: %clang -g -fexceptions --target=x86_64-apple-darwin %s -S -emit-llvm -o - | FileCheck %s --check-prefix=X86_64_UWTABLE_EXCEPTIONS
8*fe8eab46SShubham Sandeep Rastogi // X86_64_UWTABLE_EXCEPTIONS: attributes #0 = { {{.*}} uwtable
9*fe8eab46SShubham Sandeep Rastogi // X86_64_UWTABLE_EXCEPTIONS: !{{[0-9]+}} = !{i32 7, !"uwtable", i32 2}
10*fe8eab46SShubham Sandeep Rastogi 
11*fe8eab46SShubham Sandeep Rastogi // RUN: %clang -g -fno-exceptions --target=x86_64-apple-darwin %s -S -emit-llvm -o - | FileCheck %s --check-prefix=X86_64_UWTABLE
12*fe8eab46SShubham Sandeep Rastogi // X86_64_UWTABLE: attributes #0 = { {{.*}} uwtable
13*fe8eab46SShubham Sandeep Rastogi // X86_64_UWTABLE: !{{[0-9]+}} = !{i32 7, !"uwtable", i32 2}
14*fe8eab46SShubham Sandeep Rastogi 
15*fe8eab46SShubham Sandeep Rastogi // RUN: %clang -g -fexceptions --target=arm64-apple-darwin %s -S -emit-llvm -o - | FileCheck %s --check-prefix=ARM64_UWTABLE_EXCEPTIONS
16*fe8eab46SShubham Sandeep Rastogi // ARM64_UWTABLE_EXCEPTIONS: attributes #0 = { {{.*}} uwtable
17*fe8eab46SShubham Sandeep Rastogi // ARM64_UWTABLE_EXCEPTIONS: !{{[0-9]+}} = !{i32 7, !"uwtable", i32 1}
18*fe8eab46SShubham Sandeep Rastogi 
19*fe8eab46SShubham Sandeep Rastogi // RUN: %clang -g -fno-exceptions --target=arm64-apple-darwin %s -S -emit-llvm -o - | FileCheck %s --check-prefix=ARM64_UWTABLE
20*fe8eab46SShubham Sandeep Rastogi // ARM64_UWTABLE-NOT: attributes #0 = { {{.*}} uwtable
21*fe8eab46SShubham Sandeep Rastogi // ARM64_UWTABLE-NOT: !{{[0-9]+}} = !{i32 7, !"uwtable", i32 2}
22*fe8eab46SShubham Sandeep Rastogi // ARM64_UWTABLE: attributes #0 =
23*fe8eab46SShubham Sandeep Rastogi 
main()24*fe8eab46SShubham Sandeep Rastogi int main() {
25*fe8eab46SShubham Sandeep Rastogi     return 1;
26*fe8eab46SShubham Sandeep Rastogi }
27