Consistently use asm volatile ("" ::: "memory") in vect tests
authorRichard Sandiford <richard.sandiford@linaro.org>
Thu, 9 Nov 2017 15:15:25 +0000 (15:15 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 9 Nov 2017 15:15:25 +0000 (15:15 +0000)
The vectoriser tests used a combination of:

1) if (impossible condition) abort ();
2) volatile int x; ... *x = ...;
3) asm volatile ("" ::: "memory");

to prevent vectorisation of a set-up loop.  The problem with 1) is that
the compiler can often tell that the condition is false and optimise
it away before vectorisation.

This was already happening in slp-perm-9.c, which is why the test was
expecting one loop to be vectorised even when the required permutes
weren't supported.  It becomes a bigger problem with SVE, which is
able to vectorise more set-up loops.

The point of this patch is therefore to replace 1) with something else.
2) should work most of the time, but we don't usually treat non-volatile
accesses as aliasing unrelated volatile accesses, so I think in principle
we could split the loop into one that does the set-up and one that does
the volatile accesses.  3) seems more robust because it's also a wild
read and write.

The patch therefore tries to replace all instances of 1) and 2) with 3).

2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/testsuite/
* gcc.dg/vect/bb-slp-cond-1.c (main): Add an asm volatile
to the set-up loop.
* gcc.dg/vect/slp-perm-7.c (main): Prevent vectorisation with
asm volatile ("" ::: "memory") instead of a conditional abort.
Update the expected vector loop count accordingly.
* gcc.dg/vect/slp-perm-9.c (main): Likewise.
* gcc.dg/vect/bb-slp-1.c (main1): Prevent vectorisation with
asm volatile ("" ::: "memory") instead of a conditional abort.
* gcc.dg/vect/slp-23.c (main): Likewise,
* gcc.dg/vect/slp-35.c (main): Likewise,
* gcc.dg/vect/slp-37.c (main): Likewise,
* gcc.dg/vect/slp-perm-4.c (main): Likewise.
* gcc.dg/vect/bb-slp-24.c (foo): Likewise.  Remove dummy argument.
(main): Update call accordingly.
* gcc.dg/vect/bb-slp-25.c (foo, main): As for bb-slp-24.c.
* gcc.dg/vect/bb-slp-26.c (foo, main): Likewise.
* gcc.dg/vect/bb-slp-29.c (foo, main): Likewise.
* gcc.dg/vect/no-vfa-vect-102.c (foo): Delete.
(main): Don't initialize it.
(main1): Prevent vectorisation with asm volatile ("" ::: "memory")
instead of a conditional abort.
* gcc.dg/vect/no-vfa-vect-102a.c (foo, main1, main): As for
no-vfa-vect-102.c
* gcc.dg/vect/vect-103.c (foo, main1, main): Likewise.
* gcc.dg/vect/vect-104.c (foo, main1, main): Likewise.
* gcc.dg/vect/pr42709.c (main1): Remove dummy argument.
Prevent vectorisation with asm volatile ("" ::: "memory")
instead of a conditional abort.
* gcc.dg/vect/slp-13-big-array.c (y): Delete.
(main1): Prevent vectorisation with asm volatile ("" ::: "memory")
instead of a conditional abort.
* gcc.dg/vect/slp-3-big-array.c (y, main1): As for slp-13-big-array.c.
* gcc.dg/vect/slp-34-big-array.c (y, main1): Likewise.
* gcc.dg/vect/slp-4-big-array.c (y, main1): Likewise.
* gcc.dg/vect/slp-multitypes-11-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-105.c (y, main1): Likewise.
* gcc.dg/vect/vect-105-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-112-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-15-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-2-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-34-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-6-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-73-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-74-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-75-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-76-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-80-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-97-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-all-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-reduc-1char-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-reduc-2char-big-array.c (y, main1): Likewise.
* gcc.dg/vect/vect-strided-a-mult.c (y, main1): Likewise.
* gcc.dg/vect/vect-strided-a-u16-i2.c (y, main1): Likewise.
* gcc.dg/vect/vect-strided-a-u16-i4.c (y, main1): Likewise.
* gcc.dg/vect/vect-strided-a-u16-mult.c (y, main1): Likewise.
* gcc.dg/vect/vect-strided-a-u8-i2-gap.c (y, main1): Likewise.
* gcc.dg/vect/vect-strided-a-u8-i8-gap2-big-array.c (y, main1):
Likewise.
* gcc.dg/vect/vect-strided-a-u8-i8-gap2.c (y, main1): Likewise.
* gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c (y, main1):
Likewise.
* gcc.dg/vect/vect-strided-a-u8-i8-gap7.c (y, main1): Likewise.
* gcc.dg/vect/slp-24.c (y): Delete.
(main): Prevent vectorisation with asm volatile ("" ::: "memory")
instead of a conditional abort.
* gcc.dg/vect/slp-24-big-array.c (y, main): As for slp-24.c.
* gcc.dg/vect/vect-98-big-array.c (y, main): Likewise.
* gcc.dg/vect/vect-bswap16.c (y, main): Likewise.
* gcc.dg/vect/vect-bswap32.c (y, main): Likewise.
* gcc.dg/vect/vect-bswap64.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-mult-char-ls.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-mult.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-same-dr.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u16-i2.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u16-i4.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u32-i4.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u32-i8.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u8-i2-gap.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u8-i2.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u8-i8-gap2-big-array.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u8-i8-gap2.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u8-i8-gap4-big-array.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u8-i8-gap4.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u8-i8-gap7.c (y, main): Likewise.
* gcc.dg/vect/vect-strided-u8-i8.c (y, main): Likewise.
* gcc.dg/vect/vect-10-big-array.c (y): Delete.
(foo): Prevent vectorisation with asm volatile ("" ::: "memory")
instead of a conditional abort.
* gcc.dg/vect/vect-double-reduc-6-big-array.c (y, foo): As for
vect-10-big-array.c.
* gcc.dg/vect/vect-reduc-pattern-1b-big-array.c (y, foo): Likewise.
* gcc.dg/vect/vect-reduc-pattern-1c-big-array.c (y, foo): Likewise.
* gcc.dg/vect/vect-reduc-pattern-2b-big-array.c (y, foo): Likewise.
* gcc.dg/vect/vect-117.c (foo): Delete.
(main): Don't initalize it.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r254588

