From 305a132148b9ced8ec6a6cf33a3d4635729fde9d Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Fri, 24 Jun 2005 03:38:05 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/tree-ssa-operands.c | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f178518aa81..a8a5231d0a8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-06-23 Mark Mitchell + + PR 22000 + * tree-ssa-operands.c (get_expr_operands): Check the volatility of + the FIELD_DECL and set s_ann->has_volatile_ops accordingly. + 2005-06-24 Jan Hubicka * opts.c (decode_options): Enable unit-at-a-time by default at -O1. diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 12bfc780bd3..2e263cfa1b3 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: