On 07 Apr 22:37, Jan Hubicka wrote: > > OK, thanks! > Please put the comment about inline clones just before the global.inlined_to > test > and make the comment about thunks separate. > Probably "Thunks can not call across section boundary" > > Honza
Here is a committed variant. Thanks, Ilya -- gcc/ 2015-04-08 Ilya Enkovich <ilya.enkov...@intel.com> * ipa-comdats.c (propagate_comdat_group): Walk through thunks. gcc/testsuite/ 2015-04-08 Ilya Enkovich <ilya.enkov...@intel.com> * gcc.target/i386/mpx/chkp-thunk-comdat-3.c: New. diff --git a/gcc/ipa-comdats.c b/gcc/ipa-comdats.c index f349f9f..4298b9b 100644 --- a/gcc/ipa-comdats.c +++ b/gcc/ipa-comdats.c @@ -142,12 +142,14 @@ propagate_comdat_group (struct symtab_node *symbol, { struct symtab_node *symbol2 = edge->caller; - /* If we see inline clone, its comdat group actually - corresponds to the comdat group of the function it is inlined - to. */ - if (cgraph_node * cn = dyn_cast <cgraph_node *> (symbol2)) { + /* Thunks can not call across section boundary. */ + if (cn->thunk.thunk_p) + newgroup = propagate_comdat_group (symbol2, newgroup, map); + /* If we see inline clone, its comdat group actually + corresponds to the comdat group of the function it + is inlined to. */ if (cn->global.inlined_to) symbol2 = cn->global.inlined_to; } diff --git a/gcc/testsuite/gcc.target/i386/mpx/chkp-thunk-comdat-3.c b/gcc/testsuite/gcc.target/i386/mpx/chkp-thunk-comdat-3.c new file mode 100644 index 0000000..dd0057e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/mpx/chkp-thunk-comdat-3.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-fcheck-pointer-bounds -mmpx -O -fvisibility=hidden" } */ + +int val; + +static int __attribute__((noinline)) +test1 () +{ + return val; +} + +static int __attribute__((bnd_legacy,noinline)) +test2 () +{ + return test1 (); +} + +int +test3 (void) +{ + return test2 (); +} +