aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-02-05 20:01:20 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2004-02-05 19:01:20 +0000
commit6039a93dd7214d5f1effdd2c165dc4e52b950139 (patch)
treebde2cf151d7286b5f7f3375f222e5f41d1f11f88 /gcc
parent693dcd3d88f485a85a8cce67f4a42c24b8cc3a1f (diff)
downloadgcc-6039a93dd7214d5f1effdd2c165dc4e52b950139.zip
gcc-6039a93dd7214d5f1effdd2c165dc4e52b950139.tar.gz
gcc-6039a93dd7214d5f1effdd2c165dc4e52b950139.tar.bz2
tree.c (cp_cannot_inline_tree_fn): Allow inlining of comdat functions.
* tree.c (cp_cannot_inline_tree_fn): Allow inlining of comdat functions. From-SVN: r77330
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/tree.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 8dfd5c1..e1d559f 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2004-02-05 Jan Hubicka <jh@suse.cz>
+
+ * tree.c (cp_cannot_inline_tree_fn): Allow inlining of comdat
+ functions.
+
2003-02-05 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/14008
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 3413ede..e07ecd8 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -2080,8 +2080,12 @@ cp_cannot_inline_tree_fn (tree* fnp)
return 1;
/* Don't auto-inline anything that might not be bound within
- this unit of translation. */
- if (!DECL_DECLARED_INLINE_P (fn) && !(*targetm.binds_local_p) (fn))
+ this unit of translation.
+ Exclude comdat functions from this rule. While they can be bound
+ to the other unit, they all must be the same. This is especilly
+ important so templates can inline. */
+ if (!DECL_DECLARED_INLINE_P (fn) && !(*targetm.binds_local_p) (fn)
+ && !DECL_COMDAT (fn))
{
DECL_UNINLINABLE (fn) = 1;
return 1;