re PR c++/28991 (Static constructor emitted instead of initialized variable)
PR c++/28991 * cp-objcp-common.c (cxx_staticp): New function. * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it. * cp-tree.h (cxx_staticp): New function. PR c++/289991 * g++.dg/init/static3.C: New test. From-SVN: r116838
This commit is contained in:
parent
d35763beea
commit
bc70af526c
@ -1,3 +1,10 @@
|
||||
2006-09-10 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28991
|
||||
* cp-objcp-common.c (cxx_staticp): New function.
|
||||
* cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
|
||||
* cp-tree.h (cxx_staticp): New function.
|
||||
|
||||
2006-09-09 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/28996
|
||||
|
@ -185,6 +185,21 @@ cxx_types_compatible_p (tree x, tree y)
|
||||
return 0;
|
||||
}
|
||||
|
||||
tree
|
||||
cxx_staticp (tree arg)
|
||||
{
|
||||
switch (TREE_CODE (arg))
|
||||
{
|
||||
case BASELINK:
|
||||
return staticp (BASELINK_FUNCTIONS (arg));
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return NULL_TREE;
|
||||
}
|
||||
|
||||
/* Stubs to keep c-opts.c happy. */
|
||||
void
|
||||
push_file_scope (void)
|
||||
|
@ -59,6 +59,8 @@ extern tree objcp_tsubst_copy_and_build (tree, tree, tsubst_flags_t,
|
||||
#define LANG_HOOKS_EXPAND_DECL c_expand_decl
|
||||
#undef LANG_HOOKS_PARSE_FILE
|
||||
#define LANG_HOOKS_PARSE_FILE c_common_parse_file
|
||||
#undef LANG_HOOKS_STATICP
|
||||
#define LANG_HOOKS_STATICP cxx_staticp
|
||||
#undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
|
||||
#define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL cxx_dup_lang_specific_decl
|
||||
#undef LANG_HOOKS_SET_DECL_ASSEMBLER_NAME
|
||||
|
@ -4519,6 +4519,7 @@ extern bool cp_var_mod_type_p (tree, tree);
|
||||
extern void cxx_initialize_diagnostics (struct diagnostic_context *);
|
||||
extern int cxx_types_compatible_p (tree, tree);
|
||||
extern void init_shadowed_var_for_decl (void);
|
||||
extern tree cxx_staticp (tree);
|
||||
|
||||
/* in cp-gimplify.c */
|
||||
extern int cp_gimplify_expr (tree *, tree *, tree *);
|
||||
|
@ -1,3 +1,8 @@
|
||||
2006-09-10 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/28991
|
||||
* g++.dg/init/static3.C: New test.
|
||||
|
||||
2006-09-10 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR testsuite/29007
|
||||
|
26
gcc/testsuite/g++.dg/init/static3.C
Normal file
26
gcc/testsuite/g++.dg/init/static3.C
Normal file
@ -0,0 +1,26 @@
|
||||
// { dg-do run }
|
||||
|
||||
struct T
|
||||
{
|
||||
static void (*handler)();
|
||||
static void func() {};
|
||||
};
|
||||
|
||||
bool fail;
|
||||
|
||||
struct S {
|
||||
S() {
|
||||
if (T::handler != T::func)
|
||||
fail = true;
|
||||
}
|
||||
};
|
||||
|
||||
static S s;
|
||||
|
||||
void (*T::handler)() = func;
|
||||
|
||||
int main()
|
||||
{
|
||||
if (fail)
|
||||
return 1;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user