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



Diego Novillo <dnovillo at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

                 CC|                            |dnovillo at gcc dot gnu.org



--- Comment #4 from Diego Novillo <dnovillo at gcc dot gnu.org> 2012-11-21 
00:52:57 UTC ---

David's analysis is correct.  The type of the element at the point of the

failure is not a complete type.



At this point, I think all the types should've been completed, so I'm not sure

why this one still isn't.  Jason, this patchlet (which is very likely papering

over the issue) allows the file to build.



Index: gimplify.c

===================================================================

--- gimplify.c  (revision 193508)

+++ gimplify.c  (working copy)

@@ -2123,6 +2123,8 @@

          if (TREE_OPERAND (t, 3) == NULL_TREE)

            { 

              tree elmt_type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0)));

+             if (!COMPLETE_TYPE_P (elmt_type))

+               layout_type (elmt_type);

              tree elmt_size = unshare_expr (array_ref_element_size (t));

              tree factor = size_int (TYPE_ALIGN_UNIT (elmt_type));



In this case, we have



t ==> mosaic_position[tri]

elmt_type ==> struct Vector2_f[3], but we cannot compute its element size

because it has not yet been laid out.



Jason, what would be a better place to make sure the type is laid out?





Thanks.  Diego.

Reply via email to