------- Comment #8 from rguenth at gcc dot gnu dot org  2010-07-08 12:47 -------
(In reply to comment #7)
> We end up with
> 
>   MEM[(struct s *)D.2742_15 + 8B] = 0;
>   MEM[(struct s *)D.2742_15 + 12B] = 0;
>   MEM[(struct s *)D.2742_15 + 16B] = 0;
> 
> from which set_mem_attributes_minus_bitpos incorrectly concludes that
> D.2742_15 points to sth that is aligned the same as struct s here:
> 
>       else
>         /* This technically isn't correct.  We can't really derive
>            alignment information from types.  */
>         align = MAX (align,
>                      TYPE_ALIGN (TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 
> 1)))));
> 
> and the comment is correct.

Where the alternative would have been

      else
        /* This technically isn't correct.  We can't really derive
           alignment information from types.  */
        align = MAX (align, TYPE_ALIGN (TREE_TYPE (t)));

and the comment would still be correct as a MEM_REF has an embedded
VIEW_CONVERT_EXPR.


-- 


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

Reply via email to