diff options
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r-- | gcc/tree-sra.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 6f784ee..cbebb81 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -3302,7 +3302,8 @@ ptr_parm_has_direct_uses (tree parm) && TREE_OPERAND (lhs, 0) == name && integer_zerop (TREE_OPERAND (lhs, 1)) && types_compatible_p (TREE_TYPE (lhs), - TREE_TYPE (TREE_TYPE (name)))) + TREE_TYPE (TREE_TYPE (name))) + && !TREE_THIS_VOLATILE (lhs)) uses_ok++; } if (gimple_assign_single_p (stmt)) @@ -3314,7 +3315,8 @@ ptr_parm_has_direct_uses (tree parm) && TREE_OPERAND (rhs, 0) == name && integer_zerop (TREE_OPERAND (rhs, 1)) && types_compatible_p (TREE_TYPE (rhs), - TREE_TYPE (TREE_TYPE (name)))) + TREE_TYPE (TREE_TYPE (name))) + && !TREE_THIS_VOLATILE (rhs)) uses_ok++; } else if (is_gimple_call (stmt)) @@ -3329,7 +3331,8 @@ ptr_parm_has_direct_uses (tree parm) && TREE_OPERAND (arg, 0) == name && integer_zerop (TREE_OPERAND (arg, 1)) && types_compatible_p (TREE_TYPE (arg), - TREE_TYPE (TREE_TYPE (name)))) + TREE_TYPE (TREE_TYPE (name))) + && !TREE_THIS_VOLATILE (arg)) uses_ok++; } } |