1 /* { dg-require-effective-target vect_int } */
2 /* { dg-add-options bind_pic_locally } */
3 
4 #include <stdarg.h>
5 #include "tree-vect.h"
6 
7 #define N 128
8 
9 /* Unaligned stores.  */
10 
11 int ia[N+2];
12 short sa[N+2];
13 
main1(int n)14 int main1 (int n)
15 {
16   int i;
17 
18   for (i = 1; i <= N/2; i++)
19     {
20       ia[2*i] = 25;
21       ia[2*i + 1] = 5;
22     }
23 
24   /* check results:  */
25   for (i = 1; i <= N/2; i++)
26     {
27       if (ia[2*i] != 25
28           || ia[2*i + 1] != 5)
29         abort ();
30     }
31 
32   for (i = 1; i <= n/2; i++)
33     {
34       sa[2*i] = 25;
35       sa[2*i + 1] = 5;
36     }
37 
38   /* check results:  */
39   for (i = 1; i <= n/2; i++)
40     {
41       if (sa[2*i] != 25
42           || sa[2*i + 1] != 5)
43         abort ();
44     }
45 
46 
47   return 0;
48 }
49 
main(void)50 int main (void)
51 {
52 
53   check_vect ();
54 
55   return main1 (N);
56 }
57 
58 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
59 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
60 /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { { ! vect_unaligned_possible } || { ! vect_natural_alignment } } } } } */
61