===================================================================
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+
+typedef struct TypHeader {
+ struct TypHeader * * ptr;
+ unsigned char type;
+ } * TypHandle;
+ extern TypHandle (* EvTab[81]) ( TypHandle hd );
+ TypHandle FunApplyRel ( TypHandle hdCall )
+ {
+ TypHandle hdApp;
+ TypHandle * ptApp;
+ long lp;
+ long lc;
+ hdApp = ((long)(((TypHandle*)((hdCall)->ptr))[1])&1 ?
+(((TypHandle*)((hdCall)->ptr))[1]) : (*
+EvTab[(((long)(((TypHandle*)((hdCall)->ptr))[1]) & 1) ? 1 :
+((((TypHandle*)((hdCall)->ptr))[1])->type))])((((TypHandle*)((hdCall)->
ptr))[1])));
+ ptApp = ((TypHandle*)((hdApp)->ptr));
+ ptApp[1] = ((TypHandle) (((long)(lp) << 2) + 1));
+ ptApp[2] = ((TypHandle) (((long)(lc) << 2) + 1));
+ }
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
===================================================================
@@ -4663,7 +4663,7 @@ vect_analyze_stmt (gimple stmt, bool *ne
else
{
if (bb_vinfo)
- ok = (vectorizable_shift (stmt, NULL, NULL, NULL)
+ ok = (vectorizable_shift (stmt, NULL, NULL, node)
|| vectorizable_operation (stmt, NULL, NULL, node)
|| vectorizable_assignment (stmt, NULL, NULL, node)
|| vectorizable_load (stmt, NULL, NULL, node, NULL)