OSDN Git Service

PR c++/10690
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Nov 2009 15:59:52 +0000 (15:59 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Nov 2009 15:59:52 +0000 (15:59 +0000)
* rtti.c (get_tinfo_decl_dynamic): Call resolve_nondeduced_context.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154675 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/rtti.c
gcc/testsuite/g++.dg/template/explicit-args2.C

index 72d7832..5fd5f26 100644 (file)
@@ -1,3 +1,8 @@
+2009-11-25  Jason Merrill  <jason@redhat.com>
+
+       PR c++/10690
+       * rtti.c (get_tinfo_decl_dynamic): Call resolve_nondeduced_context.
+
 2009-11-24  Jason Merrill  <jason@redhat.com>
 
        PR c++/42137
index e96abcb..383c96c 100644 (file)
@@ -245,6 +245,8 @@ get_tinfo_decl_dynamic (tree exp)
   if (error_operand_p (exp))
     return error_mark_node;
 
+  exp = resolve_nondeduced_context (exp);
+
   /* peel back references, so they match.  */
   type = non_reference (TREE_TYPE (exp));
 
index cd53b45..d37b734 100644 (file)
@@ -1,6 +1,8 @@
 // PR c++/37177
 // { dg-options -std=c++0x }
 
+#include <typeinfo>
+
 namespace N1
 {
   template<class T> bool foo();
@@ -21,18 +23,22 @@ int main()
 {
   (void)(&S::bar<int>);
   decltype(&S::bar<int>) a;
+  typeid(&S::bar<int>);
 
   (void*)(&S::foo<int>);
   (void)(&S::foo<int>);
   decltype(&S::foo<int>) b;
+  typeid(&S::foo<int>);
 
   (void*)(&N1::foo<int>);
   (void)(&N1::foo<int>);
   decltype(&N1::foo<int>) c;
+  typeid(&N1::foo<int>);
 
   (void*)(&foo<int>);
   (void)(&foo<int>);
   decltype(&foo<int>) d;
+  typeid(&foo<int>);
 
   &foo<int> == 0;
 }