[PR c++/85634] Fix tsubst ICE
https://gcc.gnu.org/ml/gcc-patches/2018-06/msg01274.html PR c++/85634 * friend.c (add_friend): Keep lookup sets of tempate sets. PR c++/85634 * g++.dg/lookup/pr85634-2.C: New. From-SVN: r261817
This commit is contained in:
parent
f2cb6e64c9
commit
c145665684
|
@ -1,3 +1,8 @@
|
|||
2018-06-20 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
PR c++/85634
|
||||
* friend.c (add_friend): Keep lookup sets of tempate sets.
|
||||
|
||||
2018-06-20 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* decl.c (grokfndecl): Add const cp_decl_specifier_seq* parameter;
|
||||
|
|
|
@ -173,6 +173,12 @@ add_friend (tree type, tree decl, bool complain)
|
|||
if (decl == error_mark_node)
|
||||
return;
|
||||
|
||||
if (TREE_CODE (decl) == FUNCTION_DECL
|
||||
&& DECL_TEMPLATE_INSTANTIATION (decl))
|
||||
/* We'll have parsed this as a declaration, and therefore not
|
||||
marked the lookup set for keeping. Do that now. */
|
||||
lookup_keep (DECL_TI_TEMPLATE (decl));
|
||||
|
||||
typedecl = TYPE_MAIN_DECL (type);
|
||||
list = DECL_FRIENDLIST (typedecl);
|
||||
name = DECL_NAME (decl);
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2018-06-20 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
PR c++/85634
|
||||
* g++.dg/lookup/pr85634-2.C: New.
|
||||
|
||||
2018-06-20 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* g++.dg/template/friend65.C: New.
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
// PR c++/85634
|
||||
|
||||
namespace bsl {
|
||||
template <class T> void frob (const T *);
|
||||
}
|
||||
|
||||
using namespace bsl;
|
||||
|
||||
template<class VALUE> void frob (const VALUE &);
|
||||
|
||||
template <typename T>
|
||||
struct TPL {
|
||||
friend void frob <T> (const T &);
|
||||
};
|
||||
|
||||
TPL<int> x;
|
Loading…
Reference in New Issue