> On Feb 9, 2015, at 11:09 AM, David Blaikie <[email protected]> wrote: > > > > On Mon, Feb 9, 2015 at 11:07 AM, Frédéric Riss <[email protected] > <mailto:[email protected]>> wrote: > > > On Feb 9, 2015, at 10:47 AM, David Blaikie <[email protected] > > <mailto:[email protected]>> wrote: > > > > Author: dblaikie > > Date: Mon Feb 9 12:47:14 2015 > > New Revision: 228588 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=228588&view=rev > > <http://llvm.org/viewvc/llvm-project?rev=228588&view=rev> > > Log: > > DebugInfo: Suppress the location of instructions in aggregate default > > arguments. > > > > Matches the existing code for scalar default arguments. Complex default > > arguments probably need the same handling too (test/fix to that coming > > next). > > What was the behavior before that? Was the location set to the declaration > with the default argument description? > > Yes > > I think I wouldn’t matter my debugger jumping there when the code actually > does something non-trivial to initialize the argument(s). > > Perhaps - though it is a bit jarring whenever you step passed a std::string, > std::vector, etc ctor and leap into the standard library header to see the > Allocator() ctor call, then go back to your code.
This is true, however from a purely semantic POV I think a ‘step’ should really get you there. I mostly asked out of curiosity, I’m not objecting to the change. I guess people could find it strange and that hiding the initialization is a sane choice (although remembering the developer that something non-trivial is happening here also has its advantages). > I do wonder if maybe the same is_stmt change we're discussing for dtors would > be suitable here, so you don't step to it, but it does appear in the > backtrace. Still awkward line table entry "foo() : basic_string:20473" or > something - "wait, foo isn't in basic_string…". Not sure I’m totally following here. The basic_string code in foo() should appear as an inlined function, shouldn’t it? Fred > > Fred > > > Modified: > > cfe/trunk/lib/CodeGen/CGExprAgg.cpp > > cfe/trunk/test/CodeGenCXX/debug-info-line.cpp > > > > Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp > > URL: > > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=228588&r1=228587&r2=228588&view=diff > > > > <http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=228588&r1=228587&r2=228588&view=diff> > > ============================================================================== > > --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original) > > +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Mon Feb 9 12:47:14 2015 > > @@ -1387,7 +1387,12 @@ void CodeGenFunction::EmitAggExpr(const > > // Optimize the slot if possible. > > CheckAggExprForMemSetUse(Slot, E, *this); > > > > + bool hasDebugInfo = getDebugInfo(); > > + if (isa<CXXDefaultArgExpr>(E)) > > + disableDebugInfo(); > > AggExprEmitter(*this, Slot).Visit(const_cast<Expr*>(E)); > > + if (isa<CXXDefaultArgExpr>(E) && hasDebugInfo) > > + enableDebugInfo(); > > } > > > > LValue CodeGenFunction::EmitAggExprToLValue(const Expr *E) { > > > > Modified: cfe/trunk/test/CodeGenCXX/debug-info-line.cpp > > URL: > > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-line.cpp?rev=228588&r1=228587&r2=228588&view=diff > > > > <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-line.cpp?rev=228588&r1=228587&r2=228588&view=diff> > > ============================================================================== > > --- cfe/trunk/test/CodeGenCXX/debug-info-line.cpp (original) > > +++ cfe/trunk/test/CodeGenCXX/debug-info-line.cpp Mon Feb 9 12:47:14 2015 > > @@ -274,6 +274,17 @@ void f22() { > > } > > } > > > > +// CHECK-LABEL: define > > +struct f23_struct { > > +}; > > +f23_struct f23_a(); > > +void f23_b(f23_struct = f23_a()); > > +void f23() { > > +// CHECK: call {{.*}}f23_a{{.*}}, !dbg [[DBG_F23:![0-9]*]] > > +#line 2500 > > + f23_b(); > > +} > > + > > // CHECK: [[DBG_F1]] = !MDLocation(line: 100, > > // CHECK: [[DBG_FOO_VALUE]] = !MDLocation(line: 200, > > // CHECK: [[DBG_FOO_REF]] = !MDLocation(line: 202, > > @@ -302,3 +313,4 @@ void f22() { > > // CHECK: [[DBG_F19_1]] = !MDLocation(line: 2100, > > // CHECK: [[DBG_F19_2]] = !MDLocation(line: 2101, > > // CHECK: [[DBG_F20_1]] = !MDLocation(line: 2200, > > +// CHECK: [[DBG_F23]] = !MDLocation(line: 2500, > > > > > > _______________________________________________ > > cfe-commits mailing list > > [email protected] <mailto:[email protected]> > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > > <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits>
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
