aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-operands.c
diff options
context:
space:
mode:
authorDiego Novillo <dnovillo@redhat.com>2004-07-13 20:51:02 +0000
committerDiego Novillo <dnovillo@gcc.gnu.org>2004-07-13 16:51:02 -0400
commitee536902d67e3c2a3f7d54676b4099d7ac6ab797 (patch)
tree14edb8d9ecca028be755be83d160d4682c605332 /gcc/tree-ssa-operands.c
parenta65ab5245668b0e3239f18f4361faa07177a3d3c (diff)
downloadgcc-ee536902d67e3c2a3f7d54676b4099d7ac6ab797.zip
gcc-ee536902d67e3c2a3f7d54676b4099d7ac6ab797.tar.gz
gcc-ee536902d67e3c2a3f7d54676b4099d7ac6ab797.tar.bz2
re PR tree-optimization/16443 (ICE during linux kernel compilation)
PR tree-optimization/16443 * tree-ssa-alias.c: Add more description for CALL_CLOBBERED_VARS and ADDRESSABLE_VARS. * tree-ssa-operands.c (get_asm_expr_operands): Re-order the clobbering of call-clobbered and addressable variables. If there are any before aliases have been computed, add them. testsuite/ChangeLog PR tree-optimization/16443 * gcc.dg/tree-ssa/20040713-1.c: New test. From-SVN: r84641
Diffstat (limited to 'gcc/tree-ssa-operands.c')
-rw-r--r--gcc/tree-ssa-operands.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c
index 90b9d02..b9c5a6c 100644
--- a/gcc/tree-ssa-operands.c
+++ b/gcc/tree-ssa-operands.c
@@ -1231,16 +1231,6 @@ get_asm_expr_operands (tree stmt, voperands_t prev_vops)
{
size_t i;
- /* If we still have not computed aliasing information, we
- won't know what variables are call-clobbered and/or
- addressable. Just mark the statement as having volatile
- operands for now. */
- if (!aliases_computed_p)
- {
- stmt_ann (stmt)->has_volatile_ops = true;
- break;
- }
-
/* Clobber all call-clobbered variables (or .GLOBAL_VAR if we
decided to group them). */
if (global_var)
@@ -1259,6 +1249,13 @@ get_asm_expr_operands (tree stmt, voperands_t prev_vops)
add_stmt_operand (&var, stmt, opf_is_def, prev_vops);
});
+ /* If we don't have call-clobbered nor addressable vars and we
+ still have not computed aliasing information, just mark the
+ statement as having volatile operands. If the alias pass
+ finds some, we will add them at that point. */
+ if (!aliases_computed_p)
+ stmt_ann (stmt)->has_volatile_ops = true;
+
break;
}
}