diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/tree-ssa.c | 2 |
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; |