aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-operands.c
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2005-06-24 03:38:05 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2005-06-24 03:38:05 +0000
commit305a132148b9ced8ec6a6cf33a3d4635729fde9d (patch)
tree5f35b0ac794937a9cfc60ea88d3484d5cc3b6fb2 /gcc/tree-ssa-operands.c
parenta3504e64abf8db7b538c95d5a10890c21c22b28f (diff)
downloadgcc-305a132148b9ced8ec6a6cf33a3d4635729fde9d.zip
gcc-305a132148b9ced8ec6a6cf33a3d4635729fde9d.tar.gz
gcc-305a132148b9ced8ec6a6cf33a3d4635729fde9d.tar.bz2
re PR tree-optimization/22000 (Read from volatile member of struct is optimized away)
PR 22000 * tree-ssa-operands.c (get_expr_operands): Check the volatility of the FIELD_DECL and set s_ann->has_volatile_ops accordingly. From-SVN: r101289
Diffstat (limited to 'gcc/tree-ssa-operands.c')
-rw-r--r--gcc/tree-ssa-operands.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c
index 12bfc78..2e263cf 100644
--- a/gcc/tree-ssa-operands.c
+++ b/gcc/tree-ssa-operands.c
@@ -1346,7 +1346,11 @@ get_expr_operands (tree stmt, tree *expr_p, int flags)
flags & ~opf_kill_def);
if (code == COMPONENT_REF)
- get_expr_operands (stmt, &TREE_OPERAND (expr, 2), opf_none);
+ {
+ if (TREE_THIS_VOLATILE (TREE_OPERAND (expr, 1)))
+ s_ann->has_volatile_ops = true;
+ get_expr_operands (stmt, &TREE_OPERAND (expr, 2), opf_none);
+ }
return;
}
case WITH_SIZE_EXPR: