diff options
author | Diego Novillo <dnovillo@redhat.com> | 2004-07-13 20:51:02 +0000 |
---|---|---|
committer | Diego Novillo <dnovillo@gcc.gnu.org> | 2004-07-13 16:51:02 -0400 |
commit | ee536902d67e3c2a3f7d54676b4099d7ac6ab797 (patch) | |
tree | 14edb8d9ecca028be755be83d160d4682c605332 /gcc/tree-ssa-operands.c | |
parent | a65ab5245668b0e3239f18f4361faa07177a3d3c (diff) | |
download | gcc-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.c | 17 |
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; } } |