Commit 5525ed38 by Jakub Jelinek Committed by Jakub Jelinek

re PR lto/60404 (wrong code by LTO on x86_64-linux-gnu)

	PR lto/60404
	* cfgexpand.c (expand_used_vars): Do not assume all SSA_NAMEs
	of PARM/RESULT_DECLs must be coalesced with optimize && in_lto_p.
	* tree-ssa-coalesce.c (coalesce_ssa_name): Use MUST_COALESCE_COST - 1
	cost for in_lto_p.

	* gcc.dg/lto/pr60404_0.c: New test.
	* gcc.dg/lto/pr60404_1.c: New file.
	* gcc.dg/lto/pr60404_2.c: New file.

From-SVN: r208340
parent 7af9985b
2014-03-05 Jakub Jelinek <jakub@redhat.com>
PR lto/60404
* cfgexpand.c (expand_used_vars): Do not assume all SSA_NAMEs
of PARM/RESULT_DECLs must be coalesced with optimize && in_lto_p.
* tree-ssa-coalesce.c (coalesce_ssa_name): Use MUST_COALESCE_COST - 1
cost for in_lto_p.
2014-03-04 Heiher <r@hev.cc> 2014-03-04 Heiher <r@hev.cc>
* config/mips/mips-cpus.def (loongson3a): Mark as a MIPS64r2 processor. * config/mips/mips-cpus.def (loongson3a): Mark as a MIPS64r2 processor.
......
...@@ -1652,10 +1652,12 @@ expand_used_vars (void) ...@@ -1652,10 +1652,12 @@ expand_used_vars (void)
debug info, there is no need to do so if optimization is disabled debug info, there is no need to do so if optimization is disabled
because all the SSA_NAMEs based on these DECLs have been coalesced because all the SSA_NAMEs based on these DECLs have been coalesced
into a single partition, which is thus assigned the canonical RTL into a single partition, which is thus assigned the canonical RTL
location of the DECLs. */ location of the DECLs. If in_lto_p, we can't rely on optimize,
a function could be compiled with -O1 -flto first and only the
link performed at -O0. */
if (TREE_CODE (SSA_NAME_VAR (var)) == VAR_DECL) if (TREE_CODE (SSA_NAME_VAR (var)) == VAR_DECL)
expand_one_var (var, true, true); expand_one_var (var, true, true);
else if (DECL_IGNORED_P (SSA_NAME_VAR (var)) || optimize) else if (DECL_IGNORED_P (SSA_NAME_VAR (var)) || optimize || in_lto_p)
{ {
/* This is a PARM_DECL or RESULT_DECL. For those partitions that /* This is a PARM_DECL or RESULT_DECL. For those partitions that
contain the default def (representing the parm or result itself) contain the default def (representing the parm or result itself)
......
2014-03-05 Jakub Jelinek <jakub@redhat.com>
PR lto/60404
* gcc.dg/lto/pr60404_0.c: New test.
* gcc.dg/lto/pr60404_1.c: New file.
* gcc.dg/lto/pr60404_2.c: New file.
2014-03-04 Bill Schmidt <wschmidt@linux.vnet.ibm.com> 2014-03-04 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.dg/vmx/extract-vsx.c: Replace "vector long" with "vector * gcc.dg/vmx/extract-vsx.c: Replace "vector long" with "vector
......
/* { dg-lto-do run } */
/* { dg-lto-options { { -O1 -flto } } } */
/* { dg-extra-ld-options { -O0 } } */
extern void fn2 (int);
int a[1], b;
int
main ()
{
fn2 (0);
if (b != 0 || a[b] != 0)
__builtin_abort ();
return 0;
}
extern int b;
extern void fn1 (int);
void
fn2 (int p)
{
b = p++;
fn1 (p);
}
...@@ -1289,9 +1289,12 @@ coalesce_ssa_name (void) ...@@ -1289,9 +1289,12 @@ coalesce_ssa_name (void)
_require_ that all the names originating from it be _require_ that all the names originating from it be
coalesced, because there must be a single partition coalesced, because there must be a single partition
containing all the names so that it can be assigned containing all the names so that it can be assigned
the canonical RTL location of the DECL safely. */ the canonical RTL location of the DECL safely.
If in_lto_p, a function could have been compiled
originally with optimizations and only the link
performed at -O0, so we can't actually require it. */
const int cost const int cost
= TREE_CODE (SSA_NAME_VAR (a)) == VAR_DECL = (TREE_CODE (SSA_NAME_VAR (a)) == VAR_DECL || in_lto_p)
? MUST_COALESCE_COST - 1 : MUST_COALESCE_COST; ? MUST_COALESCE_COST - 1 : MUST_COALESCE_COST;
add_coalesce (cl, SSA_NAME_VERSION (a), add_coalesce (cl, SSA_NAME_VERSION (a),
SSA_NAME_VERSION (*slot), cost); SSA_NAME_VERSION (*slot), cost);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment