xref: /llvm-project/clang/test/CodeGen/attr-nodebug2.c (revision ed509fe296375eb7c01d3d9aeec15cc784695210)
14d8871a8SBruno De Fraine // RUN: %clang_cc1 -x c -debug-info-kind=limited -debugger-tuning=gdb -dwarf-version=4 -O -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s
24d8871a8SBruno De Fraine // RUN: %clang_cc1 -x c++ -debug-info-kind=limited -debugger-tuning=gdb -dwarf-version=4 -O -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s
34d8871a8SBruno De Fraine 
44d8871a8SBruno De Fraine #ifdef __cplusplus
54d8871a8SBruno De Fraine extern "C" {
64d8871a8SBruno De Fraine #endif
74d8871a8SBruno De Fraine 
8*ed509fe2SAaron Ballman void t1(void);
94d8871a8SBruno De Fraine 
use(void)10*ed509fe2SAaron Ballman void use(void) { t1(); }
114d8871a8SBruno De Fraine 
t1(void)12*ed509fe2SAaron Ballman __attribute__((nodebug)) void t1(void) {
134d8871a8SBruno De Fraine   int a = 10;
144d8871a8SBruno De Fraine   a++;
154d8871a8SBruno De Fraine }
164d8871a8SBruno De Fraine 
174d8871a8SBruno De Fraine #ifdef __cplusplus
184d8871a8SBruno De Fraine }
194d8871a8SBruno De Fraine #endif
204d8871a8SBruno De Fraine 
214d8871a8SBruno De Fraine // CHECK-LABEL: define{{.*}} void @use()
224d8871a8SBruno De Fraine // CHECK-SAME:  !dbg
234d8871a8SBruno De Fraine // CHECK-SAME:  {
244d8871a8SBruno De Fraine // CHECK:       !dbg
254d8871a8SBruno De Fraine // CHECK:       }
264d8871a8SBruno De Fraine 
274d8871a8SBruno De Fraine // PR50767 Function __attribute__((nodebug)) inconsistency causes crash
284d8871a8SBruno De Fraine // illegal (non-distinct) !dbg metadata was being added to _Z2t1v definition
294d8871a8SBruno De Fraine 
304d8871a8SBruno De Fraine // CHECK-LABEL: define{{.*}} void @t1()
314d8871a8SBruno De Fraine // CHECK-NOT:   !dbg
324d8871a8SBruno De Fraine // CHECK-SAME:  {
334d8871a8SBruno De Fraine // CHECK-NOT:   !dbg
344d8871a8SBruno De Fraine // CHECK:       }
35