77 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/bb-slp-1.c
gcc/testsuite/gcc.dg/vect/bb-slp-24.c
gcc/testsuite/gcc.dg/vect/bb-slp-25.c
gcc/testsuite/gcc.dg/vect/bb-slp-26.c
gcc/testsuite/gcc.dg/vect/bb-slp-29.c
gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c
gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c
gcc/testsuite/gcc.dg/vect/pr42709.c
gcc/testsuite/gcc.dg/vect/slp-13-big-array.c
gcc/testsuite/gcc.dg/vect/slp-23.c
gcc/testsuite/gcc.dg/vect/slp-24-big-array.c
gcc/testsuite/gcc.dg/vect/slp-24.c
gcc/testsuite/gcc.dg/vect/slp-3-big-array.c
gcc/testsuite/gcc.dg/vect/slp-34-big-array.c
gcc/testsuite/gcc.dg/vect/slp-35.c
gcc/testsuite/gcc.dg/vect/slp-37.c
gcc/testsuite/gcc.dg/vect/slp-4-big-array.c
gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c
gcc/testsuite/gcc.dg/vect/slp-perm-4.c
gcc/testsuite/gcc.dg/vect/slp-perm-7.c
gcc/testsuite/gcc.dg/vect/slp-perm-9.c
gcc/testsuite/gcc.dg/vect/vect-10-big-array.c
gcc/testsuite/gcc.dg/vect/vect-103.c
gcc/testsuite/gcc.dg/vect/vect-104.c
gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
gcc/testsuite/gcc.dg/vect/vect-105.c
gcc/testsuite/gcc.dg/vect/vect-112-big-array.c
gcc/testsuite/gcc.dg/vect/vect-117.c
gcc/testsuite/gcc.dg/vect/vect-15-big-array.c
gcc/testsuite/gcc.dg/vect/vect-2-big-array.c
gcc/testsuite/gcc.dg/vect/vect-34-big-array.c
gcc/testsuite/gcc.dg/vect/vect-6-big-array.c
gcc/testsuite/gcc.dg/vect/vect-73-big-array.c
gcc/testsuite/gcc.dg/vect/vect-74-big-array.c
gcc/testsuite/gcc.dg/vect/vect-75-big-array.c
gcc/testsuite/gcc.dg/vect/vect-76-big-array.c
gcc/testsuite/gcc.dg/vect/vect-80-big-array.c
gcc/testsuite/gcc.dg/vect/vect-97-big-array.c
gcc/testsuite/gcc.dg/vect/vect-98-big-array.c
gcc/testsuite/gcc.dg/vect/vect-all-big-array.c
gcc/testsuite/gcc.dg/vect/vect-bswap16.c
gcc/testsuite/gcc.dg/vect/vect-bswap32.c
gcc/testsuite/gcc.dg/vect/vect-bswap64.c
gcc/testsuite/gcc.dg/vect/vect-double-reduc-6-big-array.c
gcc/testsuite/gcc.dg/vect/vect-reduc-1char-big-array.c
gcc/testsuite/gcc.dg/vect/vect-reduc-2char-big-array.c
gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b-big-array.c
gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c-big-array.c
gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c
gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2-big-array.c
gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c
gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2-big-array.c
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-big-array.c
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c

index 7741f7fd7b35b41952ebc98a9d31df949f744486..c9a3fba3f14cbbf34bf4dc414d8f5caa4c818a02 100644 (file)
@@ -1,3 +1,105 @@
+2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
+           Alan Hayward  <alan.hayward@arm.com>
+           David Sherwood  <david.sherwood@arm.com>
+
+       * gcc.dg/vect/bb-slp-cond-1.c (main): Add an asm volatile
+       to the set-up loop.
+       * gcc.dg/vect/slp-perm-7.c (main): Prevent vectorisation with
+       asm volatile ("" ::: "memory") instead of a conditional abort.
+       Update the expected vector loop count accordingly.
+       * gcc.dg/vect/slp-perm-9.c (main): Likewise.
+       * gcc.dg/vect/bb-slp-1.c (main1): Prevent vectorisation with
+       asm volatile ("" ::: "memory") instead of a conditional abort.
+       * gcc.dg/vect/slp-23.c (main): Likewise,
+       * gcc.dg/vect/slp-35.c (main): Likewise,
+       * gcc.dg/vect/slp-37.c (main): Likewise,
+       * gcc.dg/vect/slp-perm-4.c (main): Likewise.
+       * gcc.dg/vect/bb-slp-24.c (foo): Likewise.  Remove dummy argument.
+       (main): Update call accordingly.
+       * gcc.dg/vect/bb-slp-25.c (foo, main): As for bb-slp-24.c.
+       * gcc.dg/vect/bb-slp-26.c (foo, main): Likewise.
+       * gcc.dg/vect/bb-slp-29.c (foo, main): Likewise.
+       * gcc.dg/vect/no-vfa-vect-102.c (foo): Delete.
+       (main): Don't initialize it.
+       (main1): Prevent vectorisation with asm volatile ("" ::: "memory")
+       instead of a conditional abort.
+       * gcc.dg/vect/no-vfa-vect-102a.c (foo, main1, main): As for
+       no-vfa-vect-102.c
+       * gcc.dg/vect/vect-103.c (foo, main1, main): Likewise.
+       * gcc.dg/vect/vect-104.c (foo, main1, main): Likewise.
+       * gcc.dg/vect/pr42709.c (main1): Remove dummy argument.
+       Prevent vectorisation with asm volatile ("" ::: "memory")
+       instead of a conditional abort.
+       * gcc.dg/vect/slp-13-big-array.c (y): Delete.
+       (main1): Prevent vectorisation with asm volatile ("" ::: "memory")
+       instead of a conditional abort.
+       * gcc.dg/vect/slp-3-big-array.c (y, main1): As for slp-13-big-array.c.
+       * gcc.dg/vect/slp-34-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/slp-4-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/slp-multitypes-11-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-105.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-105-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-112-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-15-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-2-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-34-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-6-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-73-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-74-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-75-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-76-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-80-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-97-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-all-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-reduc-1char-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-reduc-2char-big-array.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-strided-a-mult.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-strided-a-u16-i2.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-strided-a-u16-i4.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-strided-a-u16-mult.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-strided-a-u8-i2-gap.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-strided-a-u8-i8-gap2-big-array.c (y, main1):
+       Likewise.
+       * gcc.dg/vect/vect-strided-a-u8-i8-gap2.c (y, main1): Likewise.
+       * gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c (y, main1):
+       Likewise.
+       * gcc.dg/vect/vect-strided-a-u8-i8-gap7.c (y, main1): Likewise.
+       * gcc.dg/vect/slp-24.c (y): Delete.
+       (main): Prevent vectorisation with asm volatile ("" ::: "memory")
+       instead of a conditional abort.
+       * gcc.dg/vect/slp-24-big-array.c (y, main): As for slp-24.c.
+       * gcc.dg/vect/vect-98-big-array.c (y, main): Likewise.
+       * gcc.dg/vect/vect-bswap16.c (y, main): Likewise.
+       * gcc.dg/vect/vect-bswap32.c (y, main): Likewise.
+       * gcc.dg/vect/vect-bswap64.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-mult-char-ls.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-mult.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-same-dr.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u16-i2.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u16-i4.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u32-i4.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u32-i8.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u8-i2-gap.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u8-i2.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u8-i8-gap2-big-array.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u8-i8-gap2.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u8-i8-gap4-big-array.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u8-i8-gap4.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u8-i8-gap7.c (y, main): Likewise.
+       * gcc.dg/vect/vect-strided-u8-i8.c (y, main): Likewise.
+       * gcc.dg/vect/vect-10-big-array.c (y): Delete.
+       (foo): Prevent vectorisation with asm volatile ("" ::: "memory")
+       instead of a conditional abort.
+       * gcc.dg/vect/vect-double-reduc-6-big-array.c (y, foo): As for
+       vect-10-big-array.c.
+       * gcc.dg/vect/vect-reduc-pattern-1b-big-array.c (y, foo): Likewise.
+       * gcc.dg/vect/vect-reduc-pattern-1c-big-array.c (y, foo): Likewise.
+       * gcc.dg/vect/vect-reduc-pattern-2b-big-array.c (y, foo): Likewise.
+       * gcc.dg/vect/vect-117.c (foo): Delete.
+       (main): Don't initalize it.
+
 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
 
        * gcc.c-torture/compile/pr82879.c: New testcase.
index 8baba4d5f9fc4ade180876b14b8769948ee6ae0f..f64514eeb844f1436f3d42a5f074393e3d860037 100644 (file)
@@ -25,9 +25,7 @@ main1 (int dummy)
       *pout++ = *pin++;
       *pout++ = *pin++;
       *pout++ = *pin++;
