aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2009-02-08 23:10:00 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2009-02-08 23:10:00 +0000
commit9a58d4d27c50e04b08d5e5d9f39da489403f0987 (patch)
tree6a2ee53b314ca031061181f3fc11e2218d380be3 /gcc
parentede965edbc14b64b34ed2e2f71164f151c3bf191 (diff)
downloadgcc-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')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/decl.c1
-rw-r--r--gcc/tree-ssa-loop-ivopts.c11
4 files changed, 17 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 11c3612..c5833dd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
+ Make case self-contained.
+ <ARRAY_REF>: Test TYPE_NONALIASED_COMPONENT flag.
+
2009-02-07 Anatoly Sokolov <aesok@post.ru>
* config/avr/avr.c (avr_mcu_t): Add ata6289 device.
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 31000a4..4da0bbb 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_String_Literal_Subtype>:
+ Set TYPE_NONALIASED_COMPONENT on the array type.
+
2009-01-31 Laurent GUERBY <laurent@guerby.net>
* gcc-interface/Makefile.in: Fix mipsel linux handling.
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 25c4d81..874b1cc 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -2615,6 +2615,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
gnu_type
= build_array_type (gnat_to_gnu_type (Component_Type (gnat_entity)),
gnu_index_type);
+ TYPE_NONALIASED_COMPONENT (gnu_type) = 1;
copy_alias_set (gnu_type, gnu_string_type);
}
break;
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;