1 /* { dg-do compile } */
2 /* { dg-options "-O3 -march=armv8.2-a+sve" } */
3 
4 int d;
5 
6 void
f1(char f,char * g,char * h,char * l,char * n)7 f1(char f, char *g, char *h, char *l, char *n) {
8   double i = d, j = 1.0 - f, k = j ? d : j;
9   if (k == 1.0)
10     i = 0.0;
11   *l = *n = *g = *h = i * 0.5;
12 }
13 
14 void
f2()15 f2() {
16   int a, m, c;
17   for (c = 2048; c; c--) {
18     char b = a++;
19     f1(b, m, m + 1, m + 2, m + 3); /*{ dg-warning {passing argument [0-9]+ of 'f1' makes pointer from integer without a cast} } */
20     m += 4;
21   }
22 }
23 
24 /* { dg-final { scan-assembler {\tmovprfx\tz[0-9]+, z[0-9]+} } } */
25 /* { dg-final { scan-assembler {\tfsubr\tz[0-9]+\.d, p[0-7]/m, z[0-9]+\.d, #1.0} } } */
26