[Pixman] [PATCH 2/2] test: Fix OpenMP clauses for the tolerance-test

Siarhei Siamashka siarhei.siamashka at gmail.com
Thu Mar 6 22:45:09 PST 2014


Compiling with the Intel Compiler reveals a problem:

tolerance-test.c(350): error: index variable "i" of for statement following an OpenMP for pragma must be private
  #       pragma omp parallel for default(none) shared(i) private (result)
  ^

In addition to this, the 'result' variable also should not be private
(otherwise its value does not survive after the end of the loop). It
needs to be either shared or use the reduction clause to describe how
the results from multiple threads are combined together. Reduction
seems to be more appropriate here.
---
 test/tolerance-test.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/test/tolerance-test.c b/test/tolerance-test.c
index 5625630..320bb7f 100644
--- a/test/tolerance-test.c
+++ b/test/tolerance-test.c
@@ -347,12 +347,12 @@ main (int argc, const char *argv[])
     else
     {
 #ifdef USE_OPENMP
-#       pragma omp parallel for default(none) shared(i) private (result)
+#       pragma omp parallel for default(none) reduction(|:result)
 #endif
         for (i = 0; i < N_TESTS; ++i)
 	{
 	    if (!do_check (i))
-		result = 1;
+		result |= 1;
 	}
     }
     
-- 
1.8.3.2



More information about the Pixman mailing list