(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
pr60841.c
       1  /* { dg-do compile } */
       2  /* { dg-additional-options "-ffast-math" } */
       3  
       4  /* This testcase shouldn't consume much memory or produce a 1GB vectorizer
       5     dump file due to SLP tree explosion.  */
       6  
       7  struct S { int f1, f2, f3, f4; } a;
       8  struct T { short f3, f2, f1, f4; };
       9  int b, c, d, e, f, g;
      10  unsigned long z;
      11  
      12  void
      13  foo (struct T *p, struct T *q, int x, int w)
      14  {
      15    for (; x; x++)
      16      {
      17        struct S h;
      18        int i;
      19        struct T j;
      20        struct T *r;
      21        h = a;
      22        g = 0;
      23        r = p + 2 * (c + 4) + 1;
      24        j = *r;
      25        r = p;
      26        f = r->f1 - 1;
      27        b = +1.0 + f * f;
      28        i = (r->f2 + j.f2) / 2;
      29        f = r->f3 - 1;
      30        b += 1.0 - i * f * f;
      31        f = r->f4 - 1;
      32        if (b)
      33  	b += -1.0 - i * f;
      34        if (b / w)
      35  	{
      36  	  h.f1 += 8.0 * r->f1;
      37  	  h.f2 += 8.0 * r->f2;
      38  	  h.f3 += 8.0 * r->f3;
      39  	  h.f4 += 8.0 * r->f4;
      40  	  g = 1;
      41  	}
      42        r++;
      43        f = r->f1;
      44        i = (r->f2 + j.f2) / 2;
      45        f = r->f3 - 1;
      46        b += 1.0 - i * f * f;
      47        i = (r->f4);
      48        if (b * 65535UL / w)
      49  	{
      50  	  h.f1 += 10.0 * r->f1;
      51  	  h.f2 += 10.0 * r->f2;
      52  	  h.f3 += 10.0 * r->f3;
      53  	  h.f4 += 10.0 * r->f4;
      54  	  g += 10.0;
      55  	}
      56        r++;
      57        f = r->f1;
      58        z = 5UL * i;
      59        f = r->f2;
      60        i = (r->f3 + j.f3) / 2;
      61        b = -i * f * f;
      62        i = (r->f4 + j.f4) / 2;
      63        if (b * 65535UL / 25.0f)
      64  	{
      65  	  h.f1 += 8.0 * r->f1;
      66  	  h.f2 += 8.0 * r->f2;
      67  	  h.f3 += 8.0 * r->f3;
      68  	  h.f4 += 8.0 * r->f4;
      69  	  g += 8.0;
      70  	}
      71        r++;
      72        f = r->f1 - j.f1;
      73        b = 1 * 2.0 * i * f * f;
      74        f = r->f2;
      75        b += 4.0 * f;
      76        i = r->f3 / 2;
      77        f = r->f4 - 1;
      78        if (b * 1)
      79  	{
      80  	  h.f1 += 8.0 * r->f1;
      81  	  h.f2 += 8.0 * r->f2;
      82  	  h.f3 += 8.0 * r->f3;
      83  	  h.f4 += 8.0 * r->f4;
      84  	  g += 8.0;
      85  	}
      86        b = 4.0 * 1 * f;
      87        if (b * 65535UL / 25.0f)
      88  	{
      89  	  h.f1 += 20.0 * r->f1;
      90  	  h.f2 += 20.0 * r->f2;
      91  	  h.f3 += 20.0 * r->f3;
      92  	  h.f4 += 20.0 * r->f4;
      93  	  g += 20.0;
      94  	}
      95        b = 5 * (0.0 - i);
      96        if (b < 0)
      97  	{
      98  	  h.f1 += 8.0 * r->f1;
      99  	  h.f2 += 8.0 * r->f2;
     100  	  h.f3 += 8.0 * r->f3;
     101  	  h.f4 += 8.0 * r->f4;
     102  	  g += 8.0;
     103  	}
     104        r = p + 2 * (c + 4);
     105        i = (r->f1 + j.f1);
     106        b = 1 * 2.0 * i * 1;
     107        f = r->f2 - 1;
     108        i = (r->f3 + j.f3) / 2;
     109        b = 5 * (0.0 - i) * f * f;
     110        i = (r->f4 + j.f4) / 2;
     111        if (b * 65535UL / 25.0f)
     112  	{
     113  	  h.f1 += 10.0 * r->f1;
     114  	  h.f2 += 10.0 * r->f2;
     115  	  h.f3 += 10.0 * r->f3;
     116  	  h.f4 += 10.0 * r->f4;
     117  	  g += 10.0;
     118  	}
     119        r++;
     120        f = r->f1;
     121        b = 5UL * i * f;
     122        i = (r->f2 + j.f2) / 2;
     123        f = r->f3 - 1;
     124        b = 5 * (0.0 - i) * f * f;
     125        f = r->f4 - 1;
     126        if (b * 65535UL / 25.0f)
     127  	{
     128  	  h.f1 += 40.0 * r->f1;
     129  	  h.f2 += 40.0 * r->f2;
     130  	  h.f3 += 40.0 * r->f3;
     131  	  h.f4 += 40.0 * r->f4;
     132  	  g += 40.0;
     133  	}
     134        r++;
     135        i = (r->f1 + j.f1);
     136        b = 5 * i * f;
     137        f = r->f2;
     138        b = 4.0 * f * f;
     139        f = r->f3;
     140        i = (r->f4 + j.f4) / 2;
     141        b = 5 * (0.0 - i) * f * f;
     142        if (b * 25.0f)
     143  	{
     144  	  h.f1 += 8.0 * r->f1;
     145  	  h.f2 += 8.0 * r->f2;
     146  	  h.f3 += 8.0 * r->f3;
     147  	  h.f4 += 8.0 * r->f4;
     148  	  g += 8.0;
     149  	}
     150        r = p + 4 * (c + 4);
     151        i = r->f1 / 2;
     152        b = 5 * (1.0 + i);
     153        i = r->f2 + j.f2;
     154        f = r->f3 - 1;
     155        b = 5 * (0.0 - i) * f * f;
     156        i = (r->f4 + j.f4) / 2;
     157        if (b * 65535UL / 25.0f)
     158  	{
     159  	  h.f1 += 5.0 * r->f1;
     160  	  h.f2 += 5.0 * r->f2;
     161  	  h.f3 += 5.0 * r->f3;
     162  	  h.f4 += 5.0 * r->f4;
     163  	  g += 5.0;
     164  	}
     165        b = 5 * (1.0 + i);
     166        if (b < 0)
     167  	{
     168  	  h.f1 += 5.0 * r->f1;
     169  	  h.f2 += 5.0 * r->f2;
     170  	  h.f3 += 5.0 * r->f3;
     171  	  h.f4 += 5.0 * r->f4;
     172  	  g += 5.0;
     173  	}
     174        q->f1 = (h.f1 + g / 2 - 1) / g;
     175        q->f2 = (h.f2 + g / 2 - 1) / g;
     176        q->f3 = (h.f3 + g / 2 - 1) / g;
     177        q->f4 = (h.f4 + g / 2 - 1) / g;
     178        p++;
     179        q++;
     180      }
     181  }
     182