diff options
author | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-06-04 05:52:03 +0000 |
---|---|---|
committer | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-06-04 05:52:03 +0000 |
commit | ee093c13ff4f658246f1d740c165c3209617ac63 (patch) | |
tree | 64e4783b15e2bc0c0bdebb492b442e74a5a7df4d /gcc/tree-ssa-live.c | |
parent | 1e03a59bc9d1424ede4774c8a45f601d4226ac31 (diff) | |
download | gcc-ee093c13ff4f658246f1d740c165c3209617ac63.tar.gz |
* tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
that have value exprs.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148161 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-live.c')
-rw-r--r-- | gcc/tree-ssa-live.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index a02b1c5209f..c7366ff95dc 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -435,6 +435,17 @@ remove_unused_scope_block_p (tree scope) will be output to file. */ if (TREE_CODE (*t) == FUNCTION_DECL) unused = false; + + /* If a decl has a value expr, we need to instantiate it + regardless of debug info generation, to avoid codegen + differences in memory overlap tests. update_equiv_regs() may + indirectly call validate_equiv_mem() to test whether a + SET_DEST overlaps with others, and if the value expr changes + by virtual register instantiation, we may get end up with + different results. */ + else if (TREE_CODE (*t) == VAR_DECL && DECL_HAS_VALUE_EXPR_P (*t)) + unused = false; + /* Remove everything we don't generate debug info for. */ else if (DECL_IGNORED_P (*t)) { |