------- Additional Comments From mark at codesourcery dot com 2005-04-22 00:58 ------- Subject: Re: [PR c++/21087] don't keep builtin anticipated decl, override it with actual declaration
Alexandre Oliva wrote: > When push_overloaded_decl() was passed a new declaration that matches > a builtin decl, it would verify that the declarations matched and, if > so, leave the existing (built-in) declaration alone. > > The intended behavior is to merge the built-in declaration with the > new declaration, into the location of the built-in declaration. > > The problem is that duplicate_decl() doesn't perform such merging when > the new declaration is a template decl, and then we end up with an > overload involving the template decl and the anticipated built-in > decl. However, overloads involving anticipated decls are something we > try to avoid, and actually check for elsewhere. > > This patch fixes the code such that, if the existing decl is > anticipated and the two decls weren't merged, we discard the built-in > and use the new decl by itself. > > Bootstrapped and regtested on amd64-linux-gnu. Ok to install? OK. Yet another reason we should generate builtins lazily, as needed... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21087