From 1e34298419a620070cd4098c0a48eec4b6066ea9 Mon Sep 17 00:00:00 2001 From: jakub Date: Sat, 6 Dec 2008 21:06:43 +0000 Subject: [PATCH] PR middle-end/38428 * tree-ssa-operands.c (get_expr_operands) : Set gimple_set_has_volatile_ops if the BIT_FIELD_REF is volatile. * gcc.c-torture/compile/pr38428.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@142527 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gcc.c-torture/compile/pr38428.c | 20 ++++++++++++++++++++ gcc/tree-ssa-operands.c | 4 ++++ 4 files changed, 33 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr38428.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 984e8ba..2f6ea17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-12-06 Jakub Jelinek + + PR middle-end/38428 + * tree-ssa-operands.c (get_expr_operands) : Set + gimple_set_has_volatile_ops if the BIT_FIELD_REF is volatile. + 2008-12-07 Ben Elliston * gthr-single.h (__gthread_once): Adjust prototype to match all diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bf19792..2e6c2da 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2008-12-06 Jakub Jelinek + PR middle-end/38428 + * gcc.c-torture/compile/pr38428.c: New test. + PR middle-end/38422 * gcc.c-torture/execute/pr38422.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr38428.c b/gcc/testsuite/gcc.c-torture/compile/pr38428.c new file mode 100644 index 0000000..aa32fc1 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr38428.c @@ -0,0 +1,20 @@ +/* PR middle-end/38428 */ + +struct S +{ + volatile struct + { + unsigned int t : 1; + } s; +}; + +int +foo (struct S *x) +{ + int ret; + if (x->s.t) + ret = 0; + else + ret = 10; + return ret; +} diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 9624188..85a0a08 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -2010,6 +2010,10 @@ get_expr_operands (gimple stmt, tree *expr_p, int flags) } case BIT_FIELD_REF: + if (TREE_THIS_VOLATILE (expr)) + gimple_set_has_volatile_ops (stmt, true); + /* FALLTHRU */ + case TRUTH_NOT_EXPR: case VIEW_CONVERT_EXPR: do_unary: -- 2.7.4