* decl2.c (mark_used): Don't instantiate anything if
skip_evaluation.
From-SVN: r65642
+2003-04-15 Jason Merrill <jason@redhat.com>
+
+ * decl2.c (mark_used): Don't instantiate anything if
+ skip_evaluation.
+
2003-04-14 Ziemowit Laski <zlaski@apple.com>
* tree.c (build_cplus_array_type_1): Do not call
mark_used (tree decl)
{
TREE_USED (decl) = 1;
- if (processing_template_decl)
+ if (processing_template_decl || skip_evaluation)
return;
if (TREE_CODE (decl) == FUNCTION_DECL && DECL_DECLARED_INLINE_P (decl)
&& !TREE_ASM_WRITTEN (decl))
/* Remember it, so we can check it was defined. */
defer_fn (decl);
-
- if (!skip_evaluation)
- assemble_external (decl);
+
+ assemble_external (decl);
/* Is it a synthesized method that needs to be synthesized? */
if (TREE_CODE (decl) == FUNCTION_DECL
--- /dev/null
+// The call to f is not potentially evaluated (3.2), so f<int> is not used,
+// so it should not be instantiated.
+
+template <class T>
+T f (T)
+{
+ typename T::X x;
+}
+
+int main()
+{
+ int i = sizeof (f(0));
+}