Commit 84d594c6 by Jason Merrill Committed by Jason Merrill

re PR c++/52035 (internal compiler error: tree code ‘template_type_parm’ is not…

re PR c++/52035 (internal compiler error: tree code ‘template_type_parm’ is not supported in LTO streams)

	PR c++/52035
	* pt.c (tsubst): Strip uninstantiated typedef.

From-SVN: r184000
parent 75685ef7
2012-02-07 Jason Merrill <jason@redhat.com>
PR c++/52035
* pt.c (tsubst): Strip uninstantiated typedef.
2012-02-06 Jason Merrill <jason@redhat.com> 2012-02-06 Jason Merrill <jason@redhat.com>
PR c++/52088 PR c++/52088
......
...@@ -11178,7 +11178,9 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl) ...@@ -11178,7 +11178,9 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl)
complain | tf_ignore_bad_quals); complain | tf_ignore_bad_quals);
return r; return r;
} }
/* Else we must be instantiating the typedef, so fall through. */ else
/* We don't have an instantiation yet, so drop the typedef. */
t = DECL_ORIGINAL_TYPE (decl);
} }
if (type if (type
......
2012-02-07 Jason Merrill <jason@redhat.com>
PR c++/52035
* g++.dg/lto/pr52035_0.C: New.
2012-02-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> 2012-02-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* gfortran.dg/guality/pr41558.f90: Use lp64 instead of hppa*64*-*-*. * gfortran.dg/guality/pr41558.f90: Use lp64 instead of hppa*64*-*-*.
......
...@@ -24,9 +24,9 @@ $ g++ -o <executable> a_0.o a_1.o a_2.o ...@@ -24,9 +24,9 @@ $ g++ -o <executable> a_0.o a_1.o a_2.o
Tests that do not need more than one file are a special case Tests that do not need more than one file are a special case
where there is a single file named 'foo_0.C'. where there is a single file named 'foo_0.C'.
The only supported dg-lto-do option are 'compile', 'run' and 'link'. The only supported dg-lto-do option are 'assemble', 'run' and 'link'.
Additionally, these can only be used in the main file. If Additionally, these can only be used in the main file. If
'compile' is used, only the individual object files are 'assemble' is used, only the individual object files are
generated. If 'link' is used, the final executable is generated generated. If 'link' is used, the final executable is generated
but not executed (in this case, function main() needs to exist but not executed (in this case, function main() needs to exist
but it does not need to do anything). If 'run' is used, the but it does not need to do anything). If 'run' is used, the
......
// PR c++/52035
// { dg-lto-do assemble }
template <typename T> struct QVector {
typedef T* iterator;
static void insert(int n);
typedef int size_type;
};
template <typename T> void QVector<T>::insert(size_type n) {}
void error()
{
int n;
QVector<int>::insert(n);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment