ipa-chkp.c (chkp_maybe_create_clone): Create alias reference when cloning alias node.
gcc/ * ipa-chkp.c (chkp_maybe_create_clone): Create alias reference when cloning alias node. gcc/testsuite/ * gcc.dg/lto/chkp-removed-alias_0.c: New. From-SVN: r224074
This commit is contained in:
parent
b2b43e3329
commit
67321dcf21
@ -1,3 +1,8 @@
|
||||
2015-06-03 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||
|
||||
* ipa-chkp.c (chkp_maybe_create_clone): Create alias
|
||||
reference when cloning alias node.
|
||||
|
||||
2015-06-03 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* alloc-pool.h (struct pool_usage): Correct space padding.
|
||||
|
||||
@ -616,12 +616,7 @@ chkp_maybe_create_clone (tree fndecl)
|
||||
|
||||
/* Clone all aliases. */
|
||||
for (i = 0; node->iterate_direct_aliases (i, ref); i++)
|
||||
{
|
||||
struct cgraph_node *alias = dyn_cast <cgraph_node *> (ref->referring);
|
||||
struct cgraph_node *chkp_alias
|
||||
= chkp_maybe_create_clone (alias->decl);
|
||||
chkp_alias->create_reference (clone, IPA_REF_ALIAS, NULL);
|
||||
}
|
||||
chkp_maybe_create_clone (ref->referring->decl);
|
||||
|
||||
/* Clone all thunks. */
|
||||
for (e = node->callers; e; e = e->next_caller)
|
||||
@ -645,7 +640,10 @@ chkp_maybe_create_clone (tree fndecl)
|
||||
|
||||
ref = node->ref_list.first_reference ();
|
||||
if (ref)
|
||||
chkp_maybe_create_clone (ref->referred->decl);
|
||||
{
|
||||
target = chkp_maybe_create_clone (ref->referred->decl);
|
||||
clone->create_reference (target, IPA_REF_ALIAS);
|
||||
}
|
||||
|
||||
if (node->alias_target)
|
||||
{
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
2015-06-03 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||
|
||||
* gcc.dg/lto/chkp-removed-alias_0.c: New.
|
||||
|
||||
2015-06-03 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||
|
||||
* gcc.dg/lto/chkp-privatize-1_0.c: New.
|
||||
|
||||
28
gcc/testsuite/gcc.dg/lto/chkp-removed-alias_0.c
Normal file
28
gcc/testsuite/gcc.dg/lto/chkp-removed-alias_0.c
Normal file
@ -0,0 +1,28 @@
|
||||
/* { dg-lto-do link } */
|
||||
/* { dg-require-effective-target mpx } */
|
||||
/* { dg-lto-options { { -O2 -flto -flto-partition=max -fcheck-pointer-bounds -mmpx } } } */
|
||||
|
||||
int test1 (const char *c)
|
||||
{
|
||||
return c[0] * 2;
|
||||
}
|
||||
|
||||
int test2 (const char *c)
|
||||
{
|
||||
return c[1] * 3;
|
||||
}
|
||||
|
||||
int test1_alias (const char *c) __attribute__ ((alias ("test1")));
|
||||
int test2_alias (const char *c) __attribute__ ((alias ("test2")));
|
||||
|
||||
struct S
|
||||
{
|
||||
int (*fnptr[2]) (const char *);
|
||||
} S;
|
||||
|
||||
struct S s = {test1_alias, test2_alias};
|
||||
|
||||
int main (int argc, const char **argv)
|
||||
{
|
||||
return s.fnptr[argc] (argv[0]);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user