Looks good - alternatively you could phrase this as a single function with a macro for the nodebug attribute - two clang+FileCheck lines, one passes -D to enable the nodebug, one passes an empty -D. Might be a more direct comparison? (& does require two clang invocations, which is a tradeoff)
On Thu, Jun 25, 2015 at 4:11 PM, Paul Robinson < [email protected]> wrote: > I had a similar thought, but had foolishly suppressed it. Since you had > the same thought, it's probably worth paying attention to it. > > > http://reviews.llvm.org/D10747 > > Files: > test/CodeGen/attr-nodebug.c > > Index: test/CodeGen/attr-nodebug.c > =================================================================== > --- test/CodeGen/attr-nodebug.c > +++ test/CodeGen/attr-nodebug.c > @@ -1,12 +1,32 @@ > -// RUN: %clang_cc1 -g -emit-llvm -o %t %s > -// RUN: not grep 'call void @llvm.dbg.func.start' %t > +// RUN: %clang_cc1 -g -emit-llvm -o - %s | FileCheck %s > > void t1() __attribute__((nodebug)); > > void t1() > { > int a = 10; > - > a++; > } > > +void t2() > +{ > + int b = 10; > + b++; > +} > + > +// With nodebug, IR should have no llvm.dbg.* calls, or !dbg annotations. > +// CHECK-LABEL: @t1 > +// CHECK-NOT: dbg > +// CHECK: } > + > +// For sanity, check those things do occur normally. > +// CHECK-LABEL: @t2 > +// CHECK: call{{.*}}llvm.dbg > +// CHECK: !dbg > +// CHECK: } > + > +// We should see a function description for t2 but not t1. > +// CHECK-NOT: DISubprogram(name: "t1" > +// CHECK: DISubprogram(name: "t2" > +// CHECK-NOT: DISubprogram(name: "t1" > + > > EMAIL PREFERENCES > http://reviews.llvm.org/settings/panel/emailpreferences/ >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
