autopar-1.c 681 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /* { dg-do run } */
  2. /* { dg-additional-options "-ftree-parallelize-loops=4 -ffast-math" } */
  3. extern void abort (void);
  4. double d[1024], e[1024];
  5. int f[1024], g[1024];
  6. double __attribute__((noinline))
  7. foo (void)
  8. {
  9. double s = 0.0;
  10. int i;
  11. for (i = 0; i < 1024; i++)
  12. s += d[i] - e[i];
  13. return s;
  14. }
  15. int __attribute__((noinline))
  16. bar (void)
  17. {
  18. int s = 0, i;
  19. for (i = 0; i < 1024; i++)
  20. s += f[i] - g[i];
  21. return s;
  22. }
  23. int
  24. main (void)
  25. {
  26. int i;
  27. for (i = 0; i < 1024; i++)
  28. {
  29. d[i] = i * 2;
  30. e[i] = i;
  31. f[i] = i * 2;
  32. g[i] = i;
  33. }
  34. if (foo () != 1023 * 1024 / 2)
  35. abort ();
  36. if (bar () != 1023 * 1024 / 2)
  37. abort ();
  38. return 0;
  39. }