1  /* { dg-require-effective-target vect_int } */
       2  /* { dg-additional-options "--param max-completely-peel-times=1" } */
       3  
       4  #include <stdlib.h>
       5  #include <stdarg.h>
       6  #include "tree-vect.h"
       7  
       8  #define N 3
       9  
      10  struct extraction
      11  {
      12    int a[N][N];
      13    int b[N][N];
      14  };
      15  
      16  static int a[N][N] = {{1,2,3},{4,5,6},{7,8,9}};
      17  static int b[N][N] = {{17,24,7},{0,2,3},{4,31,82}};
      18  static int c[N][N] = {{1,2,3},{4,5,5},{5,5,5}};
      19  
      20  __attribute__ ((noinline))
      21  int main1 (int x) {
      22    int i,j;
      23    struct extraction *p;
      24    p = (struct extraction *) malloc (sizeof (struct extraction));
      25  
      26    for (i = 0; i < N; i++)
      27     {
      28      for (j = 0; j < N; j++)
      29       {
      30         p->a[i][j] = a[i][j];
      31         p->b[i][j] = b[i][j];
      32         asm volatile ("" ::: "memory");
      33       }
      34     }
      35  
      36    /* Not vectorizable: distance = 1.  */
      37    for (i = 1; i < N; i++)
      38    {
      39      for (j = 0; j < N; j++)
      40      {
      41         *((int *)p + x + i + j + 1) = *((int *)p + x + i + j);
      42      }
      43    }
      44  
      45    /* check results: */
      46    for (i = 0; i < N; i++)
      47     {
      48      for (j = 0; j < N; j++)
      49       {
      50         if (p->a[i][j] != c[i][j])
      51           abort();
      52       }
      53    }
      54    return 0;
      55  }
      56  
      57  int main (void)
      58  { 
      59    check_vect ();
      60  
      61    return main1 (N);
      62  }
      63  
      64  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
      65  /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { target { ! vect_multiple_sizes } } } } */
      66  /* { dg-final { scan-tree-dump "possible dependence between data-refs" "vect" { target vect_multiple_sizes } } } */
      67