-      /* Avoid loop vectorization.  */
-      if (dummy == 32)
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   /* check results: */ 
index d0c12426c88e7ee144a21eeb2a3d9eabe692cd39..d5b6bfbc4de180cb942275c5f1dbe24f45374eb6 100644 (file)
@@ -9,7 +9,7 @@
 short src[N], dst[N];
 
 void foo (short * __restrict__ dst, short * __restrict__ src, int h,
-          int stride, int dummy)
+          int stride)
 {
   int i;
   h /= 8;
@@ -25,8 +25,7 @@ void foo (short * __restrict__ dst, short * __restrict__ src, int h,
       dst[7] += A*src[7];
       dst += stride;
       src += stride;
-      if (dummy == 32)
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 }
 
@@ -43,7 +42,7 @@ int main (void)
       src[i] = i;
     }
 
-  foo (dst, src, N, 8, 0);
+  foo (dst, src, N, 8);
 
   for (i = 0; i < N; i++)
     {
index 14314c283f0c22ff0ee3252208dd106623984741..ec31329f3535576797adba796d45a36ab3fcb1b7 100644 (file)
@@ -9,7 +9,8 @@
 
 short src[N], dst[N];
 
-void foo (short * __restrict__ dst, short * __restrict__ src, int h, int stride, int dummy)
+void foo (short * __restrict__ dst, short * __restrict__ src, int h,
+         int stride)
 {
   int i;
   h /= 16;
@@ -25,8 +26,7 @@ void foo (short * __restrict__ dst, short * __restrict__ src, int h, int stride,
       dst[7] += A*src[7] + src[7+stride];
       dst += 8;
       src += 8;
-      if (dummy == 32)
-        abort ();
+      asm volatile ("" ::: "memory");
    }
 }
 
@@ -43,7 +43,7 @@ int main (void)
        src[i] = i;
     }
 
-  foo (dst, src, N, 8, 0);
+  foo (dst, src, N, 8);
 
   for (i = 0; i < N/2; i++)
     {
index 071c25372de2770f8cf7e27e8ce27a0afceae1d9..91b6cacd4c59bbd8b422adcdfab35a4a9e5730fa 100644 (file)
@@ -10,8 +10,7 @@
 char src[N], dst[N];
 
 void __attribute__((noinline,noclone))
-foo (char * __restrict__ dst, char * __restrict__ src, int h,
-     int stride, int dummy)
+foo (char * __restrict__ dst, char * __restrict__ src, int h, int stride)
 {
   int i;
   h /= 16;
@@ -27,8 +26,7 @@ foo (char * __restrict__ dst, char * __restrict__ src, int h,
       dst[7] += A*src[7] + src[7+stride];
       dst += 8;
       src += 8;
-      if (dummy == 32)
-        abort ();
+      asm volatile ("" ::: "memory");
    }
 }
 
@@ -45,7 +43,7 @@ int main (void)
        src[i] = i/8;
     }
 
-  foo (dst, src, N, 8, 0);
+  foo (dst, src, N, 8);
 
   for (i = 0; i < N/2; i++)
     {
index 7a622ae44b922ab5a4524139deb8404dc0c9381d..747896b034bab91612ce142091bb4e5c9aba553a 100644 (file)
@@ -9,7 +9,8 @@
 
 short src[N], dst[N];
 
-void foo (short * __restrict__ dst, short * __restrict__ src, int h, int stride, int dummy)
+void foo (short * __restrict__ dst, short * __restrict__ src, int h,
+         int stride)
 {
   int i;
   h /= 16;
@@ -25,8 +26,7 @@ void foo (short * __restrict__ dst, short * __restrict__ src, int h, int stride,
       dst[7] = A*src[7] + B*src[8];
       dst += stride;
       src += stride;
-      if (dummy == 32)
-        abort ();
+      asm volatile ("" ::: "memory");
    }
 }
 
@@ -43,7 +43,7 @@ int main (void)
        src[i] = i;
     }
 
