diff options
author | Richard Biener <rguenther@suse.de> | 2013-03-08 08:45:29 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-03-08 08:45:29 +0000 |
commit | b7aa4e9afcd3da4f09d6f982a663ea2094b1f2cf (patch) | |
tree | fc0ee6fbbcd767258261ffb472ddeebea39ea772 /gcc/tree-ssa-ter.c | |
parent | c78f387a45b6832a56d7ecadfa47d0d54b3d8b7d (diff) | |
download | gcc-b7aa4e9afcd3da4f09d6f982a663ea2094b1f2cf.zip gcc-b7aa4e9afcd3da4f09d6f982a663ea2094b1f2cf.tar.gz gcc-b7aa4e9afcd3da4f09d6f982a663ea2094b1f2cf.tar.bz2 |
tree-ssa-ter.c (is_replaceable_p): Do not TER across location or block changes with -Og.
2013-03-08 Richard Biener <rguenther@suse.de>
* tree-ssa-ter.c (is_replaceable_p): Do not TER across location
or block changes with -Og. Fix for location / block encoding
changes and PHI arguments with locations.
From-SVN: r196539
Diffstat (limited to 'gcc/tree-ssa-ter.c')
-rw-r--r-- | gcc/tree-ssa-ter.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/gcc/tree-ssa-ter.c b/gcc/tree-ssa-ter.c index b091d78..2a2e143 100644 --- a/gcc/tree-ssa-ter.c +++ b/gcc/tree-ssa-ter.c @@ -399,22 +399,22 @@ is_replaceable_p (gimple stmt, bool ter) return false; locus1 = gimple_location (stmt); - block1 = gimple_block (stmt); + block1 = LOCATION_BLOCK (locus1); + locus1 = LOCATION_LOCUS (locus1); if (gimple_code (use_stmt) == GIMPLE_PHI) - { - locus2 = 0; - block2 = NULL_TREE; - } + locus2 = gimple_phi_arg_location (use_stmt, PHI_ARG_INDEX_FROM_USE (use_p)); else - { - locus2 = gimple_location (use_stmt); - block2 = gimple_block (use_stmt); - } + locus2 = gimple_location (use_stmt); + block2 = LOCATION_BLOCK (locus2); + locus2 = LOCATION_LOCUS (locus2); - if (!optimize + if ((!optimize || optimize_debug) && ter - && ((locus1 && locus1 != locus2) || (block1 && block1 != block2))) + && ((locus1 != UNKNOWN_LOCATION + && locus1 != locus2) + || (block1 != NULL_TREE + && block1 != block2))) return false; /* Used in this block, but at the TOP of the block, not the end. */ |