diff options
author | Jason Merrill <jason@redhat.com> | 2011-05-04 22:20:12 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-05-04 22:20:12 -0400 |
commit | 4d3baecc5cf1e488369c33bca01effa7762867eb (patch) | |
tree | e72a5249c94939b2cd875d994f23312d7f6ed614 /gcc | |
parent | adad100716c4abc6187ee128529ae03b9614ff23 (diff) | |
download | gcc-4d3baecc5cf1e488369c33bca01effa7762867eb.zip gcc-4d3baecc5cf1e488369c33bca01effa7762867eb.tar.gz gcc-4d3baecc5cf1e488369c33bca01effa7762867eb.tar.bz2 |
re PR c++/48749 (internal compiler error: tree check: expected field_decl)
PR c++/48749
* class.c (resolves_to_fixed_type_p): Don't look closely
in templates.
From-SVN: r173412
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/class.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/conversion/base1.C | 20 |
4 files changed, 41 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index dccd765..ae3ac93 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2011-05-04 Jason Merrill <jason@redhat.com> + + PR c++/48749 + * class.c (resolves_to_fixed_type_p): Don't look closely + in templates. + 2011-05-03 Paolo Carlini <paolo.carlini@oracle.com> PR c++/28501 diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 9af238b..a67b34a 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -5980,7 +5980,17 @@ resolves_to_fixed_type_p (tree instance, int* nonnull) { tree t = TREE_TYPE (instance); int cdtorp = 0; - tree fixed = fixed_type_or_null (instance, nonnull, &cdtorp); + tree fixed; + + if (processing_template_decl) + { + /* In a template we only care about the type of the result. */ + if (nonnull) + *nonnull = true; + return true; + } + + fixed = fixed_type_or_null (instance, nonnull, &cdtorp); if (fixed == NULL_TREE) return 0; if (POINTER_TYPE_P (t)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 030501d..4ff8b0f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-05-04 Jason Merrill <jason@redhat.com> + + * g++.dg/conversion/base1.C: New. + 2011-05-04 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/48787 diff --git a/gcc/testsuite/g++.dg/conversion/base1.C b/gcc/testsuite/g++.dg/conversion/base1.C new file mode 100644 index 0000000..e236504 --- /dev/null +++ b/gcc/testsuite/g++.dg/conversion/base1.C @@ -0,0 +1,20 @@ +// PR c++/48749 + +struct Tuple3 +{ + float x; +}; + +struct Pos: virtual Tuple3 { }; + +struct TexCoords +{ + Pos pos; +}; + +template <class T> +void eval (const TexCoords &coords) +{ + const Pos &pos = coords.pos; + pos.x; +} |