On Fri, Oct 3, 2014 at 10:13 AM, Siva Chandra <sivachan...@google.com> wrote: > On Fri, Oct 3, 2014 at 7:17 AM, Jason Merrill <ja...@redhat.com> wrote: >> On 10/03/2014 09:12 AM, Mark Wielaard wrote: >>> >>> A debugger not knowing whether a special member function was explicitly >>> defaulted, implicitly declared or explicitly defined seems less confusion >>> than not knowing whether it was deleted. But there are some subtle cases >>> where knowing whether a constructor was user defined or explicitly >>> defaulted do matter for whether the default constructor might have been >>> implicitly generated. >> >> >> Can you elaborate? >> >>> So like the deleted case this patch introduces >>> a new attribute DW_AT_GNU_defaulted that gets attached to the function >>> declaration. Note that since this is for declarations we explicitly >>> test for DECL_DEFAULTED_IN_CLASS_P and ignore any implementation >>> definitions that use = default; outside the class body. >> >> >> Hmm, I'm dubious about this choice. How do you expect a consumer to use >> this information? > > I apologize for gate crashing here... > > Currently, there is no special attribute to indicate that a special > member function is declared = default. So, if you have a class > definition like this: > > class A > { > public: > A () {} > ~A () = default; > int a; > }; > > then, GDB sees the declaration of the destructor with no special > attributes (like DW_AT_artificial or similar) and thinks that the copy > constructor is user defined.
Aww, sorry. I should have said destructor instead of copy constructor.