re PR c++/28016 (emitting template constant)

PR c++/28016
	* decl.c (cp_finsh_decl): Do not emit uninstantiated static data
	members.
	PR c++/28016
	* g++.dg/template/static26.C: New test.

From-SVN: r114739
This commit is contained in:
Mark Mitchell 2006-06-17 01:11:34 +00:00 committed by Mark Mitchell
parent 18defd42d7
commit da71e18cae
4 changed files with 26 additions and 8 deletions

View File

@ -1,5 +1,9 @@
2006-06-16 Mark Mitchell <mark@codesourcery.com>
PR c++/28016
* decl.c (cp_finsh_decl): Do not emit uninstantiated static data
members.
PR c++/27979
* call.c (standard_conversion): Strip cv-qualifiers from bitfield
types.

View File

@ -5207,16 +5207,17 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p,
if (at_function_scope_p ())
add_decl_expr (decl);
if (TREE_CODE (decl) == VAR_DECL)
layout_var_decl (decl);
/* Output the assembler code and/or RTL code for variables and functions,
unless the type is an undefined structure or union.
If not, it will get done when the type is completed. */
if (TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL)
/* Let the middle end know about variables and functions -- but not
static data members in uninstantiated class templates. */
if (!saved_processing_template_decl
&& (TREE_CODE (decl) == VAR_DECL
|| TREE_CODE (decl) == FUNCTION_DECL))
{
if (TREE_CODE (decl) == VAR_DECL)
maybe_commonize_var (decl);
{
layout_var_decl (decl);
maybe_commonize_var (decl);
}
make_rtl_for_nonlocal_decl (decl, init, asmspec);

View File

@ -1,5 +1,8 @@
2006-06-16 Mark Mitchell <mark@codesourcery.com>
PR c++/28016
* g++.dg/template/static26.C: New test.
PR c++/27979
* g++.dg/expr/bitfield2.C: New test.

View File

@ -0,0 +1,10 @@
// PR c++/28016
// { dg-final { scan-assembler-not "computed" } }
template<class T1, class T2>
struct scalar_divides_assign {
static const bool computed ;
};
template<class T1, class T2>
const bool scalar_divides_assign<T1,T2>::computed = true;