summaryrefslogtreecommitdiff
path: root/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0218-PR-c-48749.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0218-PR-c-48749.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0218-PR-c-48749.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0218-PR-c-48749.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0218-PR-c-48749.patch
new file mode 100644
index 000000000..1caa36a4f
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0218-PR-c-48749.patch
@@ -0,0 +1,59 @@
+From 0a32d85a09c354725c2c18fb7ac42d2809197070 Mon Sep 17 00:00:00 2001
+From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Thu, 5 May 2011 02:51:01 +0000
+Subject: [PATCH] PR c++/48749
+ * class.c (resolves_to_fixed_type_p): Don't look closely
+ in templates.
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173414 138bc75d-0d04-0410-961f-82ee72b054a4
+
+index d19610a..c833329 100644
+--- a/gcc/cp/class.c
++++ b/gcc/cp/class.c
+@@ -5978,7 +5978,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))
+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;
++}
+--
+1.7.0.4
+