re PR lto/54625 (lto/profiledbootstrap broken by r191466: ICE: in cgraph_clone_edge, at cgraphclones.c:123)
2012-09-25 Richard Guenther <rguenther@suse.de> PR lto/54625 * lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Do not merge cgraph nodes for builtins. * gcc.dg/lto/pr54702_0.c: New testcase. * gcc.dg/lto/pr54702_1.c: Likewise. * gcc.dg/lto/pr54625-1_0.c: Likewise. * gcc.dg/lto/pr54625-1_1.C: Likewise. * gcc.dg/lto/pr54625-2_0.c: Likewise. * gcc.dg/lto/pr54625-2_1.C: Likewise. From-SVN: r191713
This commit is contained in:
parent
5677bc1fe9
commit
7e17f52deb
9 changed files with 106 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2012-09-25 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/54625
|
||||
* lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Do not merge
|
||||
cgraph nodes for builtins.
|
||||
|
||||
2012-09-25 Dehao Chen <dehao@google.com>
|
||||
|
||||
PR middle-end/54645
|
||||
|
|
|
@ -629,7 +629,8 @@ lto_symtab_merge_cgraph_nodes_1 (symtab_node prevailing)
|
|||
|
||||
if (!symtab_real_symbol_p (e))
|
||||
continue;
|
||||
if (symtab_function_p (e))
|
||||
if (symtab_function_p (e)
|
||||
&& !DECL_BUILT_IN (e->symbol.decl))
|
||||
lto_cgraph_replace_node (cgraph (e), cgraph (prevailing));
|
||||
if (symtab_variable_p (e))
|
||||
lto_varpool_replace_node (varpool (e), varpool (prevailing));
|
||||
|
|
|
@ -1,3 +1,13 @@
|
|||
2012-09-25 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/54625
|
||||
* gcc.dg/lto/pr54702_0.c: New testcase.
|
||||
* gcc.dg/lto/pr54702_1.c: Likewise.
|
||||
* gcc.dg/lto/pr54625-1_0.c: Likewise.
|
||||
* gcc.dg/lto/pr54625-1_1.C: Likewise.
|
||||
* gcc.dg/lto/pr54625-2_0.c: Likewise.
|
||||
* gcc.dg/lto/pr54625-2_1.C: Likewise.
|
||||
|
||||
2012-09-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/54526
|
||||
|
|
10
gcc/testsuite/gcc.dg/lto/pr54625-1_0.c
Normal file
10
gcc/testsuite/gcc.dg/lto/pr54625-1_0.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
/* { dg-lto-do link } */
|
||||
/* { dg-extra-ld-options { -r -nostdlib } } */
|
||||
|
||||
float a;
|
||||
double sin ();
|
||||
speex_resampler_init_frac ()
|
||||
{
|
||||
a = sin (0);
|
||||
}
|
||||
|
19
gcc/testsuite/gcc.dg/lto/pr54625-1_1.C
Normal file
19
gcc/testsuite/gcc.dg/lto/pr54625-1_1.C
Normal file
|
@ -0,0 +1,19 @@
|
|||
extern "C" double sin (double);
|
||||
typedef double UnaryFunType (double);
|
||||
class A
|
||||
{
|
||||
public:
|
||||
int hash ();
|
||||
double lookup (UnaryFunType p1)
|
||||
{
|
||||
int a = hash ();
|
||||
if (p1)
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
A b;
|
||||
void
|
||||
math_sin_impl ()
|
||||
{
|
||||
b.lookup (sin);
|
||||
}
|
9
gcc/testsuite/gcc.dg/lto/pr54625-2_0.c
Normal file
9
gcc/testsuite/gcc.dg/lto/pr54625-2_0.c
Normal file
|
@ -0,0 +1,9 @@
|
|||
/* { dg-lto-do link } */
|
||||
/* { dg-extra-ld-options { -r -nostdlib } } */
|
||||
|
||||
float a;
|
||||
double sin ();
|
||||
update_filter ()
|
||||
{
|
||||
a = sin (0);
|
||||
}
|
24
gcc/testsuite/gcc.dg/lto/pr54625-2_1.C
Normal file
24
gcc/testsuite/gcc.dg/lto/pr54625-2_1.C
Normal file
|
@ -0,0 +1,24 @@
|
|||
extern "C" double sin (double);
|
||||
typedef double (*UnaryFunType) (double);
|
||||
class A
|
||||
{
|
||||
public:
|
||||
int hash ();
|
||||
void lookup (UnaryFunType p1)
|
||||
{
|
||||
int a = hash ();
|
||||
p1 (0);
|
||||
}
|
||||
};
|
||||
A b, c;
|
||||
void
|
||||
math_sin_impl ()
|
||||
{
|
||||
b.lookup (sin);
|
||||
}
|
||||
|
||||
void
|
||||
js_math_sqrt ()
|
||||
{
|
||||
c.lookup (0);
|
||||
}
|
10
gcc/testsuite/gcc.dg/lto/pr54702_0.c
Normal file
10
gcc/testsuite/gcc.dg/lto/pr54702_0.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
/* { dg-lto-do link } */
|
||||
/* { dg-lto-options { { -O2 -flto -w } } } */
|
||||
/* { dg-extra-ld-options { -r -nostdlib } } */
|
||||
|
||||
#include <stdlib.h>
|
||||
void* f ()
|
||||
{
|
||||
void* p = malloc (1);
|
||||
return p;
|
||||
}
|
16
gcc/testsuite/gcc.dg/lto/pr54702_1.c
Normal file
16
gcc/testsuite/gcc.dg/lto/pr54702_1.c
Normal file
|
@ -0,0 +1,16 @@
|
|||
int *b;
|
||||
void *d;
|
||||
int c;
|
||||
static int *f1 ();
|
||||
void f2 ()
|
||||
{
|
||||
int *a = f1 (0);
|
||||
}
|
||||
|
||||
int *f1 (j)
|
||||
{
|
||||
b = malloc (0);
|
||||
d = *malloc;
|
||||
c = j;
|
||||
}
|
||||
|
Loading…
Add table
Reference in a new issue