From 71671f5d5259f40720b0636625b1edd11fb11f18 Mon Sep 17 00:00:00 2001 From: Ilya Enkovich Date: Mon, 6 Apr 2015 10:41:55 +0000 Subject: [PATCH] ipa-chkp.c (chkp_maybe_create_clone): Reset cdtor flags for instrumentation thunk. gcc/ * ipa-chkp.c (chkp_maybe_create_clone): Reset cdtor flags for instrumentation thunk. (chkp_produce_thunks): Likewise. gcc/testsuite/ * gcc.dg/lto/chkp-ctor-merge_0.c: New. From-SVN: r221877 --- gcc/ChangeLog | 6 +++++ gcc/ipa-chkp.c | 6 +++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/lto/chkp-ctor-merge_0.c | 23 ++++++++++++++++++++ 4 files changed, 39 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/lto/chkp-ctor-merge_0.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f9cb04c39b4..847c53220b9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-04-06 Ilya Enkovich + + * ipa-chkp.c (chkp_maybe_create_clone): Reset cdtor + flags for instrumentation thunk. + (chkp_produce_thunks): Likewise. + 2015-04-05 Martin Liska PR ipa/65665 diff --git a/gcc/ipa-chkp.c b/gcc/ipa-chkp.c index 3218d42330e..03abab5641a 100644 --- a/gcc/ipa-chkp.c +++ b/gcc/ipa-chkp.c @@ -550,6 +550,9 @@ chkp_maybe_create_clone (tree fndecl) clone->thunk.thunk_p = true; clone->thunk.add_pointer_bounds_args = true; clone->create_edge (node, NULL, 0, CGRAPH_FREQ_BASE); + /* Thunk shouldn't be a cdtor. */ + DECL_STATIC_CONSTRUCTOR (clone->decl) = 0; + DECL_STATIC_DESTRUCTOR (clone->decl) = 0; } else { @@ -714,6 +717,9 @@ chkp_produce_thunks (bool early) 0, CGRAPH_FREQ_BASE); node->create_reference (node->instrumented_version, IPA_REF_CHKP, NULL); + /* Thunk shouldn't be a cdtor. */ + DECL_STATIC_CONSTRUCTOR (node->decl) = 0; + DECL_STATIC_DESTRUCTOR (node->decl) = 0; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bb7d971c96e..9849363b5c3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-04-06 Ilya Enkovich + + * gcc.dg/lto/chkp-ctor-merge_0.c: New. + 2015-04-04 Vladimir Makarov PR target/65647 diff --git a/gcc/testsuite/gcc.dg/lto/chkp-ctor-merge_0.c b/gcc/testsuite/gcc.dg/lto/chkp-ctor-merge_0.c new file mode 100644 index 00000000000..ac4095bf012 --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/chkp-ctor-merge_0.c @@ -0,0 +1,23 @@ +/* { dg-lto-do run } */ +/* { dg-require-effective-target mpx } */ +/* { dg-lto-options { { -O2 -flto -fcheck-pointer-bounds -mmpx -nodefaultlibs -lc } } } */ + +int glob = 1; + +void __attribute__((constructor)) +ctor1 () +{ + glob += 1; +} + + +void __attribute__((constructor)) +ctor2 () +{ + glob -= 2; +} + +int main (int argc, const char **argv) +{ + return glob; +} -- 2.30.2