summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-coalesce.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2014-03-05 08:46:31 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2014-03-05 08:46:31 +0000
commit45ddd4eb9a7c2a1cbabb2b80833bb19fa2771466 (patch)
treed9e72aff796794255618b803a9b18bc740312cc7 /gcc/tree-ssa-coalesce.c
parentd972c25f20749715a5923a3a514c0be44c575854 (diff)
downloadgcc-45ddd4eb9a7c2a1cbabb2b80833bb19fa2771466.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@208340 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-coalesce.c')
-rw-r--r--gcc/tree-ssa-coalesce.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c
index 86276b361a6..9a1ac67bf77 100644
--- a/gcc/tree-ssa-coalesce.c
+++ b/gcc/tree-ssa-coalesce.c
@@ -1289,9 +1289,12 @@ coalesce_ssa_name (void)
_require_ that all the names originating from it be
coalesced, because there must be a single partition
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
- = 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;
add_coalesce (cl, SSA_NAME_VERSION (a),
SSA_NAME_VERSION (*slot), cost);