This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH} backport r175475 to gcc-4_6-branch

   Currently PR49536 still exists in gcc-4_6-branch. The following
patch backports r175475 for the gcc 4.6.3 release. This will be helpful
to dragonegg users ( as
dragonegg currently doesn't build against FSF gcc trunk yet. Regression
tested on x86_64-apple-darwin11...

Okay for gcc-4_6-branch and thus gcc 4.6.3?

2012-02-08  Jack Howarth  <>

	Backport from mainline
	2011-06-27  Richard Guenther  <>

	PR tree-optimization/49536
	* tree-vect-stmts.c (get_vectype_for_scalar_type_and_size):
	For non-scalar inner types use a scalar type according to
	the scalar inner mode.

Index: gcc/tree-vect-stmts.c
--- gcc/tree-vect-stmts.c	(revision 183938)
+++ gcc/tree-vect-stmts.c	(working copy)
@@ -5117,6 +5117,15 @@ get_vectype_for_scalar_type_and_size (tr
       && GET_MODE_CLASS (inner_mode) != MODE_FLOAT)
     return NULL_TREE;
+  /* We shouldn't end up building VECTOR_TYPEs of non-scalar components.
+     When the component mode passes the above test simply use a type
+     corresponding to that mode.  The theory is that any use that
+     would cause problems with this will disable vectorization anyway.  */
+  if (!SCALAR_FLOAT_TYPE_P (scalar_type)
+      && !INTEGRAL_TYPE_P (scalar_type)
+      && !POINTER_TYPE_P (scalar_type))
+    scalar_type = lang_hooks.types.type_for_mode (inner_mode, 1);
   /* If no size was supplied use the mode the target prefers.   Otherwise
      lookup a vector mode of the specified size.  */
   if (size == 0)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]