-  foo (dst, src, N, 8, 0);
+  foo (dst, src, N, 8);
 
   for (i = 0; i < N/2; i++)
     {
index ddad85374b615d7fe3e1e3d411f139c0160e713c..2c4c36fea83b153161421285e1e61aa85935684d 100644 (file)
@@ -28,7 +28,10 @@ int main ()
   check_vect ();
 
   for (i = 0; i < N; i++)
-    a[i] = i;
+    {
+      a[i] = i;
+      asm volatile ("" ::: "memory");
+    }
 
   foo (a, 4);
 
index 53a427d8d7813090f35215a2fd59f6321a0489da..230b93f0ed5ffeda6f25f71f76c8583390a9c2bf 100644 (file)
@@ -14,7 +14,6 @@ struct extraction
 
 static int a[N] = {1,2,3,4,5,6,7,8,9};
 static int b[N] = {2,3,4,5,6,7,8,9,9};
-volatile int foo;
 
 __attribute__ ((noinline))
 int main1 (int x, int y) {
@@ -24,9 +23,8 @@ int main1 (int x, int y) {
 
   for (i = 0; i < N; i++)
     {
-       p->a[i] = a[i];
-       if (foo == 135)
-        abort (); /* to avoid vectorization  */
+      p->a[i] = a[i];
+      asm volatile ("" ::: "memory");
     }
 
   /* Not vectorizable: distance 1.  */
@@ -48,7 +46,6 @@ int main (void)
 { 
   check_vect ();
 
-  foo = 0;
   return main1 (0, N);
 }
 
index c81a93b568320536c826c047c55b4f3abb615e4b..a8450a41c9be9ff42cd50c9db318461ce194aa52 100644 (file)
@@ -14,7 +14,6 @@ struct extraction
 
 static int a[N] = {1,2,3,4,5,6,7,8,9};
 static int b[N] = {2,3,4,5,6,7,8,9,9};
-volatile int foo;
 
 __attribute__ ((noinline))
 int main1 (int x, int y) {
@@ -24,9 +23,8 @@ int main1 (int x, int y) {
 
   for (i = 0; i < N; i++)
     {
-       p->a[i] = a[i];
-       if (foo == 135)
-        abort (); /* to avoid vectorization  */
+      p->a[i] = a[i];
+      asm volatile ("" ::: "memory");
     }
 
   /* Not vectorizable: distance 1.  */
@@ -48,7 +46,6 @@ int main (void)
 { 
   check_vect ();
 
-  foo = 0;
   return main1 (0, N);
 }
 
index 22c541937f571eadcd6b5ac8e9cdae3c6258f8c7..77818c4f0dd046cee813fd422192474ae780c077 100644 (file)
@@ -9,7 +9,7 @@
 int *res[N];
 
 int
-main1 (int *a, int *b, int *c, int *d, int dummy)
+main1 (int *a, int *b, int *c, int *d)
 {
   int i;
 
@@ -19,8 +19,7 @@ main1 (int *a, int *b, int *c, int *d, int dummy)
       res[i+1] = b + 16;
       res[i+2] = c + 16;
       res[i+3] = d + 16;
-      if (dummy == 32)
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 }
 
index 5540387b0281a9f3bc6d001f4bf37b19ebc5ffc6..59781386254fb3cdd793099fa9b01a34cf198acb 100644 (file)
@@ -4,7 +4,6 @@
 #include "tree-vect.h"
 
 #define N 64
-volatile int y = 0;
 
 int
 main1 ()
@@ -18,8 +17,7 @@ main1 ()
   for (i = 0; i < N*8; i++)
     {
       in[i] = in2[i] = i;
-      if (y) /* Avoid vectorization.  */
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   /* Induction is SLPable.  */
index b1fe6e4272edc919566559a27fa670307292e1be..0acb37e0076c5830a9feb4cf229f43430df00daf 100644 (file)
@@ -97,8 +97,7 @@ int main (void)
       arr[i].f = i * 5;
       arr[i].g = i - 3;
       arr[i].h = 56;
-      if (arr[i].a == 178)
-         abort(); 
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index e2ecbbe9b7d990943be2a7f2eec4ff0bdb4d9a71..abd3a878f1ac36a7c8cde58743496f79b71f4476 100644 (file)
@@ -15,7 +15,6 @@ typedef struct {
 unsigned char ub[N*2];
 unsigned char uc[N];
 
-volatile int y = 0;
 unsigned char check_diff = 2;
 
 void
@@ -69,13 +68,11 @@ int main (void)
     ub[i] = (i%5 == 0)?i*3:i;
     uc[i] = i;
     check_diff += (unsigned char) (ub[i] - uc[i]);
-    if (y) /* Avoid vectorization.  */
-      abort ();
+    asm volatile ("" ::: "memory");
   }
   for (; i < 2*N; i++) {
     ub[i] = 0;
-    if (y) /* Avoid vectorization.  */
-      abort ();
+    asm volatile ("" ::: "memory");
   }
 
   for (i = 0; i < N; i++)
@@ -84,8 +81,7 @@ int main (void)
       arr[i].b = i * 2 + 10;
       arr[i].c = 17;
       arr[i].d = i+34;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
   check_vect ();
 
index 29448bcd456205426a53829a70b1fe84d01fe470..a45ce7de71fa6a8595b611dd47507df4e91e3b36 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
 unsigned char ub[N*2] = {1,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,1,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
 unsigned char uc[N] = {1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
 
-volatile int y = 0;
-
 void
 main1 (unsigned char x, unsigned char max_result, unsigned char min_result, s *arr)
 {
@@ -69,8 +67,7 @@ int main (void)
       arr[i].b = i * 2 + 10;
       arr[i].c = 17;
       arr[i].d = i+34;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
   check_vect ();
   
index ca6c44ed98dbe2b9a123d853488e7ed8c4b7adf7..4cf0e7a0ece17204221c483bcac8fe9bdab3c85c 100644 (file)
@@ -6,7 +6,6 @@
 #define N 96
 
 unsigned short in[N*8];
-volatile int y = 0;
 
 int
 main1 ()
@@ -17,8 +16,7 @@ main1 ()
   for (i = 0; i < N*8; i++)
     {
       in[i] = i&63;
-      if (y) /* Avoid vectorization.  */
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 6f794085fd56bd7fee984ec6db68e4343a309d97..9e9c8207f7bbb0235e5864b529869b6db3768087 100644 (file)
@@ -7,7 +7,6 @@
 
 unsigned short in[N*8];
 unsigned short in2[N*8];
-volatile int y = 0;
 
 int
 main1 ()
@@ -19,8 +18,7 @@ main1 ()
   for (i = 0; i < N*8; i++)
     {
       in[i] = in2[i] = i;
-      if (y) /* Avoid vectorization.  */
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   /* SLP with unrolling by 8.  */
index 1e4aaeafe83e17a502e8b0e035f3f6a8e5fd164c..76dd7456d89859108440eb0be2374215a16cfa57 100644 (file)
@@ -58,8 +58,7 @@ int main (void)
       arr[i].c = 17;
       arr[i].d = i+34;
       arr[i].e = i * 3 + 5;
-      if (arr[i].a == 178)
-         abort(); 
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index 9b1d275dbfe1dde882bd7676b93ac7020ed45a8c..b6a044dfd3ad814ea974b42a5698ab648c3b313c 100644 (file)
@@ -49,9 +49,7 @@ int main (void)
       arr1[i].a = i;
       arr1[i].b = i * 2;
       arr1[i].c = (void *)arr1;
-
-      if (arr1[i].a == 178)
-         abort(); 
+      asm volatile ("" ::: "memory");
     } 
 
 
index 940134e440b22d968ce5449562228b334ff300da..98ac3f1f2839c717d66c04ba4e0179d4497be33e 100644 (file)
@@ -4,7 +4,6 @@
 #include "tree-vect.h"
 
 #define N 128
-volatile int y = 0;
 
 int
 main1 ()
@@ -17,8 +16,7 @@ main1 ()
   for (i = 0; i < N*8; i++)
     {
       in[i] = i;
-      if (y) /* Avoid vectorization.  */
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 44ed1c835ac673b8315515b5af0cad42a663c3a9..7793862f06fa9ebd44f8b0299f1f55297862b41b 100644 (file)
@@ -13,7 +13,6 @@ struct s
 };
 
 char in[N*3];
-volatile int y = 0;
 
 __attribute__ ((noinline)) int
 main1 ()
@@ -24,8 +23,7 @@ main1 ()
   for (i = 0; i < N; i++)
     {
       in[i] = i&127;
-      if (y) /* Avoid vectorization.  */
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 60748926f632d0e196c472b222064f0d2b7e45a9..c4e27f4d0ee9f3231e3ff22510dfd7fa65cbc435 100644 (file)
@@ -68,10 +68,8 @@ int main (int argc, const char* argv[])
   for (i = 0; i < N; i++)
     {
       input[i] = i%256;
-      if (input[i] > 200)
-        abort();
       output[i] = 0;
-      __asm__ volatile ("");
+      asm volatile ("" ::: "memory");
     }
 
   foo (input, output);
index a2881f9a2c4d27f5f841029b029ab968e0eded50..307d823d73a283c68a7cc0288b912166178da313 100644 (file)
@@ -57,8 +57,7 @@ int main (int argc, const char* argv[])
       input2[i] = i%256;
       output[i] = 0;
       output2[i] = 0;
-      if (input[i] > 200)
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   foo (input, output, input2, output2);
@@ -70,7 +69,7 @@ int main (int argc, const char* argv[])
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  { target vect_perm } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_perm } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_perm && {! vect_load_lanes } } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target vect_load_lanes } } } */
 /* { dg-final { scan-tree-dump "note: Built SLP cancelled: can use load/store-lanes" "vect" { target { vect_perm && vect_load_lanes } } } } */
index b9b5a3b87ad031a5ab7421efce2c2b0fdf9145f3..bbf9cae86866d4549248e5c6d1782f1e55b2c2c4 100644 (file)
@@ -33,8 +33,7 @@ int main (int argc, const char* argv[])
     {
       input[i] = i;
       output[i] = 0;
-      if (input[i] > 256)
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N / 3; i++)
@@ -54,8 +53,8 @@ int main (int argc, const char* argv[])
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { {! vect_perm } || {! vect_sizes_16B_8B } } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  { target { { vect_perm } && { vect_sizes_16B_8B } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect"  { target { {! vect_perm } || {! vect_sizes_16B_8B } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { { vect_perm } && { vect_sizes_16B_8B } } } } } */
 /* { dg-final { scan-tree-dump-times "permutation requires at least three vectors" 1 "vect" { target vect_perm_short } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { {! vect_perm } || {! vect_sizes_32B_16B } } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { { vect_perm } && { vect_sizes_32B_16B } } } } } */
index 71ec0b80dd39f7b9c8ec6705b4166c2b2612a75c..f266ac8617c31fb523d5398a3d3b4a1d4b7b1472 100644 (file)
@@ -8,8 +8,6 @@ extern void abort (void);
 short a[N];
 short d[N];
 
-volatile int y = 0;
-
 int foo ()
 {
   int i;
@@ -19,10 +17,7 @@ int foo ()
     {
       b[i] = i*3;
       c[i] = i;
-
-      /* Avoid vectorization.  */
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   /* Strided access pattern.  */
index e0fd1b61e0235c763708504f87f78b64d1705320..6ebb4e12bd46c88611ef698fb8baf9b7f03472c9 100644 (file)
@@ -15,7 +15,6 @@ struct extraction
 static int a[N] = {1,2,3,4,5,6,7,8,9};
 static int b[N] = {17,24,7,0,2,3,4,31,82};
 static int c[N] = {9,17,24,7,0,2,3,4,31};
-volatile int foo;
 
 __attribute__ ((noinline))
 int main1 (int x, int y) {
@@ -25,10 +24,9 @@ int main1 (int x, int y) {
 
   for (i = 0; i < N; i++)
     {
-       p->a[i] = a[i];
-       p->b[i] = b[i];
-       if (foo == 135)
-        abort (); /* to avoid vectorization  */
+      p->a[i] = a[i];
+      p->b[i] = b[i];
+      asm volatile ("" ::: "memory");
     }
 
   /* Vectorizable: distance > VF.  */
@@ -50,7 +48,6 @@ int main (void)
 { 
   check_vect ();
 
-  foo = 0;
   return main1 (0, N);
 }
 
index c7478382915cd05ebeed39c7664f09db1fd42318..48c45d1d751af163751cfcfa965a8dbf979adeeb 100644 (file)
@@ -16,7 +16,6 @@ struct extraction
 static int a[N][N] = {{1,2,3},{4,5,6},{7,8,9}};
 static int b[N][N] = {{17,24,7},{0,2,3},{4,31,82}};
 static int c[N][N] = {{1,2,3},{4,5,5},{5,5,5}};
-volatile int foo;
 
 __attribute__ ((noinline))
 int main1 (int x) {
@@ -30,8 +29,7 @@ int main1 (int x) {
      {
        p->a[i][j] = a[i][j];
        p->b[i][j] = b[i][j];
-       if (foo == 135)
-        abort (); /* to avoid vectorization  */
+       asm volatile ("" ::: "memory");
      }
    }
 
@@ -60,7 +58,6 @@ int main (void)
 { 
   check_vect ();
 
-  foo = 0;
   return main1 (N);
 }
 
index 8b483e0c01d4642da34beb6bd430e51043a7267b..433565bfd4d3cea87abe23de29edbe8823054515 100644 (file)
@@ -16,8 +16,6 @@ static int a[N][N];
 static int b[N][N];
 static int c[N][N];
 
-volatile int y;
-
 __attribute__ ((noinline))
 int main1 (int x) {
   int i,j, off;
@@ -29,8 +27,7 @@ int main1 (int x) {
      {
        a[i][j] = (i*7 + j*17)%53;
        b[i][j] = (i*11+ j*13)%41;
-       if (y)
-        abort (); /* to avoid vectorization.  */
+       asm volatile ("" ::: "memory");
      }
    }
   for (i = 0; i < N; i++)
@@ -38,8 +35,7 @@ int main1 (int x) {
     for (j = 0; j < N; j++)
      {
        c[i][j] = a[i][j];
-       if (y)
-        abort (); /* to avoid vectorization.  */
+       asm volatile ("" ::: "memory");
      }
    }
   for (i = 1; i < N; i++)
@@ -53,8 +49,7 @@ int main1 (int x) {
        *(&c[0][0]+x+i+j) = *(&b[0][0] + off - N*N);
       else
        *(&c[0][0]+x+i+j) = *(&a[0][0] + off);
-       if (y)
-        abort (); /* to avoid vectorization.  */
+      asm volatile ("" ::: "memory");
     }
   }
 
@@ -64,10 +59,7 @@ int main1 (int x) {
      {
        p->a[i][j] = a[i][j];
        p->b[i][j] = b[i][j];
-       /* Because Y is volatile, the compiler cannot move this check out
-         of the loop.  */
-       if (y)
-        abort (); /* to avoid vectorization.  */
+       asm volatile ("" ::: "memory");
      }
    }
 
index e5483b33b946fb1056003b13fdf32c36678f7754..0024457f9e275cd7dda9ed053119eccdfa6c7701 100644 (file)
@@ -16,8 +16,6 @@ static int a[N][N] = {{1,2,3,11},{4,5,6,12},{7,8,9,13},{34,45,67,83}};
 static int b[N][N] = {{17,28,15,23},{0,2,3,24},{4,31,82,25},{29,31,432,256}};
 static int c[N][N] = {{1,2,3,11},{4,9,13,34},{45,67,83,13},{34,45,67,83}};
 
-volatile int y;
-
 __attribute__ ((noinline))
 int main1 (int x) {
   int i,j;
@@ -30,10 +28,7 @@ int main1 (int x) {
      {
        p->a[i][j] = a[i][j];
        p->b[i][j] = b[i][j];
-       /* Because Y is volatile, the compiler cannot move this check out
-         of the loop.  */
-       if (y)
-        abort (); /* to avoid vectorization  */
+       asm volatile ("" ::: "memory");
      }
    }
 
index 54aef699e7c650b33f41407589059b1ad6008bdd..a99a590d9ac1d72f728c87858aed921818eefc93 100644 (file)
@@ -8,8 +8,6 @@
 char cb[N];
 char cc[N];
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (void)
 {
@@ -20,9 +18,7 @@ main1 (void)
     cb[i] = i + 2;
     cc[i] = i + 1;
     check_diff += (cb[i] - cc[i]);
-    /* Avoid vectorization.  */
-    if (y)
-      abort ();
+    asm volatile ("" ::: "memory");
   }
 
   /* Cross-iteration cycle.  */
index bb1aebcf03f28fa2caca34b3f58014c29bd7f24b..22f8e01187272e2cfe445c66ca590f77923d4e95 100644 (file)
@@ -17,8 +17,6 @@ static  int c[N][N] = {{ 1, 2, 3, 4, 5},
                       {34,38,42,46,50},
                       {55,60,65,70,75}};
 
-volatile int foo;
-
 __attribute__ ((noinline))
 int main1 (int A[N][N], int n) 
 {
@@ -43,7 +41,6 @@ int main (void)
 
   check_vect ();
 
-  foo = 0;
   main1 (a, N);
 
   /* check results: */
index d9457c3273a34e28dbb6ef30862cdc4ad70d450b..5313eae598b4787e5294eefe87bf59f5a3581657 100644 (file)
@@ -5,8 +5,6 @@
 
 #define N 128
 
-volatile int y = 0;
-
 __attribute__ ((noinline))
 int main1 ()
 {
@@ -17,8 +15,7 @@ int main1 ()
   for (i = 0; i <N; i++)
     {
       b[i] = i*3;
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   /* Not vectorizable yet (reverse access and forward access).  */
index 04ba58d21e3c2bbaf976f7ffc49caf83e3ca7880..162cb54b58d17efc205778adc14e846be39afab1 100644 (file)
@@ -9,8 +9,6 @@
 char cb[N];
 char ca[N];
 
-volatile int y = 0;
-
 __attribute__ ((noinline))
 int main1 ()
 {
@@ -19,9 +17,7 @@ int main1 ()
   for (i = 0; i < N; i++)
     {
       cb[i] = i*3;
-      /* To avoid vectorization.  */
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 2991f76fca576be82bdcdf57d3f1737e417ec5eb..0aa6d507a82f086056113157bc4b7ce0d5a87691 100644 (file)
@@ -10,8 +10,6 @@ struct {
 } s;
 char cb[N];
 
-volatile int y = 0;
-
 __attribute__ ((noinline))
 int main1 ()
 {
@@ -20,9 +18,7 @@ int main1 ()
   for (i = 0; i < N; i++)
     {
       cb[i] = i*3;
-      /* To avoid vectorization.  */
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
   for (i = 0; i < N; i++)
     {
index 2818b7ec1fdfe9c466d2722ee20aeb37a146ac1b..c5de86b167a07ddf9043ae1ba77466ffd16765e6 100644 (file)
@@ -12,8 +12,6 @@ float e[N] = {0};
 float b[N];
 float c[N];
 
-volatile int y = 0;
-
 __attribute__ ((noinline))
 int main1 ()
 {
@@ -25,17 +23,13 @@ int main1 ()
       c[i] = i;
       results1[i] = 0;
       results2[i] = 0;
-      /* Avoid vectorization.  */
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
   for (i=0; i<N/2; i++)
     {
       results1[i] = b[i+N/2] * c[i+N/2] - b[i] * c[i];
       results2[i+N/2] = b[i] * c[i+N/2] + b[i+N/2] * c[i];
-      /* Avoid vectorization.  */
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N/2; i++)
index f5cc52e90afbdb608a105f9d57c319904790cccf..1c9d1fdaf9a2bb4eee4e9e766e531b72a3ecef2c 100644 (file)
@@ -11,8 +11,6 @@ int ib[N];
 
 #define ia (ic+N)
 
-volatile int y = 0;
-
 __attribute__ ((noinline))
 int main1 ()
 {
@@ -21,8 +19,7 @@ int main1 ()
   for (i = 0; i < N; i++)
     {
       ib[i] = i*3;
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 44f22e56b839fdcf217f8a29b98441783d7ef94e..ba1ae63bd57cd3347820d888045005a7d4d83f1a 100644 (file)
@@ -13,8 +13,6 @@ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
 float b[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0};
 float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5};
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (float *__restrict__  pa, float * __restrict__ pb, float * __restrict__ pc)
 {
@@ -25,14 +23,12 @@ main1 (float *__restrict__  pa, float * __restrict__ pb, float * __restrict__ pc
     {
       b[i] = i;
       c[i] = 0.5 + i;
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
   for (; i < N+4; i++)
     {
       b[i] = i;
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 8844e15f268d5e93f58e9d677ca325b41906ece7..26e27963795d312ed47699415919379819f51da0 100644 (file)
@@ -12,8 +12,6 @@
 
 int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17};
 
-volatile int y = 0;
-
 __attribute__ ((noinline))
 int main1 (int *ib)
 {
@@ -23,8 +21,7 @@ int main1 (int *ib)
   for (i = OFF; i < N+OFF; i++)
     {
       ib[i] = ib[i%OFF]*(i/OFF);
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
   for (i = 0; i < N; i++)
     {
index c2a30accac5a9b8235b8b1d604febec0ac8edc49..5825cfc446468b16eff60fa2115bb1de4872654f 100644 (file)
@@ -13,8 +13,6 @@
 int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17};
 int ic[N+OFF] = {0, 1, 3, 5, 7, 11, 13, 17};
 
-volatile int y = 0;
-
 __attribute__ ((noinline))
 int main1 (int *pib)
 {
@@ -24,8 +22,7 @@ int main1 (int *pib)
     {
       ib[i] = ib[i%8]*(i/8);
       ic[i] = ic[i%8]*(i/8);
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = OFF; i < N; i++)
index 7ab9ada6a035613b11e98730c6412e77bf398c6d..0baf4d2859b679f7b20d6b5fc939b71ec2533fb4 100644 (file)
@@ -13,8 +13,6 @@ float fc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
    the expression that represents the first location accessed - is
    more involved than just an ssa_name.  */
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (float * __restrict__ pa, float * __restrict__ pb, float *__restrict__ pc)
 {
@@ -24,14 +22,12 @@ main1 (float * __restrict__ pa, float * __restrict__ pb, float *__restrict__ pc)
     {
       fb[i] = i;
       fc[i] = 0.5+i;
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
   for (; i < N+4; i++)
     {
       fb[i] = i;
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 3210086033474b6e2b6b581e90b4b023fb618e9a..977a9d57ed4795718722c83344c2efd761e6783e 100644 (file)
@@ -8,8 +8,6 @@
 char x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
 char cb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
 
-volatile int y = 0;
-
 __attribute__ ((noinline))
 int main1 ()
 {
@@ -21,8 +19,7 @@ int main1 ()
   for (i = 0; i < N; i++)
     {
       cb[i] = i*3;
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   /* Check that datarefs analysis can determine that the access via pointer
index 17d11ba24ca04247cb51f4462427c9bde805a95a..61b749d4669386a890f5c2f5ba83d6e00d269b4f 100644 (file)
@@ -9,8 +9,6 @@
                         a[8]*b[8]   + a[9]*b[9]   + a[10]*b[10] + a[11]*b[11] + \
                         a[12]*b[12] + a[13]*b[13] + a[14]*b[14] + a[15]*b[15])
 
-volatile int y = 0;
-
 __attribute__ ((noinline))
 int main1 (int ia[][N])
 {
@@ -41,9 +39,7 @@ int main (void)
     for (j = 0; j < N; j++)
       {
         ia[i][j] = i + j + 1;
-       /* Avoid vectorization.  */
-       if (y)
-         abort ();
+       asm volatile ("" ::: "memory");
       }
 
   check_vect ();
index 4826cdb93e8f10033fe8cb24a28ccd472a9b4f56..6eb9533a8bb17acf7f9e29bfaa7f7a7aca2dc221 100644 (file)
@@ -78,8 +78,6 @@ char cb[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
 char ca[N];
 short sa[N];
 
-volatile int y = 0;
-
 /* All of the loops below are currently vectorizable, except
    initialization ones.  */
 
@@ -101,8 +99,7 @@ main1 ()
       fmul_results[i] = b[i] * c[i];
       fresults1[i] = 0;
       fresults2[i] = 0;
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   /* Test 1: copy chars.  */
@@ -142,15 +139,13 @@ main1 ()
     {
       fresults1[i] = a[i];
       fresults2[i] = e[i];
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
   for (i = 0; i < N/2; i++)
     {
       fresults1[i] = b[i+N/2] * c[i+N/2] - b[i] * c[i];
       fresults2[i+N/2] = b[i] * c[i+N/2] + b[i+N/2] * c[i];
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
   /* Test 4: access with offset.  */
   for (i = 0; i < N/2; i++)
index ce7c6b6d862846154f98d2c37ce4b0f2b02cb0c7..3c98b07e4259223fa8b0add09e7c7c19f3e38245 100644 (file)
@@ -4,8 +4,6 @@
 
 #define N 128
 
-volatile int y = 0;
-
 static inline void
 vfoo16 (unsigned short int* a)
 {
@@ -27,8 +25,7 @@ main (void)
     {
       arr[i] = i;
       expect[i] = __builtin_bswap16 (i);
-      if (y) /* Avoid vectorisation.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   vfoo16 (arr);
index 7f3a915ee97f5730131cbb095343ddda5a38b2d5..88d88b5f034153cb736391e4fc46a9b786ec28c5 100644 (file)
@@ -4,8 +4,6 @@
 
 #define N 128
 
-volatile int y = 0;
-
 static inline void
 vfoo32 (unsigned int* a)
 {
@@ -27,8 +25,7 @@ main (void)
     {
       arr[i] = i;
       expect[i] = __builtin_bswap32 (i);
-      if (y) /* Avoid vectorisation.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   vfoo32 (arr);
index b9e421d1de4efe419fa2f5a705e0eb08de01b047..fd15d713c5d63db335e61c892c670b06ee9da25f 100644 (file)
@@ -4,8 +4,6 @@
 
 #define N 128
 
-volatile int y = 0;
-
 static inline void
 vfoo64 (unsigned long long* a)
 {
@@ -27,8 +25,7 @@ main (void)
     {
       arr[i] = i;
       expect[i] = __builtin_bswap64 (i);
-      if (y) /* Avoid vectorisation.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   vfoo64 (arr);
index ce134b08a40d674aacb89310be7c9c12c2ce8d35..1d9dcdab5e9c09514a8427cd65c419e74962c9de 100644 (file)
@@ -9,8 +9,6 @@ int in[2*K][K] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
 int out[K];
 int check_result[K];
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) void
 foo ()
 {
@@ -24,9 +22,7 @@ foo ()
         for (i = 0; i < K; i++)
        {
           sum *= in[i+k][j];
-         /* Avoid vectorization.  */
-         if (y)
-           abort ();
+         asm volatile ("" ::: "memory");
        }
       check_result[k] = sum;
     }
index 660e0fdf5fb71df1af055f546fb20fb171b19eb2..e762f4890cc5792555c1f3de82d53068a52f3b47 100644 (file)
@@ -9,8 +9,6 @@ unsigned char ub[N];
 unsigned char uc[N];
 unsigned char diff;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) void
 main1 (unsigned char x, unsigned char max_result, unsigned char min_result)
 {
@@ -33,9 +31,7 @@ main1 (unsigned char x, unsigned char max_result, unsigned char min_result)
     if (uc[i] < min_result)
       min_result = uc[i];
 
-    /* Avoid vectorization.  */
-    if (y)
-      abort ();
+    asm volatile ("" ::: "memory");
   }
   for (i = 0; i < N; i++) {
     udiff += (unsigned char) (ub[i] - uc[i]);
index 8692f42ae3499f4a95382b85cdfb5f4fc85bde22..e246ae7f3c6c8a64fdc682a224d924f387840b0c 100644 (file)
@@ -4,7 +4,6 @@
 #include "tree-vect.h"
 
 #define N 256
-volatile int y = 0;
 
 __attribute__ ((noinline))
 void main1 (signed char x, signed char max_result, signed char min_result)
@@ -30,9 +29,7 @@ void main1 (signed char x, signed char max_result, signed char min_result)
       max_result = c[i];
     if (c[i] < min_result)
       min_result = c[i];
-    /* Avoid vectorization.  */
-    if (y)
-      abort ();
+    asm volatile ("" ::: "memory");
   }
 
   for (i = 0; i < N; i++) {
index 1863403092c498d023ef1e82a37d71b7af16155c..be03c7d011da3422d64f25d6a185c40ea8ab4d8a 100644 (file)
@@ -7,8 +7,6 @@
 unsigned char udata_ch[N];
 #define SUM N*(N-1)
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 foo ()
 {
@@ -18,9 +16,7 @@ foo ()
   for (i = 0; i < N; i++)
     {
       udata_ch[i] = i*2;
-      /* Avoid vectorization.  */
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   /* widenning sum: sum chars into int.  */
index 91dace250137ffe51ac8d16aaea59582d7d974b2..c30c85ce911b945703ea972955972088214ea2b7 100644 (file)
@@ -7,8 +7,6 @@
 unsigned char udata_ch[N];
 #define SUM N*(N-1)
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 foo ()
 {
@@ -18,9 +16,7 @@ foo ()
   for (i = 0; i < N; i++)
     {
       udata_ch[i] = i*2;
-      /* Avoid vectorization.  */
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   /* widenning sum: sum chars into short.  */
index ce3339782535a1a0ec3c1317868cf328499f3e19..570e56a8c9b7c77e509f256d0fd1a371c9e39909 100644 (file)
@@ -6,8 +6,6 @@
 #define N 128
 signed char data_ch[N];
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 foo ()
 {
@@ -19,9 +17,7 @@ foo ()
     {
       data_ch[i] = i*2;
       check_intsum += data_ch[i];
-      /* Avoid vectorization.  */
-      if (y)
-       abort ();
+      asm volatile ("" ::: "memory");
     }
 
   /* widenning sum: sum chars into int.  */
index e7a006a83209f815c501b2eb761986973ed70480..da47a824cb6046dcd9808bd7bd80161dbc0531b5 100644 (file)
@@ -15,8 +15,6 @@ typedef struct {
    unsigned int b;
 } ii;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 ()
 {
@@ -34,8 +32,7 @@ main1 ()
       arr[i].b = i * 2;
       iarr[i].a = i;
       iarr[i].b = i * 3;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index f1ce49f4725c8ae4c61973e0f17b70e0abf2326a..d53b7669a6b50d6bc27e646d08af98ca6fd093e3 100644 (file)
@@ -10,8 +10,6 @@ typedef struct {
    unsigned short b;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 ()
 {
@@ -24,8 +22,7 @@ main1 ()
     {
       arr[i].a = i;
       arr[i].b = i * 2;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 0be68b31198d70f428173cb4d7e2462d3fd1f5b2..37ff3abe97d60d9b968addaee7812cb0b05b6f44 100644 (file)
@@ -12,8 +12,6 @@ typedef struct {
    unsigned short d;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 ()
 {
@@ -28,8 +26,7 @@ main1 ()
       arr[i].b = i * 2;
       arr[i].c = 17;
       arr[i].d = i+34;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 5f71bed3f5c461f0f6e11aa240d1c84658759662..9237a9074deeb72c4d724771d5397d36593ced7c 100644 (file)
@@ -10,8 +10,6 @@ typedef struct {
    unsigned short b;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 ()
 {
@@ -28,8 +26,7 @@ main1 ()
       arr[i].a = i;
       arr[i].b = i * 2;
       iarr[i] = i * 3;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 0be7f8b9b783f170626b676545130b0daa1935a1..f64a1347350a465b9e7a0c123fe2b5bcbc2bf860 100644 (file)
@@ -10,8 +10,6 @@ typedef struct {
    unsigned char b;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 ()
 {
@@ -24,8 +22,7 @@ main1 ()
     {
       arr[i].a = i;
       arr[i].b = i * 2;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index dd144fefc5c5f6409ba374276e4facaaea0cbbb5..2add5b489915cffda25f3c59b41bd1c44edf16ce 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
    unsigned char h;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 ()
 {
@@ -47,8 +45,7 @@ main1 ()
       check_res[i].h = arr[i].f;
       check_res[i].g = arr[i].f - arr[i].a;
 
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 24c7cc3517a8313e570164f78e75cc89381c9c85..2b7a1a4bb77f4dce44958c50864a0a6ecac90c53 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
    unsigned char h;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 ()
 {
@@ -36,8 +34,7 @@ main1 ()
       arr[i].f = i * 2 + 2;
       arr[i].g = i - 3;
       arr[i].h = 56;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 0132aaf4bc6e5bf2ebd65037018703c94f0ac917..e487de8b4e7d8e092054a73b337a345ba00e4e02 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
    unsigned char h;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 ()
 {
@@ -52,8 +50,7 @@ main1 ()
       check_res[i].h = arr[i].d;
       check_res[i].g = u + t;
 
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 6eb04d88a51433a1fafef196688327f2e2840ee0..0f3347e8bb2200f48927b21938e7ebd348a73ada 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
    unsigned char h;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 ()
 {
@@ -37,8 +35,7 @@ main1 ()
       arr[i].f = i * 5;
       arr[i].g = i - 3;
       arr[i].h = 67;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   for (i = 0; i < N; i++)
index 36735963e3050448f81f7e7a1baa7b52b01b6efe..82727e595c166a52c8a1060339259ec7c39b594f 100644 (file)
@@ -15,8 +15,6 @@ typedef struct {
    unsigned int b;
 } ii;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr, ii *iarr)
 {
@@ -64,8 +62,7 @@ int main (void)
       arr[i].b = i * 2;
       iarr[i].a = i;
       iarr[i].b = i * 3;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   main1 (arr, iarr);
index 21477f3468635ee0568d5a24de257a5a21ab3633..0fac615011601d45c64e83be1a6ec1e1af407192 100644 (file)
@@ -15,8 +15,6 @@ typedef struct {
    unsigned int b;
 } ii;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr, ii *iarr)
 {
@@ -64,8 +62,7 @@ int main (void)
       arr[i].b = i * 2;
       iarr[i].a = i;
       iarr[i].b = i * 3;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   main1 (arr, iarr); 
index b8bb8784b746bc1a3ad856952d90d6e77b4a2db0..8c560480bc4eac50c381ed51cfbc6ccc696d0424 100644 (file)
@@ -12,8 +12,6 @@ typedef struct {
 
 s buffer1[N], buffer2[N];
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s * __restrict__  pIn, s* __restrict__ pOut)
 {
@@ -63,8 +61,7 @@ int main (void)
       buffer1[i].b = i + 8;
       buffer2[i].a = i * 3;
       buffer2[i].b = i * 2;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   check_vect ();
index 5bc236973720656d60c2b048a95fb6917295db9c..7d264f39c60d668927232a75fe3843dbee087aa5 100644 (file)
@@ -10,8 +10,6 @@ typedef struct {
    unsigned short b;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -48,8 +46,7 @@ int main (void)
     { 
       arr[i].a = i;
       arr[i].b = i * 2;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index 90e58166669b36be2690ff09df985df230951392..ee8ea0d666db4b7671cd3f788fc7f6056189f3da 100644 (file)
@@ -12,8 +12,6 @@ typedef struct {
    unsigned short d;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -61,8 +59,7 @@ int main (void)
       arr[i].b = i * 2;
       arr[i].c = 17;
       arr[i].d = i+34;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index 4ddded3785130bfb71ebc2aaab98a4937295a0dd..fe41dbd9cf452b9452084e988d48ede232f548bf 100644 (file)
@@ -12,8 +12,6 @@ typedef struct {
    int d;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -56,8 +54,7 @@ int main (void)
       arr[i].b = i * 2;
       arr[i].c = 17;
       arr[i].d = i+34;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index 4c2e30acb7f2fec16bfd8a94ea02aa87c3f98a2e..a88c0f08456cf278c4fa5a5b9b0a06900cb7c9be 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
    int h;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -70,8 +68,7 @@ int main (void)
       arr[i].f = i * 5;
       arr[i].g = i - 3;
       arr[i].h = 56;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index 8c541fe44a429e4beb533f06543bb332e297b812..ab841205e4f5b3c0aea29f60045934e84644a6a7 100644 (file)
@@ -10,8 +10,6 @@ typedef struct {
    unsigned char b;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -64,8 +62,7 @@ int main (void)
     { 
       arr[i].a = i;
       arr[i].b = i * 2;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index 55eddf5e9fd33930af8eabf345a740b34e01087f..0afd50db0b8de7758faf7f2bff14247a27a7ee38 100644 (file)
@@ -10,8 +10,6 @@ typedef struct {
    unsigned char b;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -47,8 +45,7 @@ int main (void)
     { 
       arr[i].a = i;
       arr[i].b = i * 2;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index 3dd5c0610de6e7bd97b4d8949294b1c34fa6db9b..ef532251465e5b1eb16e820fc30844a7995b82a9 100644 (file)
@@ -18,8 +18,6 @@ typedef struct {
 
 s check_res[N];
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -83,8 +81,7 @@ int main (void)
       check_res[i].h = arr[i].f;
       check_res[i].g = arr[i].f - arr[i].b;
 
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   main1 (arr);
index 23cea24540db4c7edfa28fff1de8bab45ad16ce4..04f18fbb591d9dc50d56b20bce99cb79903e5e27 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
    unsigned char h;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -71,8 +69,7 @@ int main (void)
       arr[i].f = i * 2 + 2;
       arr[i].g = i - 3;
       arr[i].h = 56;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index 450784b92cc8df8693c96bf5fb0e8d0222f6c477..28ba4170fbae845765f2c44fe4ed5c5617b71819 100644 (file)
@@ -18,8 +18,6 @@ typedef struct {
 
 s check_res[N];
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -105,8 +103,7 @@ int main (void)
       check_res[i].h = arr[i].c;
       check_res[i].g = arr[i].b + arr[i].c;
 
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
   main1 (arr);
 
index b36ab73679122e5777eac77d5eee28ed4f959641..69b970ef33b9dd8834b10baf7085b88a0c441a46 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
    unsigned char h;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr, int n)
 {
@@ -103,8 +101,7 @@ int main (void)
       arr[i].f = 16;
       arr[i].g = 3;
       arr[i].h = 56;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr, N-2);
index 1b36df53d73a0b93d369c0e22891f8b9adf431a1..901b1a925bdc75b5fc9bd9e298e2d90208fd496d 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
    unsigned char h;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -91,8 +89,7 @@ int main (void)
       arr[i].f = i * 5;
       arr[i].g = i - 3;
       arr[i].h = 56;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index ac93099372eb7c56cc74719784755a59c0f898ba..b703e636b49f8c7995c4c463b38b585f79acbdf2 100644 (file)
@@ -18,8 +18,6 @@ typedef struct {
 
 s check_res[N];
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -93,8 +91,7 @@ int main (void)
       check_res[i].h = arr[i].d;
       check_res[i].g = u + t;
 
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     }
 
   main1 (arr);
index dfd71b93b5fdf83ae05089f88cb20e8f72c63b6d..764f10d0adaca01e664bb45dd4da59a0c3f8a2af 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
    unsigned char h;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -76,8 +74,7 @@ int main (void)
       arr[i].f = i * 5;
       arr[i].g = i - 3;
       arr[i].h = 67;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);
index 6cc3bde1509ef17e99eae0569443600dba5e41be..35bab79ce826ac663eabb1a1036ed7afd6d33e8b 100644 (file)
@@ -16,8 +16,6 @@ typedef struct {
    unsigned char h;
 } s;
 
-volatile int y = 0;
-
 __attribute__ ((noinline)) int
 main1 (s *arr)
 {
@@ -78,8 +76,7 @@ int main (void)
       arr[i].f = i + 5;
       arr[i].g = i + 3;
       arr[i].h = 67;
-      if (y) /* Avoid vectorization.  */
-        abort ();
+      asm volatile ("" ::: "memory");
     } 
 
   main1 (arr);