aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-10-13 18:09:12 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2011-10-13 18:09:12 +0200
commit9a6b63c3d549e65883134456b811f46a863d45d0 (patch)
tree2d51029c455de3c213ceab14b9b1e03d6de564ec
parenta520f3c39ddff5c64769c158480de8255e919c85 (diff)
downloadgcc-9a6b63c3d549e65883134456b811f46a863d45d0.zip
gcc-9a6b63c3d549e65883134456b811f46a863d45d0.tar.gz
gcc-9a6b63c3d549e65883134456b811f46a863d45d0.tar.bz2
tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE from vector or complex vars even if...
* tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE from vector or complex vars even if their DECL_UID is in not_reg_needs bitmap. Co-Authored-By: Richard Guenther <rguenther@suse.de> From-SVN: r179930
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-ssa.c2
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c5567d1..01c7e00 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,11 @@
2011-10-13 Jakub Jelinek <jakub@redhat.com>
+ Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE
+ from vector or complex vars even if their DECL_UID is in not_reg_needs
+ bitmap.
+
+2011-10-13 Jakub Jelinek <jakub@redhat.com>
* config/i386/sse.md (reduc_umin_v8hi): New pattern.
* config/i386/i386.c (ix86_build_const_vector): Handle
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index 258a744..8f73d91 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -1963,6 +1963,8 @@ maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs)
a non-register. Otherwise we are confused and forget to
add virtual operands for it. */
&& (!is_gimple_reg_type (TREE_TYPE (var))
+ || TREE_CODE (TREE_TYPE (var)) == VECTOR_TYPE
+ || TREE_CODE (TREE_TYPE (var)) == COMPLEX_TYPE
|| !bitmap_bit_p (not_reg_needs, DECL_UID (var))))
{
TREE_ADDRESSABLE (var) = 0;