[Bug tree-optimization/42652] vectorizer created unaligned vector insns
irar at il dot ibm dot com
gcc-bugzilla@gcc.gnu.org
Mon Jan 18 12:17:00 GMT 2010
------- Comment #13 from irar at il dot ibm dot com 2010-01-18 12:17 -------
Does something like this make sense? (With this patch we will never use peeling
for function parameters, unless the builtin returns OK to peel for packed
types).
Index: tree-vect-data-refs.c
===================================================================
--- tree-vect-data-refs.c (revision 155880)
+++ tree-vect-data-refs.c (working copy)
@@ -1010,10 +1010,29 @@ vector_alignment_reachable_p (struct dat
tree type = (TREE_TYPE (DR_REF (dr)));
tree ba = DR_BASE_OBJECT (dr);
bool is_packed = false;
+ tree tmp = TREE_TYPE (DR_BASE_ADDRESS (dr));
if (ba)
is_packed = contains_packed_reference (ba);
+ is_packed = is_packed || contains_packed_reference (DR_BASE_ADDRESS
(dr));
+
+ if (!is_packed)
+ {
+ while (tmp)
+ {
+ is_packed = TYPE_PACKED (tmp);
+ if (is_packed)
+ break;
+
+ tmp = TREE_TYPE (tmp);
+ }
+ }
+
+ if (TREE_CODE (DR_BASE_ADDRESS (dr)) == SSA_NAME
+ && TREE_CODE (SSA_NAME_VAR (DR_BASE_ADDRESS (dr))) == PARM_DECL)
+ is_packed = true;
+
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "Unknown misalignment, is_packed = %d",is_packed);
if (targetm.vectorize.vector_alignment_reachable (type, is_packed))
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42652
More information about the Gcc-bugs
mailing list