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 Livoid t1() 6*67e74705SXin Li { 7*67e74705SXin Li int a = 10; 8*67e74705SXin Li a++; 9*67e74705SXin Li } 10*67e74705SXin Li t2()11*67e74705SXin Livoid 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