--- /dev/null
+! { dg-do compile }
+! { dg-additional-options "-march=armv8.3-a" { target aarch64-*-* } }
+SUBROUTINE CLAREF(A, WANTZ, Z, ICOL1, ITMP1, ITMP2, T1, T2, V2)
+LOGICAL BLOCK, WANTZ
+COMPLEX T1, T2, V2
+COMPLEX A(LDA, *), VECS, Z(LDA, *)
+COMPLEX SUM
+LOGICAL LSAME
+IF (LSAME) THEN
+ DO 30 K = ITMP1, ITMP2, 3
+ T1 = VECS0
+30 CONTINUE
+ELSE
+ IF (BLOCK) THEN
+ DO 90 K = ITMP1, ITMP2 - 1, 3
+ A(J, ICOL1) = ITMP1
+ IF (WANTZ) THEN
+ DO 80 J = ITMP1, ITMP2
+ SUM = ICOL1
+ Z(J, 3) = V23
+80 CONTINUE
+ END IF
+90 CONTINUE
+ DO 120 K = ITMP1, ITMP2
+ V2 = VECS()
+ DO 100 J = ITMP1, ITMP2
+ A(J, ICOL1) = A(J, ICOL1) - SUM
+100 CONTINUE
+ IF (WANTZ) THEN
+ DO 110 J = 1, 3
+ SUM = Z(J, ICOL1)
+ Z(J, ICOL1) = 0
+110 CONTINUE
+ END IF
+ ICOL1 = ICOL1 + 1
+120 CONTINUE
+ ELSE
+ DO 130 J = ITMP1, ITMP2
+ SUM = T1 * A(J, ICOL1) + T2 * A(J, 1) + V2 * A(J, 2)
+ A(J, ICOL1) = SUM
+ A(J, ICOL1 + 2) = SUM * V1
+130 CONTINUE
+ END IF
+END IF
+END
STMT_VINFO_RELEVANT (call_stmt_info) = vect_used_in_scope;
STMT_SLP_TYPE (call_stmt_info) = pure_slp;
- /* add_pattern_stmt can't be done in vect_mark_pattern_stmts because
- the non-SLP pattern matchers already have added the statement to VINFO
- by the time it is called. Some of them need to modify the returned
- stmt_info. vect_mark_pattern_stmts is called by recog_pattern and it
- would increase the size of each pattern with boilerplate code to make
- the call there. */
- vect_mark_pattern_stmts (vinfo, stmt_info, call_stmt,
- SLP_TREE_VECTYPE (node));
+ gimple_set_bb (call_stmt, gimple_bb (stmt_info->stmt));
+ STMT_VINFO_VECTYPE (call_stmt_info) = SLP_TREE_VECTYPE (node);
STMT_VINFO_SLP_VECT_ONLY_PATTERN (call_stmt_info) = true;
/* Since we are replacing all the statements in the group with the same