xref: /aosp_15_r20/external/clang/test/CodeGen/attr-nodebug.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -debug-info-kind=limited -emit-llvm -o - %s | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li void t1() __attribute__((nodebug));
4*67e74705SXin Li 
t1()5*67e74705SXin Li void t1()
6*67e74705SXin Li {
7*67e74705SXin Li   int a = 10;
8*67e74705SXin Li   a++;
9*67e74705SXin Li }
10*67e74705SXin Li 
t2()11*67e74705SXin Li void t2()
12*67e74705SXin Li {
13*67e74705SXin Li   int b = 10;
14*67e74705SXin Li   b++;
15*67e74705SXin Li }
16*67e74705SXin Li 
17*67e74705SXin Li // With nodebug, IR should have no llvm.dbg.* calls, or !dbg annotations.
18*67e74705SXin Li // CHECK-LABEL: @t1
19*67e74705SXin Li // CHECK-NOT:   dbg
20*67e74705SXin Li // CHECK:       }
21*67e74705SXin Li 
22*67e74705SXin Li // For sanity, check those things do occur normally.
23*67e74705SXin Li // CHECK-LABEL: @t2
24*67e74705SXin Li // CHECK:       call{{.*}}llvm.dbg
25*67e74705SXin Li // CHECK:       !dbg
26*67e74705SXin Li // CHECK:       }
27*67e74705SXin Li 
28*67e74705SXin Li // We should see a function description for t2 but not t1.
29*67e74705SXin Li // CHECK-NOT: DISubprogram(name: "t1"
30*67e74705SXin Li // CHECK:     DISubprogram(name: "t2"
31*67e74705SXin Li // CHECK-NOT: DISubprogram(name: "t1"
32*67e74705SXin Li 
33