http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48335

--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-03-30 
10:05:13 UTC ---
A patch that might fix most of the issues could also be

Index: gcc/tree-ssa.c
===================================================================
--- gcc/tree-ssa.c      (revision 171716)
+++ gcc/tree-ssa.c      (working copy)
@@ -1976,7 +1976,8 @@ maybe_optimize_var (tree var, bitmap add
       /* Do not change TREE_ADDRESSABLE if we need to preserve var as
         a non-register.  Otherwise we are confused and forget to
         add virtual operands for it.  */
-      && (!is_gimple_reg_type (TREE_TYPE (var))
+      && ((!is_gimple_reg_type (TREE_TYPE (var))
+          && TYPE_MODE (TREE_TYPE (var)) == BLKmode)
          || !bitmap_bit_p (not_reg_needs, DECL_UID (var))))
     {
       TREE_ADDRESSABLE (var) = 0;

pessimizing tree alias analysis (but only to be as bad as 4.5, maybe
a little worse for register types with components (vectors and complex vars)).

Reply via email to