diff options
Diffstat (limited to 'gcc/cp/repo.c')
-rw-r--r-- | gcc/cp/repo.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/cp/repo.c b/gcc/cp/repo.c index 624d6d7..1fe96a2 100644 --- a/gcc/cp/repo.c +++ b/gcc/cp/repo.c @@ -304,16 +304,19 @@ repo_emit_p (tree decl) && (!TYPE_LANG_SPECIFIC (type) || !CLASSTYPE_TEMPLATE_INSTANTIATION (type))) return 2; - /* Static data members initialized by constant expressions must + /* Const static data members initialized by constant expressions must be processed where needed so that their definitions are available. */ - if (DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) + if (DECL_INTEGRAL_CONSTANT_VAR_P (decl) && DECL_CLASS_SCOPE_P (decl)) return 2; } else if (!DECL_TEMPLATE_INSTANTIATION (decl)) return 2; + if (DECL_EXPLICIT_INSTANTIATION (decl)) + return 2; + /* For constructors and destructors, the repository contains information about the clones -- not the original function -- because only the clones are emitted in the object file. */ |