mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-06 02:20:34 +08:00
re PR c++/53816 (internal compiler error: tree check: expected field_decl, have identifier_node in fixed_type_or_null, at cp/class.c:6419, with -std=c++11 option)
PR c++/53816 * class.c (resolves_to_fixed_type_p): Check uses_template_parms (current_function_decl) instead of processing_template_decl. From-SVN: r189187
This commit is contained in:
parent
d695f91575
commit
65f0c5b308
@ -1,5 +1,9 @@
|
||||
2012-07-02 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/53816
|
||||
* class.c (resolves_to_fixed_type_p): Check uses_template_parms
|
||||
(current_function_decl) instead of processing_template_decl.
|
||||
|
||||
PR c++/53821
|
||||
* semantics.c (maybe_add_lambda_conv_op): Don't set
|
||||
DECL_INTERFACE_KNOWN.
|
||||
|
@ -6521,7 +6521,10 @@ resolves_to_fixed_type_p (tree instance, int* nonnull)
|
||||
int cdtorp = 0;
|
||||
tree fixed;
|
||||
|
||||
if (processing_template_decl)
|
||||
/* processing_template_decl can be false in a template if we're in
|
||||
fold_non_dependent_expr, but we still want to suppress this check. */
|
||||
if (current_function_decl
|
||||
&& uses_template_parms (current_function_decl))
|
||||
{
|
||||
/* In a template we only care about the type of the result. */
|
||||
if (nonnull)
|
||||
|
@ -1,3 +1,8 @@
|
||||
2012-07-02 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/53816
|
||||
* g++.dg/template/ref6.C: New.
|
||||
|
||||
2012-07-03 Oleg Endo <olegendo@gcc.gnu.org>
|
||||
|
||||
PR target/53568
|
||||
|
15
gcc/testsuite/g++.dg/template/ref6.C
Normal file
15
gcc/testsuite/g++.dg/template/ref6.C
Normal file
@ -0,0 +1,15 @@
|
||||
// PR c++/53816
|
||||
|
||||
template <typename T>
|
||||
struct S { int v () const; };
|
||||
template <typename T>
|
||||
struct V : public S<T> {};
|
||||
struct U
|
||||
{
|
||||
V<int> v;
|
||||
template<typename T>
|
||||
struct W
|
||||
{
|
||||
W (U const &x) { V<int> const &v = x.v; v.v(); }
|
||||
};
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user