+2019-10-11 Jason Merrill <jason@redhat.com>
+
+ * decl2.c (mark_used): Don't clobber DECL_SOURCE_LOCATION on
+ explicitly defaulted functions.
+ * method.c (synthesize_method): Likewise.
+
2019-10-11 Jakub Jelinek <jakub@redhat.com>
PR c++/91987
/* Remember the current location for a function we will end up
synthesizing. Then we can inform the user where it was
required in the case of error. */
- DECL_SOURCE_LOCATION (decl) = input_location;
+ if (DECL_ARTIFICIAL (decl))
+ DECL_SOURCE_LOCATION (decl) = input_location;
/* Synthesizing an implicitly defined member function will result in
garbage collection. We must treat this situation as if we were
/* Reset the source location, we might have been previously
deferred, and thus have saved where we were first needed. */
- if (!DECL_INHERITED_CTOR (fndecl))
+ if (DECL_ARTIFICIAL (fndecl) && !DECL_INHERITED_CTOR (fndecl))
DECL_SOURCE_LOCATION (fndecl)
= DECL_SOURCE_LOCATION (TYPE_NAME (DECL_CONTEXT (fndecl)));
pop_deferring_access_checks ();
if (error_count != errorcount || warning_count != warningcount + werrorcount)
- inform (input_location, "synthesized method %qD first required here",
- fndecl);
+ if (DECL_ARTIFICIAL (fndecl))
+ inform (input_location, "synthesized method %qD first required here",
+ fndecl);
}
/* Build a reference to type TYPE with cv-quals QUALS, which is an