aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/pt.c
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2000-08-23 17:12:23 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2000-08-23 17:12:23 +0000
commit94350948fbd3d9e2157f2e39903c78ca0661a25b (patch)
tree3b18de0b9496900a925203d22eada82d35fb45e4 /gcc/cp/pt.c
parente282c9c9f5ab1e633571d3ded6e15a81beb690cc (diff)
downloadgcc-94350948fbd3d9e2157f2e39903c78ca0661a25b.zip
gcc-94350948fbd3d9e2157f2e39903c78ca0661a25b.tar.gz
gcc-94350948fbd3d9e2157f2e39903c78ca0661a25b.tar.bz2
cp-tree.h (DECL_CLONED_FUNCTION_P): Check DECL_LANG_SPECIFIC.
* cp-tree.h (DECL_CLONED_FUNCTION_P): Check DECL_LANG_SPECIFIC. * mangle.c (write_function_type): Change prototype. (write_encoding): Don't mangle return types for constructors or destructors. (write_type): Adjust call to write_function_type. * pt.c (instantiate_template): Instantiate alternate entry points when instantiating the main function. From-SVN: r35916
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r--gcc/cp/pt.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 5fab848..59fe306 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -7420,6 +7420,7 @@ tree
instantiate_template (tmpl, targ_ptr)
tree tmpl, targ_ptr;
{
+ tree clone;
tree fndecl;
tree gen_tmpl;
tree spec;
@@ -7483,6 +7484,13 @@ instantiate_template (tmpl, targ_ptr)
if (flag_external_templates)
add_pending_template (fndecl);
+ /* If we've just instantiated the main entry point for a function,
+ instantiate all the alternate entry points as well. */
+ for (clone = TREE_CHAIN (gen_tmpl);
+ clone && DECL_CLONED_FUNCTION_P (clone);
+ clone = TREE_CHAIN (clone))
+ instantiate_template (clone, targ_ptr);
+
return fndecl;
}