diff options
Diffstat (limited to 'gcc/tree-ssa-operands.c')
-rw-r--r-- | gcc/tree-ssa-operands.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 34c0992..98b4766 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -896,7 +896,8 @@ parse_ssa_operands (tree stmt) if (TREE_CODE (lhs) == VIEW_CONVERT_EXPR) lhs = TREE_OPERAND (lhs, 0); - if (TREE_CODE (lhs) != ARRAY_REF && TREE_CODE (lhs) != ARRAY_RANGE_REF + if (TREE_CODE (lhs) != ARRAY_REF + && TREE_CODE (lhs) != ARRAY_RANGE_REF && TREE_CODE (lhs) != BIT_FIELD_REF && TREE_CODE (lhs) != REALPART_EXPR && TREE_CODE (lhs) != IMAGPART_EXPR) @@ -1325,9 +1326,10 @@ get_expr_operands (tree stmt, tree *expr_p, int flags) bool exact; if (overlap_subvar (offset, size, sv, &exact)) { + bool subvar_flags = flags; if (!exact) - flags &= ~opf_kill_def; - add_stmt_operand (&sv->var, s_ann, flags); + subvar_flags &= ~opf_kill_def; + add_stmt_operand (&sv->var, s_ann, subvar_flags); } } } |