diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2009-02-08 23:10:00 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2009-02-08 23:10:00 +0000 |
commit | 9a58d4d27c50e04b08d5e5d9f39da489403f0987 (patch) | |
tree | 6a2ee53b314ca031061181f3fc11e2218d380be3 /gcc/tree-ssa-loop-ivopts.c | |
parent | ede965edbc14b64b34ed2e2f71164f151c3bf191 (diff) | |
download | gcc-9a58d4d27c50e04b08d5e5d9f39da489403f0987.zip gcc-9a58d4d27c50e04b08d5e5d9f39da489403f0987.tar.gz gcc-9a58d4d27c50e04b08d5e5d9f39da489403f0987.tar.bz2 |
tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Make case self-contained.
* tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
Make case self-contained.
<ARRAY_REF>: Test TYPE_NONALIASED_COMPONENT flag.
ada/
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_String_Literal_Subtype>:
Set TYPE_NONALIASED_COMPONENT on the array type.
From-SVN: r144021
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index ca1ab98..a1f5c47 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -1562,15 +1562,14 @@ may_be_nonaddressable_p (tree expr) and make them look addressable. After some processing the non-addressability may be uncovered again, causing ADDR_EXPRs of inappropriate objects to be built. */ - if (is_gimple_reg (TREE_OPERAND (expr, 0)) - || !is_gimple_addressable (TREE_OPERAND (expr, 0))) - return true; - - /* ... fall through ... */ + return is_gimple_reg (TREE_OPERAND (expr, 0)) + || !is_gimple_addressable (TREE_OPERAND (expr, 0)) + || may_be_nonaddressable_p (TREE_OPERAND (expr, 0)); case ARRAY_REF: case ARRAY_RANGE_REF: - return may_be_nonaddressable_p (TREE_OPERAND (expr, 0)); + return TYPE_NONALIASED_COMPONENT (TREE_TYPE (TREE_OPERAND (expr, 0))) + || may_be_nonaddressable_p (TREE_OPERAND (expr, 0)); CASE_CONVERT: return true; |