1/* { dg-do run } */ 2/* { dg-options "-O2" } */ 3/* { dg-require-effective-target tls_runtime } */ 4 5#include <omp.h> 6#include <stdlib.h> 7 8struct { int t; char buf[64]; } thr = { 32, "" }; 9#pragma omp threadprivate (thr) 10 11int 12main (void) 13{ 14 int l = 0; 15 16 omp_set_dynamic (0); 17 omp_set_num_threads (6); 18 19#pragma omp parallel copyin (thr) reduction (||:l) 20 { 21 l = thr.t != 32; 22 thr.t = omp_get_thread_num () + 11; 23 } 24 25 if (l || thr.t != 11) 26 abort (); 27 28#pragma omp parallel reduction (||:l) 29 l = thr.t != omp_get_thread_num () + 11; 30 31 if (l) 32 abort (); 33 return 0; 34} 35