https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80780
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 49653 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49653&action=edit gcc11-pr80780-wip.patch For the default argument, my current ugly hack is attached. But guess it needs to be done similarly when parsing_nsdmi () and then at some point (and I have no idea where exactly) call the same function, somewhere after break_out_target_exprs is called on the nsdmi. If there is a user defined ctor, I guess the nsdmis in that ctor should get one of the locations of the ctor (but which one), what about if there is no user defined ctor and the compiler synthetizes it? What location should that have? And, I'm not sure I understood where it would get something from aggregate initialization. So something like: struct S { source_location a = source_location::current_location (); source_location b = source_location::current_location (); S () {} }; struct T { int t; source_location u = source_location::current_location (); }; ?