1/* { dg-require-effective-target vect_int } */
2
3#include <stdarg.h>
4#include "tree-vect.h"
5
6#define N 128
7#define OFF 3
8
9/* unaligned store.  */
10
11__attribute__ ((noinline))
12int main1 (int off)
13{
14  int i;
15  int ia[N+OFF];
16
17  for (i = 0; i < N; i++)
18    {
19      ia[i+off] = 5;
20    }
21
22  /* check results:  */
23  for (i = 0; i < N; i++)
24    {
25      if (ia[i+off] != 5)
26        abort ();
27    }
28
29  return 0;
30}
31
32int main (void)
33{
34  check_vect ();
35
36  main1 (0); /* aligned */
37  main1 (OFF); /* unaligned */
38  return 0;
39}
40
41/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
42/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
43/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vector_alignment_reachable } } } } */
44/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } */
45/* { dg-final { cleanup-tree-dump "vect" } } */
46